d3d11: enable FirstIndexOffsetTests
Bug: dawn:1803
Bug: dawn:1705
Change-Id: I54ee08aa79da6c37c4c9b70db1f815d2d52e7756
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/131940
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Peng Huang <penghuang@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
diff --git a/src/dawn/native/d3d11/BindGroupTrackerD3D11.cpp b/src/dawn/native/d3d11/BindGroupTrackerD3D11.cpp
index 571ad41..b7628cd 100644
--- a/src/dawn/native/d3d11/BindGroupTrackerD3D11.cpp
+++ b/src/dawn/native/d3d11/BindGroupTrackerD3D11.cpp
@@ -169,11 +169,17 @@
}
case wgpu::BufferBindingType::Storage:
case kInternalStorageBufferBinding: {
- ASSERT(IsSubset(bindingInfo.visibility, wgpu::ShaderStage::Compute));
+ ASSERT(IsSubset(bindingInfo.visibility,
+ wgpu::ShaderStage::Fragment | wgpu::ShaderStage::Compute));
ComPtr<ID3D11UnorderedAccessView> d3d11UAV;
DAWN_TRY_ASSIGN(
d3d11UAV, ToBackend(binding.buffer)
->CreateD3D11UnorderedAccessView1(offset, binding.size));
+ if (bindingInfo.visibility & wgpu::ShaderStage::Fragment) {
+ deviceContext1->OMSetRenderTargetsAndUnorderedAccessViews(
+ D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL, nullptr, nullptr,
+ bindingSlot, 1, d3d11UAV.GetAddressOf(), nullptr);
+ }
if (bindingInfo.visibility & wgpu::ShaderStage::Compute) {
deviceContext1->CSSetUnorderedAccessViews(
bindingSlot, 1, d3d11UAV.GetAddressOf(), nullptr);
@@ -279,9 +285,15 @@
}
case wgpu::BufferBindingType::Storage:
case kInternalStorageBufferBinding: {
- ASSERT(IsSubset(bindingInfo.visibility, wgpu::ShaderStage::Compute));
+ ASSERT(IsSubset(bindingInfo.visibility,
+ wgpu::ShaderStage::Fragment | wgpu::ShaderStage::Compute));
+ ID3D11UnorderedAccessView* nullUAV = nullptr;
+ if (bindingInfo.visibility & wgpu::ShaderStage::Fragment) {
+ deviceContext1->OMSetRenderTargetsAndUnorderedAccessViews(
+ D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL, nullptr, nullptr,
+ bindingSlot, 1, &nullUAV, nullptr);
+ }
if (bindingInfo.visibility & wgpu::ShaderStage::Compute) {
- ID3D11UnorderedAccessView* nullUAV = nullptr;
deviceContext1->CSSetUnorderedAccessViews(bindingSlot, 1, &nullUAV,
nullptr);
}
diff --git a/src/dawn/tests/end2end/FirstIndexOffsetTests.cpp b/src/dawn/tests/end2end/FirstIndexOffsetTests.cpp
index ccb0529..29b0dcf 100644
--- a/src/dawn/tests/end2end/FirstIndexOffsetTests.cpp
+++ b/src/dawn/tests/end2end/FirstIndexOffsetTests.cpp
@@ -322,6 +322,7 @@
}
DAWN_INSTANTIATE_TEST(FirstIndexOffsetTests,
+ D3D11Backend(),
D3D12Backend(),
MetalBackend(),
OpenGLBackend(),