[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);