From 7a446220a18f53199c9c36f0e149ef7e8b1ad22a Mon Sep 17 00:00:00 2001 From: Corentin Wallez Date: Fri, 10 Sep 2021 14:56:09 +0000 Subject: [PATCH] Reenable / delete DISABLED tests. - We use Tint unconditionally so binding reflection is now correct. - WGSL disallows textureSampleCompare in compute shaders and is not likely to change. - We now support reading back stencil in tests. Bug: dawn:439, dawn:667, dawn:216, dawn:704 Change-Id: I7ba0026bb906ce985abb495581b56977da7be2da Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/63680 Reviewed-by: Brandon Jones Commit-Queue: Corentin Wallez --- .../end2end/DepthStencilSamplingTests.cpp | 22 ------------------- .../SubresourceRenderAttachmentTests.cpp | 22 ++++++++++++++----- .../RenderPipelineValidationTests.cpp | 3 +-- 3 files changed, 17 insertions(+), 30 deletions(-) diff --git a/src/tests/end2end/DepthStencilSamplingTests.cpp b/src/tests/end2end/DepthStencilSamplingTests.cpp index a0bd6d54e8..e65d2659c8 100644 --- a/src/tests/end2end/DepthStencilSamplingTests.cpp +++ b/src/tests/end2end/DepthStencilSamplingTests.cpp @@ -757,28 +757,6 @@ TEST_P(DepthStencilSamplingTest, CompareFunctionsRender) { } } -// Test that sampling in a render pipeline with all of the compare functions works. -// WGSL disallows |textureSampleCompare| in compute stages. -TEST_P(DepthStencilSamplingTest, DISABLED_CompareFunctionsCompute) { - // Initialization via renderPass loadOp doesn't work on Mac Intel. - DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel()); - - // Depends on Tint's shader reflection - DAWN_TEST_UNSUPPORTED_IF(!HasToggleEnabled("use_tint_generator")); - - wgpu::ComputePipeline pipeline = CreateComparisonComputePipeline(); - - for (wgpu::TextureFormat format : kDepthFormats) { - // Test a "normal" ref value between 0 and 1; as well as negative and > 1 refs. - for (float compareRef : kCompareRefs) { - // Test 0, below the ref, equal to, above the ref, and 1. - for (wgpu::CompareFunction f : kCompareFunctions) { - DoDepthCompareRefTest(pipeline, format, compareRef, f, kNormalizedTextureValues); - } - } - } -} - DAWN_INSTANTIATE_TEST(DepthStencilSamplingTest, D3D12Backend(), MetalBackend(), diff --git a/src/tests/end2end/SubresourceRenderAttachmentTests.cpp b/src/tests/end2end/SubresourceRenderAttachmentTests.cpp index 360f4e2e88..47ef741323 100644 --- a/src/tests/end2end/SubresourceRenderAttachmentTests.cpp +++ b/src/tests/end2end/SubresourceRenderAttachmentTests.cpp @@ -89,10 +89,13 @@ class SubresourceRenderAttachmentTest : public DawnTest { {renderTargetSize, renderTargetSize}, baseMipLevel); break; } - case Type::Stencil: - // TODO(crbug.com/dawn/439): sample / copy of the stencil aspect. - default: - UNREACHABLE(); + case Type::Stencil: { + std::vector expected(renderTargetSize * renderTargetSize, expectedStencil); + EXPECT_TEXTURE_EQ(expected.data(), renderTarget, {0, 0, baseArrayLayer}, + {renderTargetSize, renderTargetSize}, baseMipLevel, + wgpu::TextureAspect::StencilOnly); + break; + } } } @@ -149,8 +152,15 @@ TEST_P(SubresourceRenderAttachmentTest, DepthTexture) { } // Test rendering into a subresource of a stencil texture -// TODO(crbug.com/dawn/439): sample / copy of the stencil aspect. -TEST_P(SubresourceRenderAttachmentTest, DISABLED_StencilTexture) { +TEST_P(SubresourceRenderAttachmentTest, StencilTexture) { + // TODO(crbug.com/dawn/667): Work around the fact that some platforms are unable to read + // stencil. + DAWN_TEST_UNSUPPORTED_IF(HasToggleEnabled("disable_depth_stencil_read")); + + // TODO(crbug.com/dawn/704): Readback after clear via stencil copy does not work + // on some Intel drivers. + DAWN_SUPPRESS_TEST_IF(IsMetal() && IsIntel()); + DoTest(Type::Stencil); } diff --git a/src/tests/unittests/validation/RenderPipelineValidationTests.cpp b/src/tests/unittests/validation/RenderPipelineValidationTests.cpp index 5efc8410d3..b52d50e729 100644 --- a/src/tests/unittests/validation/RenderPipelineValidationTests.cpp +++ b/src/tests/unittests/validation/RenderPipelineValidationTests.cpp @@ -990,8 +990,7 @@ TEST_F(RenderPipelineValidationTest, UnwrittenFragmentOutputsMask0) { } // Test that fragment output validation is for the correct entryPoint -// TODO(dawn:216): Re-enable when we correctly reflect which bindings are used for an entryPoint. -TEST_F(RenderPipelineValidationTest, DISABLED_BindingsFromCorrectEntryPoint) { +TEST_F(RenderPipelineValidationTest, BindingsFromCorrectEntryPoint) { wgpu::ShaderModule module = utils::CreateShaderModule(device, R"( [[block]] struct Uniforms { data : vec4;