[tint] Remove relaxed uniform layout extension

This was an internal extension used by the old MSL backend to avoid
some WGSL validation rules.

Change-Id: I9926e3851e754540d6161e3bd5ffbace74a0a632
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/236079
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/cmd/bench/extension_bench.cc b/src/tint/cmd/bench/extension_bench.cc
index e6d1256..ed317c7 100644
--- a/src/tint/cmd/bench/extension_bench.cc
+++ b/src/tint/cmd/bench/extension_bench.cc
@@ -94,41 +94,34 @@
         "chromium_internal_input_aNNtachents",
         "chromium_internalinpt_attavvhments",
         "chromium_internal_inut_attacQQments",
-        "chromirm_intenal_rfflaxed_unifrm_layout",
-        "chromium_internal_jelaxed_uniform_layout",
-        "chromium_interna_relNNxed_uwwiform_lay82t",
-        "chromium_internal_relaxed_uniform_layout",
-        "chromium_internal_relaxed_uniform_layut",
-        "chromium_internal_relaxed_rrniform_layout",
-        "chromium_internal_relaxedGuniform_layout",
-        "clip_distanceFF",
-        "cEipdtances",
-        "cli_rristances",
+        "clip_drstffcs",
+        "clip_distancjs",
+        "clip_istNNwnce8",
         "clip_distances",
-        "lip_distanes",
-        "DXp_diJJtances",
-        "cl8pdistane",
-        "dul_okrc_blen11ing",
-        "dua_source_blending",
-        "duJl_source_blendig",
+        "cli_distances",
+        "clip_disrrances",
+        "clip_diGtances",
+        "dual_source_blendFFng",
+        "dEl_surce_bending",
+        "drra_source_blending",
         "dual_source_blending",
-        "dual_source_clending",
-        "dual_sOurce_blending",
-        "dualKKs__urce_blttvnding",
-        "xx8",
-        "__F",
-        "f1q",
+        "dual_suce_blending",
+        "dul_DoXrcJJ_blending",
+        "dul_source_lening",
+        "k",
+        "16",
+        "J1",
         "f16",
-        "331O",
-        "ftt6QQ",
-        "666",
-        "zzxbO6rops",
-        "subgyyoups",
-        "HHugroZs",
+        "c16",
+        "fO6",
+        "_KKttvv",
+        "xubgro5p8",
+        "suFq__ups",
+        "sqqgroups",
         "subgroups",
-        "sWW44roupq",
-        "sOObgoups",
-        "sbgroYps",
+        "subgr6u33O",
+        "s96grQttupoo",
+        "sugro66ps",
     };
     for (auto _ : state) {
         for (auto* str : kStrings) {
diff --git a/src/tint/cmd/fuzz/wgsl/dictionary.txt b/src/tint/cmd/fuzz/wgsl/dictionary.txt
index 52dc5c8..85d3eef 100644
--- a/src/tint/cmd/fuzz/wgsl/dictionary.txt
+++ b/src/tint/cmd/fuzz/wgsl/dictionary.txt
@@ -166,7 +166,6 @@
 "chromium_experimental_subgroup_matrix"
 "chromium_internal_graphite"
 "chromium_internal_input_attachments"
-"chromium_internal_relaxed_uniform_layout"
 "chromium_testing_experimental"
 "chromium_testing_shipped"
 "chromium_testing_shipped_with_killswitch"
diff --git a/src/tint/lang/hlsl/writer/ast_printer/ast_printer_test.cc b/src/tint/lang/hlsl/writer/ast_printer/ast_printer_test.cc
index 5cdda5b..faa95bf 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/ast_printer_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/ast_printer_test.cc
@@ -45,14 +45,14 @@
 }
 
 TEST_F(HlslASTPrinterTest, UnsupportedExtension) {
-    Enable(Source{{12, 34}}, wgsl::Extension::kChromiumInternalRelaxedUniformLayout);
+    Enable(Source{{12, 34}}, wgsl::Extension::kChromiumExperimentalFramebufferFetch);
 
     ASTPrinter& gen = Build();
 
     ASSERT_FALSE(gen.Generate());
     EXPECT_EQ(
         gen.Diagnostics().Str(),
-        R"(12:34 error: HLSL backend does not support extension 'chromium_internal_relaxed_uniform_layout')");
+        R"(12:34 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch')");
 }
 
 TEST_F(HlslASTPrinterTest, RequiresDirective) {
diff --git a/src/tint/lang/wgsl/extension.cc b/src/tint/lang/wgsl/extension.cc
index 5be4fff..06c9696 100644
--- a/src/tint/lang/wgsl/extension.cc
+++ b/src/tint/lang/wgsl/extension.cc
@@ -63,9 +63,6 @@
     if (str == "chromium_internal_input_attachments") {
         return Extension::kChromiumInternalInputAttachments;
     }
-    if (str == "chromium_internal_relaxed_uniform_layout") {
-        return Extension::kChromiumInternalRelaxedUniformLayout;
-    }
     if (str == "clip_distances") {
         return Extension::kClipDistances;
     }
@@ -99,8 +96,6 @@
             return "chromium_internal_graphite";
         case Extension::kChromiumInternalInputAttachments:
             return "chromium_internal_input_attachments";
-        case Extension::kChromiumInternalRelaxedUniformLayout:
-            return "chromium_internal_relaxed_uniform_layout";
         case Extension::kClipDistances:
             return "clip_distances";
         case Extension::kDualSourceBlending:
diff --git a/src/tint/lang/wgsl/extension.h b/src/tint/lang/wgsl/extension.h
index 34c0d26..46f6d3c 100644
--- a/src/tint/lang/wgsl/extension.h
+++ b/src/tint/lang/wgsl/extension.h
@@ -53,7 +53,6 @@
     kChromiumExperimentalSubgroupMatrix,
     kChromiumInternalGraphite,
     kChromiumInternalInputAttachments,
-    kChromiumInternalRelaxedUniformLayout,
     kClipDistances,
     kDualSourceBlending,
     kF16,
@@ -85,7 +84,6 @@
     "chromium_experimental_subgroup_matrix",
     "chromium_internal_graphite",
     "chromium_internal_input_attachments",
-    "chromium_internal_relaxed_uniform_layout",
     "clip_distances",
     "dual_source_blending",
     "f16",
@@ -101,7 +99,6 @@
     Extension::kChromiumExperimentalSubgroupMatrix,
     Extension::kChromiumInternalGraphite,
     Extension::kChromiumInternalInputAttachments,
-    Extension::kChromiumInternalRelaxedUniformLayout,
     Extension::kClipDistances,
     Extension::kDualSourceBlending,
     Extension::kF16,
diff --git a/src/tint/lang/wgsl/extension_test.cc b/src/tint/lang/wgsl/extension_test.cc
index 3a8ff30..9434d4f 100644
--- a/src/tint/lang/wgsl/extension_test.cc
+++ b/src/tint/lang/wgsl/extension_test.cc
@@ -64,7 +64,6 @@
     {"chromium_experimental_subgroup_matrix", Extension::kChromiumExperimentalSubgroupMatrix},
     {"chromium_internal_graphite", Extension::kChromiumInternalGraphite},
     {"chromium_internal_input_attachments", Extension::kChromiumInternalInputAttachments},
-    {"chromium_internal_relaxed_uniform_layout", Extension::kChromiumInternalRelaxedUniformLayout},
     {"clip_distances", Extension::kClipDistances},
     {"dual_source_blending", Extension::kDualSourceBlending},
     {"f16", Extension::kF16},
@@ -93,21 +92,18 @@
     {"c44romium_internal_input_attachments", Extension::kUndefined},
     {"chromium_internal_inputSSaVVtachments", Extension::kUndefined},
     {"chrom22Rm_internal_input_atRchments", Extension::kUndefined},
-    {"chromium_int9rnal_relaxed_Fnifor_layout", Extension::kUndefined},
-    {"chrmium_internal_relaxed_uniform_layout", Extension::kUndefined},
-    {"VRhHomium_internal_relaxd_uniform_OOayout", Extension::kUndefined},
-    {"clip_distyces", Extension::kUndefined},
-    {"clipGlr77inntances", Extension::kUndefined},
-    {"clip_d04stances", Extension::kUndefined},
-    {"dua_ource_bledoong", Extension::kUndefined},
-    {"dualsorce_blendzzng", Extension::kUndefined},
-    {"ua_sopiirce_bl11nding", Extension::kUndefined},
-    {"f1XX", Extension::kUndefined},
-    {"55199II", Extension::kUndefined},
-    {"frSSHHa", Extension::kUndefined},
-    {"kkbHups", Extension::kUndefined},
-    {"jggoupRR", Extension::kUndefined},
-    {"sugoupb", Extension::kUndefined},
+    {"clFp_disanc9s", Extension::kUndefined},
+    {"cli_distances", Extension::kUndefined},
+    {"clRR_diVtOOHces", Extension::kUndefined},
+    {"dual_souyce_bleding", Extension::kUndefined},
+    {"dualrrllnource_blendiG77", Extension::kUndefined},
+    {"dual00source_ble4ding", Extension::kUndefined},
+    {"5", Extension::kUndefined},
+    {"u16", Extension::kUndefined},
+    {"f", Extension::kUndefined},
+    {"skkkgroups", Extension::kUndefined},
+    {"siibgrop", Extension::kUndefined},
+    {"subgroupXX", Extension::kUndefined},
 };
 
 using ExtensionParseTest = testing::TestWithParam<Case>;
diff --git a/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc b/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc
index 8d6709a..5c72205 100644
--- a/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc
+++ b/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc
@@ -203,7 +203,7 @@
     // Error when unknown extension found
     EXPECT_TRUE(p->has_error());
     EXPECT_EQ(p->error(), R"(1:8: expected extension
-Possible values: 'chromium_disable_uniformity_analysis', 'chromium_experimental_framebuffer_fetch', 'chromium_experimental_pixel_local', 'chromium_experimental_push_constant', 'chromium_experimental_subgroup_matrix', 'chromium_internal_graphite', 'chromium_internal_input_attachments', 'chromium_internal_relaxed_uniform_layout', 'clip_distances', 'dual_source_blending', 'f16', 'subgroups')");
+Possible values: 'chromium_disable_uniformity_analysis', 'chromium_experimental_framebuffer_fetch', 'chromium_experimental_pixel_local', 'chromium_experimental_push_constant', 'chromium_experimental_subgroup_matrix', 'chromium_internal_graphite', 'chromium_internal_input_attachments', 'clip_distances', 'dual_source_blending', 'f16', 'subgroups')");
     auto program = p->program();
     auto& ast = program.AST();
     EXPECT_EQ(ast.Enables().Length(), 0u);
diff --git a/src/tint/lang/wgsl/reader/reader.cc b/src/tint/lang/wgsl/reader/reader.cc
index 0d2e72b..df8c363 100644
--- a/src/tint/lang/wgsl/reader/reader.cc
+++ b/src/tint/lang/wgsl/reader/reader.cc
@@ -72,7 +72,6 @@
     for (auto ext : enable->extensions) {
         switch (ext->name) {
             case tint::wgsl::Extension::kChromiumExperimentalFramebufferFetch:
-            case tint::wgsl::Extension::kChromiumInternalRelaxedUniformLayout:
                 return true;
             default:
                 break;
diff --git a/src/tint/lang/wgsl/resolver/address_space_layout_validation_test.cc b/src/tint/lang/wgsl/resolver/address_space_layout_validation_test.cc
index 6ef150c..ccd1116 100644
--- a/src/tint/lang/wgsl/resolver/address_space_layout_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/address_space_layout_validation_test.cc
@@ -597,139 +597,6 @@
     ASSERT_TRUE(r()->Resolve()) << r()->error();
 }
 
-TEST_F(ResolverAddressSpaceLayoutValidationTest, RelaxedUniformLayout_StructMemberOffset_Struct) {
-    // enable chromium_internal_relaxed_uniform_layout;
-    //
-    // struct Inner {
-    //   scalar : i32;
-    // };
-    //
-    // struct Outer {
-    //   scalar : f32;
-    //   inner : Inner;
-    // };
-    //
-    // @group(0) @binding(0)
-    // var<uniform> a : Outer;
-
-    Enable(wgsl::Extension::kChromiumInternalRelaxedUniformLayout);
-
-    Structure("Inner", Vector{
-                           Member("scalar", ty.i32()),
-                       });
-
-    Structure("Outer", Vector{
-                           Member("scalar", ty.f32()),
-                           Member("inner", ty("Inner")),
-                       });
-
-    GlobalVar("a", ty("Outer"), core::AddressSpace::kUniform, Group(0_a), Binding(0_a));
-
-    EXPECT_TRUE(r()->Resolve()) << r()->error();
-}
-
-TEST_F(ResolverAddressSpaceLayoutValidationTest, RelaxedUniformLayout_StructMemberOffset_Array) {
-    // enable chromium_internal_relaxed_uniform_layout;
-    //
-    // type Inner = @stride(16) array<f32, 10u>;
-    //
-    // struct Outer {
-    //   scalar : f32;
-    //   inner : Inner;
-    // };
-    //
-    // @group(0) @binding(0)
-    // var<uniform> a : Outer;
-
-    Enable(wgsl::Extension::kChromiumInternalRelaxedUniformLayout);
-
-    Alias("Inner", ty.array<f32, 10>(Vector{Stride(16)}));
-
-    Structure("Outer", Vector{
-                           Member("scalar", ty.f32()),
-                           Member("inner", ty("Inner")),
-                       });
-
-    GlobalVar("a", ty("Outer"), core::AddressSpace::kUniform, Group(0_a), Binding(0_a));
-
-    EXPECT_TRUE(r()->Resolve()) << r()->error();
-}
-
-TEST_F(ResolverAddressSpaceLayoutValidationTest, RelaxedUniformLayout_MemberOffsetNotMutipleOf16) {
-    // enable chromium_internal_relaxed_uniform_layout;
-    //
-    // struct Inner {
-    //   @align(4) @size(5) scalar : i32;
-    // };
-    //
-    // struct Outer {
-    //   inner : Inner;
-    //   scalar : i32;
-    // };
-    //
-    // @group(0) @binding(0)
-    // var<uniform> a : Outer;
-
-    Enable(wgsl::Extension::kChromiumInternalRelaxedUniformLayout);
-
-    Structure("Inner", Vector{
-                           Member("scalar", ty.i32(), Vector{MemberAlign(4_i), MemberSize(5_a)}),
-                       });
-
-    Structure("Outer", Vector{
-                           Member("inner", ty("Inner")),
-                           Member("scalar", ty.i32()),
-                       });
-
-    GlobalVar("a", ty("Outer"), core::AddressSpace::kUniform, Group(0_a), Binding(0_a));
-
-    EXPECT_TRUE(r()->Resolve()) << r()->error();
-}
-
-TEST_F(ResolverAddressSpaceLayoutValidationTest, RelaxedUniformLayout_ArrayStride_Scalar) {
-    // enable chromium_internal_relaxed_uniform_layout;
-    //
-    // struct Outer {
-    //   arr : array<f32, 10u>;
-    // };
-    //
-    // @group(0) @binding(0)
-    // var<uniform> a : Outer;
-
-    Enable(wgsl::Extension::kChromiumInternalRelaxedUniformLayout);
-
-    Structure("Outer", Vector{
-                           Member("arr", ty.array<f32, 10>()),
-                       });
-
-    GlobalVar("a", ty("Outer"), core::AddressSpace::kUniform, Group(0_a), Binding(0_a));
-
-    EXPECT_TRUE(r()->Resolve()) << r()->error();
-}
-
-TEST_F(ResolverAddressSpaceLayoutValidationTest, RelaxedUniformLayout_ArrayStride_Vech) {
-    // enable f16;
-    // enable chromium_internal_relaxed_uniform_layout;
-    //
-    // struct Outer {
-    //   arr : array<vec3<f16>, 10u>;
-    // };
-    //
-    // @group(0) @binding(0)
-    // var<uniform> a : Outer;
-
-    Enable(wgsl::Extension::kF16);
-    Enable(wgsl::Extension::kChromiumInternalRelaxedUniformLayout);
-
-    Structure("Outer", Vector{
-                           Member("arr", ty.array<vec3<f16>, 10>()),
-                       });
-
-    GlobalVar("a", ty("Outer"), core::AddressSpace::kUniform, Group(0_a), Binding(0_a));
-
-    EXPECT_TRUE(r()->Resolve()) << r()->error();
-}
-
 TEST_F(ResolverAddressSpaceLayoutValidationTest, AlignAttributeTooSmall_Storage) {
     // struct S {
     //   @align(4) vector : vec4u;
diff --git a/src/tint/lang/wgsl/resolver/validator.cc b/src/tint/lang/wgsl/resolver/validator.cc
index 693ed59..48934d3 100644
--- a/src/tint/lang/wgsl/resolver/validator.cc
+++ b/src/tint/lang/wgsl/resolver/validator.cc
@@ -568,9 +568,7 @@
             }
 
             // Validate that member is at a valid byte offset
-            if (m->Offset() % required_align != 0 &&
-                !enabled_extensions_.Contains(
-                    wgsl::Extension::kChromiumInternalRelaxedUniformLayout)) {
+            if (m->Offset() % required_align != 0) {
                 AddError(m->Declaration()->source)
                     << "the offset of a struct member of type "
                     << style::Type(m->Type()->UnwrapRef()->FriendlyName()) << " in address space "
@@ -597,9 +595,7 @@
             auto* const prev_member = (i == 0) ? nullptr : str->Members()[i - 1];
             if (prev_member && is_uniform_struct(prev_member->Type())) {
                 const uint32_t prev_to_curr_offset = m->Offset() - prev_member->Offset();
-                if (prev_to_curr_offset % 16 != 0 &&
-                    !enabled_extensions_.Contains(
-                        wgsl::Extension::kChromiumInternalRelaxedUniformLayout)) {
+                if (prev_to_curr_offset % 16 != 0) {
                     AddError(m->Declaration()->source)
                         << style::Enum("uniform")
                         << " storage requires that the number of bytes between the start of the "
@@ -625,9 +621,7 @@
             // alignment requirement of the address space.
             auto* align_attr =
                 ast::GetAttribute<ast::StructMemberAlignAttribute>(m->Declaration()->attributes);
-            if ((align_attr != nullptr) &&
-                !enabled_extensions_.Contains(
-                    wgsl::Extension::kChromiumInternalRelaxedUniformLayout)) {
+            if (align_attr != nullptr) {
                 auto align = sem_.GetVal(align_attr->expr)->ConstantValue()->ValueAs<uint32_t>();
                 if (align % required_align != 0) {
                     AddError(align_attr->expr->source)
@@ -650,8 +644,7 @@
             return false;
         }
 
-        if (address_space == core::AddressSpace::kUniform &&
-            !enabled_extensions_.Contains(wgsl::Extension::kChromiumInternalRelaxedUniformLayout)) {
+        if (address_space == core::AddressSpace::kUniform) {
             // We already validated that this array member is itself aligned to 16 bytes above, so
             // we only need to validate that stride is a multiple of 16 bytes.
             if (arr->Stride() % 16 != 0) {
diff --git a/src/tint/lang/wgsl/wgsl.def b/src/tint/lang/wgsl/wgsl.def
index d40f1fd..2bd1e29 100644
--- a/src/tint/lang/wgsl/wgsl.def
+++ b/src/tint/lang/wgsl/wgsl.def
@@ -89,8 +89,6 @@
   // A Chromium-specific extension that enables features for input
   // attachments
   chromium_internal_input_attachments
-  // A Chromium-specific extension that relaxes memory layout requirements for uniform storage.
-  chromium_internal_relaxed_uniform_layout
   // A Chromium-specific extension that enables pixel local storage.
   // Cannot be used with chromium_experimental_framebuffer_fetch
   chromium_experimental_pixel_local