[glsl] Enable DISABLED unit tests Bug: 42251044 Change-Id: Ibaafae163b4f816aef90875c412fe7f8b2f35b83 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/211514 Commit-Queue: dan sinclair <dsinclair@chromium.org> Reviewed-by: dan sinclair <dsinclair@google.com> Auto-Submit: James Price <jrprice@google.com> Commit-Queue: James Price <jrprice@google.com> Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/glsl/writer/access_test.cc b/src/tint/lang/glsl/writer/access_test.cc index 70e583f..af3dd49 100644 --- a/src/tint/lang/glsl/writer/access_test.cc +++ b/src/tint/lang/glsl/writer/access_test.cc
@@ -150,8 +150,7 @@ )"); } -// TODO(dsinclair): Needs ir::Convert -TEST_F(GlslWriterTest, DISABLED_AccessStoreVectorElementDynamicIndex) { +TEST_F(GlslWriterTest, AccessStoreVectorElementDynamicIndex) { auto* idx = b.FunctionParam("idx", ty.i32()); auto* func = b.Function("foo", ty.void_()); func->SetParams({idx}); @@ -163,7 +162,13 @@ ASSERT_TRUE(Generate()) << err_ << output_.glsl; EXPECT_EQ(output_.glsl, GlslHeader() + R"( - +void foo(int idx) { + ivec4 vec = ivec4(0); + vec[min(uint(idx), 3u)] = 42; +} +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { +} )"); } @@ -613,8 +618,7 @@ )"); } -// TODO(dsinclair): Requires let pointer translation -TEST_F(GlslWriterTest, DISABLED_AccessChainFromLetAccessChain) { +TEST_F(GlslWriterTest, AccessChainFromLetAccessChain) { auto* Inner = ty.Struct(mod.symbols.New("Inner"), { {mod.symbols.New("c"), ty.f32()}, }); @@ -639,13 +643,30 @@ }); ASSERT_TRUE(Generate()) << err_ << output_.glsl; - EXPECT_EQ(output_.glsl, GlslHeader() + R"( + EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float; +precision highp int; + +struct Inner { + float c; +}; + +struct SB { + int a; + Inner b; +}; + +layout(binding = 0, std430) +buffer v_block_1_ssbo { + SB inner; +} v_1; +void main() { + float a = v_1.inner.b.c; +} )"); } -// TODO(dsinclair): Support arrayLength -TEST_F(GlslWriterTest, DISABLED_AccessComplexDynamicAccessChain) { +TEST_F(GlslWriterTest, AccessComplexDynamicAccessChain) { auto* S1 = ty.Struct(mod.symbols.New("S1"), { {mod.symbols.New("a"), ty.i32()}, {mod.symbols.New("b"), ty.vec3<f32>()}, @@ -679,13 +700,55 @@ }); ASSERT_TRUE(Generate()) << err_ << output_.glsl; - EXPECT_EQ(output_.glsl, GlslHeader() + R"( + EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float; +precision highp int; + +struct S1 { + int a; + uint tint_pad_0; + uint tint_pad_1; + uint tint_pad_2; + vec3 b; + int c; +}; + +struct S2 { + int a_1; + uint tint_pad_0; + uint tint_pad_1; + uint tint_pad_2; + S1 b_1[3]; + int c_1; + uint tint_pad_3; + uint tint_pad_4; + uint tint_pad_5; +}; + +layout(binding = 0, std430) +buffer SB_1_ssbo { + int a_2; + uint tint_pad_0; + uint tint_pad_1; + uint tint_pad_2; + S2 b_2[]; +} sb; +void main() { + int i = 4; + int v = i; + uint j = 1u; + uint v_1 = j; + int k = 2; + int v_2 = k; + uint v_3 = (uint(sb.b_2.length()) - 1u); + uint v_4 = min(uint(v), v_3); + uint v_5 = min(v_1, 2u); + float x = sb.b_2[v_4].b_1[v_5].b[min(uint(v_2), 2u)]; +} )"); } -// TODO(dsinclair): Support arrayLength -TEST_F(GlslWriterTest, DISABLED_AccessComplexDynamicAccessChainSplit) { +TEST_F(GlslWriterTest, AccessComplexDynamicAccessChainSplit) { auto* S1 = ty.Struct(mod.symbols.New("S1"), { {mod.symbols.New("a"), ty.i32()}, {mod.symbols.New("b"), ty.vec3<f32>()}, @@ -716,8 +779,46 @@ }); ASSERT_TRUE(Generate()) << err_ << output_.glsl; - EXPECT_EQ(output_.glsl, GlslHeader() + R"( + EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float; +precision highp int; + +struct S1 { + int a; + uint tint_pad_0; + uint tint_pad_1; + uint tint_pad_2; + vec3 b; + int c; +}; + +struct S2 { + int a_1; + uint tint_pad_0; + uint tint_pad_1; + uint tint_pad_2; + S1 b_1[3]; + int c_1; + uint tint_pad_3; + uint tint_pad_4; + uint tint_pad_5; +}; + +layout(binding = 0, std430) +buffer SB_1_ssbo { + int a_2; + uint tint_pad_0; + uint tint_pad_1; + uint tint_pad_2; + S2 b_2[]; +} sb; +void main() { + uint j = 1u; + uint v = j; + uint v_1 = min(4u, (uint(sb.b_2.length()) - 1u)); + uint v_2 = min(v, 2u); + float x = sb.b_2[v_1].b_1[v_2].b.z; +} )"); } @@ -775,8 +876,7 @@ )"); } -// TODO(dsinclair): Handle let pointers -TEST_F(GlslWriterTest, DISABLED_AccessUniformChainFromLetAccessChain) { +TEST_F(GlslWriterTest, AccessUniformChainFromLetAccessChain) { auto* Inner = ty.Struct(mod.symbols.New("Inner"), { {mod.symbols.New("c"), ty.f32()}, }); @@ -803,8 +903,29 @@ }); ASSERT_TRUE(Generate()) << err_ << output_.glsl; - EXPECT_EQ(output_.glsl, GlslHeader() + R"( + EXPECT_EQ(output_.glsl, GlslHeader() + R"(precision highp float; +precision highp int; + +struct Inner { + float c; +}; + +struct SB { + int a; + uint tint_pad_0; + uint tint_pad_1; + uint tint_pad_2; + Inner b; +}; + +layout(binding = 0, std140) +uniform v_block_1_ubo { + SB inner; +} v_1; +void main() { + float a = v_1.inner.b.c; +} )"); }
diff --git a/src/tint/lang/glsl/writer/type_test.cc b/src/tint/lang/glsl/writer/type_test.cc index 7c074cc..a4e6b75 100644 --- a/src/tint/lang/glsl/writer/type_test.cc +++ b/src/tint/lang/glsl/writer/type_test.cc
@@ -480,38 +480,6 @@ )"); } -// TODO(dsinclair): Add sampler support -TEST_F(GlslWriterTest, DISABLED_EmitType_Sampler) { - auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kCompute); - auto* param = b.FunctionParam("a", ty.sampler()); - func->SetParams({param}); - func->SetWorkgroupSize(1, 1, 1); - b.Append(func->Block(), [&] { b.Return(func); }); - - ASSERT_TRUE(Generate()) << err_ << output_.glsl; - EXPECT_EQ(output_.glsl, R"( -layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; -void main() { -} -)"); -} - -// TODO(dsinclair): Add sampler comparison support -TEST_F(GlslWriterTest, DISABLED_EmitType_SamplerComparison) { - auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kCompute); - auto* param = b.FunctionParam("a", ty.comparison_sampler()); - func->SetParams({param}); - func->SetWorkgroupSize(1, 1, 1); - b.Append(func->Block(), [&] { b.Return(func); }); - - ASSERT_TRUE(Generate()) << err_ << output_.glsl; - EXPECT_EQ(output_.glsl, R"( -layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; -void main() { -} -)"); -} - struct GlslDepthTextureData { core::type::TextureDimension dim; std::string result;
diff --git a/src/tint/lang/glsl/writer/unary_test.cc b/src/tint/lang/glsl/writer/unary_test.cc index e70110b..3c8a546 100644 --- a/src/tint/lang/glsl/writer/unary_test.cc +++ b/src/tint/lang/glsl/writer/unary_test.cc
@@ -35,12 +35,6 @@ namespace tint::glsl::writer { namespace { -// TODO(dsinclair): Test address of is gone -TEST_F(GlslWriterTest, DISABLED_AddressOf) {} - -// TODO(dsinclair): Test indirection is gone -TEST_F(GlslWriterTest, Indirection) {} - TEST_F(GlslWriterTest, Complement) { auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kCompute); func->SetWorkgroupSize(1, 1, 1);