d3d11: enable some compute shader tests
Known issues: d3d11 buffer cannot be uniform and storage at same time. DispatchWorkgroupsIndirect doesn't work correctly. Bug: dawn:1705 Bug: dawn:1791 Bug: dawn:1792 Change-Id: I14df33c441198fcde9063ad85251da30c4b12c6a Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/131060 Commit-Queue: Peng Huang <penghuang@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Austin Eng <enga@chromium.org>
This commit is contained in:
parent
3aea647bc2
commit
80cf5e51cc
|
@ -66,6 +66,8 @@ MaybeError CommandRecordingContext::Open(Device* device) {
|
|||
ID3D11Buffer* bufferPtr = mUniformBuffer->GetD3D11Buffer();
|
||||
mD3D11DeviceContext4->VSSetConstantBuffers(PipelineLayout::kReservedConstantBufferSlot, 1,
|
||||
&bufferPtr);
|
||||
mD3D11DeviceContext4->CSSetConstantBuffers(PipelineLayout::kReservedConstantBufferSlot, 1,
|
||||
&bufferPtr);
|
||||
}
|
||||
|
||||
mIsOpen = true;
|
||||
|
@ -112,6 +114,8 @@ void CommandRecordingContext::Release() {
|
|||
ID3D11Buffer* nullBuffer = nullptr;
|
||||
mD3D11DeviceContext4->VSSetConstantBuffers(PipelineLayout::kReservedConstantBufferSlot, 1,
|
||||
&nullBuffer);
|
||||
mD3D11DeviceContext4->CSSetConstantBuffers(PipelineLayout::kReservedConstantBufferSlot, 1,
|
||||
&nullBuffer);
|
||||
mD3D11DeviceContext4 = nullptr;
|
||||
mD3D11Device = nullptr;
|
||||
}
|
||||
|
|
|
@ -107,6 +107,9 @@ class ComputeDispatchTests : public DawnTest {
|
|||
void IndirectTest(std::vector<uint32_t> indirectBufferData,
|
||||
uint64_t indirectOffset,
|
||||
bool useNumWorkgroups = true) {
|
||||
// TODO(dawn:1791): fix indirect dispatch on D3D11
|
||||
DAWN_SUPPRESS_TEST_IF(IsD3D11());
|
||||
|
||||
// Set up dst storage buffer to contain dispatch x, y, z
|
||||
wgpu::Buffer dst = utils::CreateBufferFromData<uint32_t>(
|
||||
device,
|
||||
|
@ -311,6 +314,7 @@ TEST_P(ComputeDispatchTests, ExceedsMaxWorkgroupsWithOffsetNoop) {
|
|||
}
|
||||
|
||||
DAWN_INSTANTIATE_TEST(ComputeDispatchTests,
|
||||
D3D11Backend(),
|
||||
D3D12Backend(),
|
||||
MetalBackend(),
|
||||
OpenGLBackend(),
|
||||
|
|
|
@ -500,6 +500,7 @@ fn main() {
|
|||
}
|
||||
|
||||
DAWN_INSTANTIATE_TEST(ComputeFlowControlTests,
|
||||
D3D11Backend(),
|
||||
D3D12Backend(),
|
||||
MetalBackend(),
|
||||
OpenGLBackend(),
|
||||
|
|
|
@ -528,6 +528,12 @@ TEST_P(ComputeLayoutMemoryBufferTests, StructMember) {
|
|||
// TODO(crbug.com/dawn/1606): find out why these tests fail on Windows for OpenGL.
|
||||
DAWN_TEST_UNSUPPORTED_IF(IsOpenGLES() && IsWindows());
|
||||
|
||||
const bool isUniform = GetParam().mAddressSpace == AddressSpace::Uniform;
|
||||
|
||||
// D3D11 doesn't support storage buffer with uniform address space
|
||||
// TODO(dawn:1792): figure how to support it on D3D11
|
||||
DAWN_SUPPRESS_TEST_IF(IsD3D11() && isUniform);
|
||||
|
||||
// Sentinel value markers codes used to check that the start and end of
|
||||
// structures are correctly aligned. Each of these codes are distinct and
|
||||
// are not likely to be confused with data.
|
||||
|
@ -549,8 +555,6 @@ TEST_P(ComputeLayoutMemoryBufferTests, StructMember) {
|
|||
return;
|
||||
}
|
||||
|
||||
const bool isUniform = GetParam().mAddressSpace == AddressSpace::Uniform;
|
||||
|
||||
std::string shader = std::string(field.IsRequireF16Feature() ? "enable f16;" : "") +
|
||||
R"(
|
||||
struct Data {
|
||||
|
@ -699,6 +703,12 @@ TEST_P(ComputeLayoutMemoryBufferTests, NonStructMember) {
|
|||
// TODO(crbug.com/dawn/1606): find out why these tests fail on Windows for OpenGL.
|
||||
DAWN_TEST_UNSUPPORTED_IF(IsOpenGLES() && IsWindows());
|
||||
|
||||
const bool isUniform = GetParam().mAddressSpace == AddressSpace::Uniform;
|
||||
|
||||
// D3D11 doesn't support storage buffer with uniform address space
|
||||
// TODO(dawn:1792): figure how to support it on D3D11
|
||||
DAWN_SUPPRESS_TEST_IF(IsD3D11() && isUniform);
|
||||
|
||||
auto params = GetParam();
|
||||
|
||||
Field& field = params.mField;
|
||||
|
@ -712,8 +722,6 @@ TEST_P(ComputeLayoutMemoryBufferTests, NonStructMember) {
|
|||
return;
|
||||
}
|
||||
|
||||
const bool isUniform = GetParam().mAddressSpace == AddressSpace::Uniform;
|
||||
|
||||
std::string shader = std::string(field.IsRequireF16Feature() ? "enable f16;" : "") +
|
||||
R"(
|
||||
@group(0) @binding(0) var<{input_qualifiers}> input : {field_type};
|
||||
|
@ -778,6 +786,7 @@ fn main() {
|
|||
auto GenerateParams() {
|
||||
auto params = MakeParamGenerator<ComputeLayoutMemoryBufferTestParams>(
|
||||
{
|
||||
D3D11Backend(),
|
||||
D3D12Backend(),
|
||||
D3D12Backend({"use_dxc"}),
|
||||
MetalBackend(),
|
||||
|
|
|
@ -197,6 +197,7 @@ TEST_P(ComputeSharedMemoryTests, AssortedTypes) {
|
|||
}
|
||||
|
||||
DAWN_INSTANTIATE_TEST(ComputeSharedMemoryTests,
|
||||
D3D11Backend(),
|
||||
D3D12Backend(),
|
||||
MetalBackend(),
|
||||
OpenGLBackend(),
|
||||
|
|
Loading…
Reference in New Issue