GLSL: implement host-visible memory padding.

Since GLSL ES does not support the offset= attribute, struct members
with explicit @align or @size attributes require adding explicit
padding members.  This in turn requires rewriting any constructor
calls to initialize the new padding to zero, handled in the same
transform.

Note that this is currently overly-verbose, and will add padding where
GLSL doesn't technically need it (e.g., padding a vec3 out to 16 bytes).

Bug: tint:1415
Change-Id: Ia9ba513066a0e84f4c43247fcbbe02f5fadd6630
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/101720
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/test/tint/array/assign_to_function_var.wgsl.expected.glsl b/test/tint/array/assign_to_function_var.wgsl.expected.glsl
index ecaba84..f3c51f8 100644
--- a/test/tint/array/assign_to_function_var.wgsl.expected.glsl
+++ b/test/tint/array/assign_to_function_var.wgsl.expected.glsl
@@ -10,7 +10,7 @@
 
 ivec4 src_private[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
 shared ivec4 src_workgroup[4];
-layout(binding = 0) uniform src_uniform_block_ubo {
+layout(binding = 0, std140) uniform src_uniform_block_ubo {
   S inner;
 } src_uniform;
 
diff --git a/test/tint/array/assign_to_private_var.wgsl.expected.glsl b/test/tint/array/assign_to_private_var.wgsl.expected.glsl
index 57630d5..bc6ac31 100644
--- a/test/tint/array/assign_to_private_var.wgsl.expected.glsl
+++ b/test/tint/array/assign_to_private_var.wgsl.expected.glsl
@@ -10,7 +10,7 @@
 
 ivec4 src_private[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
 shared ivec4 src_workgroup[4];
-layout(binding = 0) uniform src_uniform_block_ubo {
+layout(binding = 0, std140) uniform src_uniform_block_ubo {
   S inner;
 } src_uniform;
 
diff --git a/test/tint/array/assign_to_storage_var.wgsl.expected.glsl b/test/tint/array/assign_to_storage_var.wgsl.expected.glsl
index fd9a95f..2535ca8 100644
--- a/test/tint/array/assign_to_storage_var.wgsl.expected.glsl
+++ b/test/tint/array/assign_to_storage_var.wgsl.expected.glsl
@@ -10,7 +10,7 @@
 
 ivec4 src_private[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
 shared ivec4 src_workgroup[4];
-layout(binding = 0) uniform src_uniform_block_ubo {
+layout(binding = 0, std140) uniform src_uniform_block_ubo {
   S inner;
 } src_uniform;
 
diff --git a/test/tint/array/assign_to_workgroup_var.wgsl.expected.glsl b/test/tint/array/assign_to_workgroup_var.wgsl.expected.glsl
index c023ca5..ba09877 100644
--- a/test/tint/array/assign_to_workgroup_var.wgsl.expected.glsl
+++ b/test/tint/array/assign_to_workgroup_var.wgsl.expected.glsl
@@ -10,7 +10,7 @@
 
 ivec4 src_private[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
 shared ivec4 src_workgroup[4];
-layout(binding = 0) uniform src_uniform_block_ubo {
+layout(binding = 0, std140) uniform src_uniform_block_ubo {
   S inner;
 } src_uniform;
 
diff --git a/test/tint/array/strides.spvasm.expected.glsl b/test/tint/array/strides.spvasm.expected.glsl
index 90c988a..290bcb4 100644
--- a/test/tint/array/strides.spvasm.expected.glsl
+++ b/test/tint/array/strides.spvasm.expected.glsl
@@ -2,10 +2,31 @@
 
 struct strided_arr {
   float el;
+  uint pad;
 };
 
 struct strided_arr_1 {
   strided_arr el[3][2];
+  uint pad_1;
+  uint pad_2;
+  uint pad_3;
+  uint pad_4;
+  uint pad_5;
+  uint pad_6;
+  uint pad_7;
+  uint pad_8;
+  uint pad_9;
+  uint pad_10;
+  uint pad_11;
+  uint pad_12;
+  uint pad_13;
+  uint pad_14;
+  uint pad_15;
+  uint pad_16;
+  uint pad_17;
+  uint pad_18;
+  uint pad_19;
+  uint pad_20;
 };
 
 layout(binding = 0, std430) buffer S_ssbo {
@@ -17,7 +38,7 @@
   strided_arr x_24[3][2] = s.a[3].el;
   strided_arr x_28[2] = s.a[3].el[2];
   float x_32 = s.a[3].el[2][1].el;
-  strided_arr_1 tint_symbol[4] = strided_arr_1[4](strided_arr_1(strided_arr[3][2](strided_arr[2](strided_arr(0.0f), strided_arr(0.0f)), strided_arr[2](strided_arr(0.0f), strided_arr(0.0f)), strided_arr[2](strided_arr(0.0f), strided_arr(0.0f)))), strided_arr_1(strided_arr[3][2](strided_arr[2](strided_arr(0.0f), strided_arr(0.0f)), strided_arr[2](strided_arr(0.0f), strided_arr(0.0f)), strided_arr[2](strided_arr(0.0f), strided_arr(0.0f)))), strided_arr_1(strided_arr[3][2](strided_arr[2](strided_arr(0.0f), strided_arr(0.0f)), strided_arr[2](strided_arr(0.0f), strided_arr(0.0f)), strided_arr[2](strided_arr(0.0f), strided_arr(0.0f)))), strided_arr_1(strided_arr[3][2](strided_arr[2](strided_arr(0.0f), strided_arr(0.0f)), strided_arr[2](strided_arr(0.0f), strided_arr(0.0f)), strided_arr[2](strided_arr(0.0f), strided_arr(0.0f)))));
+  strided_arr_1 tint_symbol[4] = strided_arr_1[4](strided_arr_1(strided_arr[3][2](strided_arr[2](strided_arr(0.0f, 0u), strided_arr(0.0f, 0u)), strided_arr[2](strided_arr(0.0f, 0u), strided_arr(0.0f, 0u)), strided_arr[2](strided_arr(0.0f, 0u), strided_arr(0.0f, 0u))), 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u), strided_arr_1(strided_arr[3][2](strided_arr[2](strided_arr(0.0f, 0u), strided_arr(0.0f, 0u)), strided_arr[2](strided_arr(0.0f, 0u), strided_arr(0.0f, 0u)), strided_arr[2](strided_arr(0.0f, 0u), strided_arr(0.0f, 0u))), 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u), strided_arr_1(strided_arr[3][2](strided_arr[2](strided_arr(0.0f, 0u), strided_arr(0.0f, 0u)), strided_arr[2](strided_arr(0.0f, 0u), strided_arr(0.0f, 0u)), strided_arr[2](strided_arr(0.0f, 0u), strided_arr(0.0f, 0u))), 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u), strided_arr_1(strided_arr[3][2](strided_arr[2](strided_arr(0.0f, 0u), strided_arr(0.0f, 0u)), strided_arr[2](strided_arr(0.0f, 0u), strided_arr(0.0f, 0u)), strided_arr[2](strided_arr(0.0f, 0u), strided_arr(0.0f, 0u))), 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u));
   s.a = tint_symbol;
   s.a[3].el[2][1].el = 5.0f;
   return;
diff --git a/test/tint/benchmark/particles.wgsl.expected.glsl b/test/tint/benchmark/particles.wgsl.expected.glsl
index 4f82c9e..b0a08c1 100644
--- a/test/tint/benchmark/particles.wgsl.expected.glsl
+++ b/test/tint/benchmark/particles.wgsl.expected.glsl
@@ -7,10 +7,12 @@
 layout(location = 2) in vec2 quad_pos_1;
 layout(location = 0) out vec4 color_2;
 layout(location = 1) out vec2 quad_pos_2;
-layout(binding = 0) uniform RenderParams_ubo {
+layout(binding = 0, std140) uniform RenderParams_ubo {
   mat4 modelViewProjectionMatrix;
   vec3 right;
+  uint pad;
   vec3 up;
+  uint pad_1;
 } render_params;
 
 struct VertexInput {
@@ -146,10 +148,14 @@
   float lifetime;
   vec4 color;
   vec3 velocity;
+  uint pad_3;
 };
 
-layout(binding = 0) uniform SimulationParams_ubo {
+layout(binding = 0, std140) uniform SimulationParams_ubo {
   float deltaTime;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
   vec4 seed;
 } sim_params;
 
@@ -204,8 +210,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:60: 'textureQueryLevels' : no matching overloaded function found
-ERROR: 0:60: '' : compilation terminated
+ERROR: 0:64: 'textureQueryLevels' : no matching overloaded function found
+ERROR: 0:64: '' : compilation terminated
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -242,8 +248,11 @@
   vec3 velocity;
 };
 
-layout(binding = 3) uniform UBO_ubo {
+layout(binding = 3, std140) uniform UBO_ubo {
   uint width;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } ubo;
 
 layout(binding = 4, std430) buffer Buffer_ssbo {
@@ -297,8 +306,11 @@
   vec3 velocity;
 };
 
-layout(binding = 3) uniform UBO_ubo {
+layout(binding = 3, std140) uniform UBO_ubo {
   uint width;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } ubo;
 
 layout(binding = 4, std430) buffer Buffer_ssbo {
diff --git a/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.glsl b/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.glsl
index 6ef2768..704afa3 100644
--- a/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.glsl
+++ b/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.glsl
@@ -9,6 +9,8 @@
   float f;
   mat2x3 g;
   mat3x2 h;
+  uint pad;
+  uint pad_1;
   ivec4 i[4];
 };
 
diff --git a/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.glsl b/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.glsl
index 71c6708..f26e111 100644
--- a/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.glsl
+++ b/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.glsl
@@ -9,6 +9,8 @@
   float f;
   mat2x3 g;
   mat3x2 h;
+  uint pad;
+  uint pad_1;
   ivec4 i[4];
 };
 
diff --git a/test/tint/buffer/storage/static_index/read.wgsl.expected.glsl b/test/tint/buffer/storage/static_index/read.wgsl.expected.glsl
index 447a5fc..dac902a 100644
--- a/test/tint/buffer/storage/static_index/read.wgsl.expected.glsl
+++ b/test/tint/buffer/storage/static_index/read.wgsl.expected.glsl
@@ -15,6 +15,7 @@
   mat3x2 h;
   Inner i;
   Inner j[4];
+  uint pad;
 } s;
 
 void tint_symbol() {
diff --git a/test/tint/buffer/storage/static_index/write.wgsl.expected.glsl b/test/tint/buffer/storage/static_index/write.wgsl.expected.glsl
index f2f9b98..610d6da 100644
--- a/test/tint/buffer/storage/static_index/write.wgsl.expected.glsl
+++ b/test/tint/buffer/storage/static_index/write.wgsl.expected.glsl
@@ -15,6 +15,7 @@
   mat3x2 h;
   Inner i;
   Inner j[4];
+  uint pad;
 } s;
 
 void tint_symbol() {
diff --git a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.glsl b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.glsl
index ebf8edb..067b82d 100644
--- a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.glsl
@@ -27,6 +27,8 @@
   vec2 j_0;
   vec2 j_1;
   vec2 j_2;
+  uint pad;
+  uint pad_1;
   ivec4 k[4];
 };
 
@@ -34,7 +36,7 @@
   Inner arr[8];
 };
 
-layout(binding = 0) uniform S_std140_ubo {
+layout(binding = 0, std140) uniform S_std140_ubo {
   Inner_std140 arr[8];
 } s;
 
diff --git a/test/tint/buffer/uniform/static_index/read.wgsl.expected.glsl b/test/tint/buffer/uniform/static_index/read.wgsl.expected.glsl
index 82cc9d0..1b07ab0 100644
--- a/test/tint/buffer/uniform/static_index/read.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/static_index/read.wgsl.expected.glsl
@@ -2,6 +2,9 @@
 
 struct Inner {
   int x;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 };
 
 struct S {
@@ -19,7 +22,7 @@
   Inner l[4];
 };
 
-layout(binding = 0) uniform S_std140_ubo {
+layout(binding = 0, std140) uniform S_std140_ubo {
   ivec3 a;
   int b;
   uvec3 c;
@@ -32,6 +35,8 @@
   vec2 j_0;
   vec2 j_1;
   vec2 j_2;
+  uint pad_3;
+  uint pad_4;
   Inner k;
   Inner l[4];
 } s;
diff --git a/test/tint/buffer/uniform/std140/mat2x2/dynamic_index_via_ptr.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat2x2/dynamic_index_via_ptr.wgsl.expected.glsl
index e53a2e0..70d9461 100644
--- a/test/tint/buffer/uniform/std140/mat2x2/dynamic_index_via_ptr.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat2x2/dynamic_index_via_ptr.wgsl.expected.glsl
@@ -17,7 +17,7 @@
   Inner_std140 a[4];
 };
 
-layout(binding = 0) uniform a_block_ubo {
+layout(binding = 0, std140) uniform a_block_ubo {
   Outer_std140 inner[4];
 } a;
 
diff --git a/test/tint/buffer/uniform/std140/mat2x2/static_index_via_ptr.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat2x2/static_index_via_ptr.wgsl.expected.glsl
index 7f11118..6dccf2a 100644
--- a/test/tint/buffer/uniform/std140/mat2x2/static_index_via_ptr.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat2x2/static_index_via_ptr.wgsl.expected.glsl
@@ -17,7 +17,7 @@
   Inner_std140 a[4];
 };
 
-layout(binding = 0) uniform a_block_ubo {
+layout(binding = 0, std140) uniform a_block_ubo {
   Outer_std140 inner[4];
 } a;
 
diff --git a/test/tint/buffer/uniform/std140/mat2x2/to_builtin.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat2x2/to_builtin.wgsl.expected.glsl
index 1850c73..d6c96b0 100644
--- a/test/tint/buffer/uniform/std140/mat2x2/to_builtin.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat2x2/to_builtin.wgsl.expected.glsl
@@ -8,12 +8,14 @@
 
 struct S_std140 {
   int before;
+  uint pad;
   vec2 m_0;
   vec2 m_1;
   int after;
+  uint pad_1;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S_std140 inner[4];
 } u;
 
diff --git a/test/tint/buffer/uniform/std140/mat2x2/to_fn.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat2x2/to_fn.wgsl.expected.glsl
index 576ddd0..1d5f133 100644
--- a/test/tint/buffer/uniform/std140/mat2x2/to_fn.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat2x2/to_fn.wgsl.expected.glsl
@@ -8,12 +8,14 @@
 
 struct S_std140 {
   int before;
+  uint pad;
   vec2 m_0;
   vec2 m_1;
   int after;
+  uint pad_1;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S_std140 inner[4];
 } u;
 
diff --git a/test/tint/buffer/uniform/std140/mat2x2/to_private.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat2x2/to_private.wgsl.expected.glsl
index a6b76c6..f21f59b 100644
--- a/test/tint/buffer/uniform/std140/mat2x2/to_private.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat2x2/to_private.wgsl.expected.glsl
@@ -8,12 +8,14 @@
 
 struct S_std140 {
   int before;
+  uint pad;
   vec2 m_0;
   vec2 m_1;
   int after;
+  uint pad_1;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S_std140 inner[4];
 } u;
 
diff --git a/test/tint/buffer/uniform/std140/mat2x2/to_storage.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat2x2/to_storage.wgsl.expected.glsl
index afca67d..b6b2c36 100644
--- a/test/tint/buffer/uniform/std140/mat2x2/to_storage.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat2x2/to_storage.wgsl.expected.glsl
@@ -2,18 +2,22 @@
 
 struct S {
   int before;
+  uint pad;
   mat2 m;
   int after;
+  uint pad_1;
 };
 
 struct S_std140 {
   int before;
+  uint pad_2;
   vec2 m_0;
   vec2 m_1;
   int after;
+  uint pad_3;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S_std140 inner[4];
 } u;
 
@@ -22,12 +26,12 @@
 } s;
 
 S conv_S(S_std140 val) {
-  S tint_symbol = S(val.before, mat2(val.m_0, val.m_1), val.after);
+  S tint_symbol = S(val.before, 0u, mat2(val.m_0, val.m_1), val.after, 0u);
   return tint_symbol;
 }
 
 S[4] conv_arr_4_S(S_std140 val[4]) {
-  S arr[4] = S[4](S(0, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0));
+  S arr[4] = S[4](S(0, 0u, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0, 0u), S(0, 0u, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0, 0u), S(0, 0u, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0, 0u), S(0, 0u, mat2(0.0f, 0.0f, 0.0f, 0.0f), 0, 0u));
   {
     for(uint i = 0u; (i < 4u); i = (i + 1u)) {
       arr[i] = conv_S(val[i]);
diff --git a/test/tint/buffer/uniform/std140/mat2x2/to_workgroup.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat2x2/to_workgroup.wgsl.expected.glsl
index af5d513..b75753c 100644
--- a/test/tint/buffer/uniform/std140/mat2x2/to_workgroup.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat2x2/to_workgroup.wgsl.expected.glsl
@@ -8,12 +8,14 @@
 
 struct S_std140 {
   int before;
+  uint pad;
   vec2 m_0;
   vec2 m_1;
   int after;
+  uint pad_1;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S_std140 inner[4];
 } u;
 
diff --git a/test/tint/buffer/uniform/std140/mat3x2/dynamic_index_via_ptr.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat3x2/dynamic_index_via_ptr.wgsl.expected.glsl
index 8aaf4c2..c85ce1a 100644
--- a/test/tint/buffer/uniform/std140/mat3x2/dynamic_index_via_ptr.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat3x2/dynamic_index_via_ptr.wgsl.expected.glsl
@@ -8,6 +8,16 @@
   vec2 m_0;
   vec2 m_1;
   vec2 m_2;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
+  uint pad_3;
+  uint pad_4;
+  uint pad_5;
+  uint pad_6;
+  uint pad_7;
+  uint pad_8;
+  uint pad_9;
 };
 
 struct Outer {
@@ -18,7 +28,7 @@
   Inner_std140 a[4];
 };
 
-layout(binding = 0) uniform a_block_ubo {
+layout(binding = 0, std140) uniform a_block_ubo {
   Outer_std140 inner[4];
 } a;
 
diff --git a/test/tint/buffer/uniform/std140/mat3x2/static_index_via_ptr.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat3x2/static_index_via_ptr.wgsl.expected.glsl
index 47bf6ba..85ff444 100644
--- a/test/tint/buffer/uniform/std140/mat3x2/static_index_via_ptr.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat3x2/static_index_via_ptr.wgsl.expected.glsl
@@ -8,6 +8,16 @@
   vec2 m_0;
   vec2 m_1;
   vec2 m_2;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
+  uint pad_3;
+  uint pad_4;
+  uint pad_5;
+  uint pad_6;
+  uint pad_7;
+  uint pad_8;
+  uint pad_9;
 };
 
 struct Outer {
@@ -18,7 +28,7 @@
   Inner_std140 a[4];
 };
 
-layout(binding = 0) uniform a_block_ubo {
+layout(binding = 0, std140) uniform a_block_ubo {
   Outer_std140 inner[4];
 } a;
 
diff --git a/test/tint/buffer/uniform/std140/mat3x2/to_builtin.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat3x2/to_builtin.wgsl.expected.glsl
index d940c27..2d02c4d 100644
--- a/test/tint/buffer/uniform/std140/mat3x2/to_builtin.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat3x2/to_builtin.wgsl.expected.glsl
@@ -8,13 +8,17 @@
 
 struct S_std140 {
   int before;
+  uint pad;
   vec2 m_0;
   vec2 m_1;
   vec2 m_2;
+  uint pad_1;
+  uint pad_2;
   int after;
+  uint pad_3;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S_std140 inner[4];
 } u;
 
diff --git a/test/tint/buffer/uniform/std140/mat3x2/to_fn.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat3x2/to_fn.wgsl.expected.glsl
index 8bcd005..cb73e87 100644
--- a/test/tint/buffer/uniform/std140/mat3x2/to_fn.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat3x2/to_fn.wgsl.expected.glsl
@@ -8,13 +8,25 @@
 
 struct S_std140 {
   int before;
+  uint pad;
   vec2 m_0;
   vec2 m_1;
   vec2 m_2;
+  uint pad_1;
+  uint pad_2;
+  uint pad_3;
+  uint pad_4;
+  uint pad_5;
+  uint pad_6;
+  uint pad_7;
+  uint pad_8;
+  uint pad_9;
+  uint pad_10;
   int after;
+  uint pad_11;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S_std140 inner[4];
 } u;
 
diff --git a/test/tint/buffer/uniform/std140/mat3x2/to_private.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat3x2/to_private.wgsl.expected.glsl
index 3c89125..afdcbcd 100644
--- a/test/tint/buffer/uniform/std140/mat3x2/to_private.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat3x2/to_private.wgsl.expected.glsl
@@ -8,13 +8,25 @@
 
 struct S_std140 {
   int before;
+  uint pad;
   vec2 m_0;
   vec2 m_1;
   vec2 m_2;
+  uint pad_1;
+  uint pad_2;
+  uint pad_3;
+  uint pad_4;
+  uint pad_5;
+  uint pad_6;
+  uint pad_7;
+  uint pad_8;
+  uint pad_9;
+  uint pad_10;
   int after;
+  uint pad_11;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S_std140 inner[4];
 } u;
 
diff --git a/test/tint/buffer/uniform/std140/mat3x2/to_storage.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat3x2/to_storage.wgsl.expected.glsl
index df93b26..fd4678d 100644
--- a/test/tint/buffer/uniform/std140/mat3x2/to_storage.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat3x2/to_storage.wgsl.expected.glsl
@@ -2,19 +2,43 @@
 
 struct S {
   int before;
+  uint pad;
   mat3x2 m;
+  uint pad_1;
+  uint pad_2;
+  uint pad_3;
+  uint pad_4;
+  uint pad_5;
+  uint pad_6;
+  uint pad_7;
+  uint pad_8;
+  uint pad_9;
+  uint pad_10;
   int after;
+  uint pad_11;
 };
 
 struct S_std140 {
   int before;
+  uint pad_12;
   vec2 m_0;
   vec2 m_1;
   vec2 m_2;
+  uint pad_13;
+  uint pad_14;
+  uint pad_15;
+  uint pad_16;
+  uint pad_17;
+  uint pad_18;
+  uint pad_19;
+  uint pad_20;
+  uint pad_21;
+  uint pad_22;
   int after;
+  uint pad_23;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S_std140 inner[4];
 } u;
 
@@ -23,12 +47,12 @@
 } s;
 
 S conv_S(S_std140 val) {
-  S tint_symbol = S(val.before, mat3x2(val.m_0, val.m_1, val.m_2), val.after);
+  S tint_symbol = S(val.before, 0u, mat3x2(val.m_0, val.m_1, val.m_2), 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, val.after, 0u);
   return tint_symbol;
 }
 
 S[4] conv_arr_4_S(S_std140 val[4]) {
-  S arr[4] = S[4](S(0, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0));
+  S arr[4] = S[4](S(0, 0u, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0, 0u), S(0, 0u, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0, 0u), S(0, 0u, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0, 0u), S(0, 0u, mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0, 0u));
   {
     for(uint i = 0u; (i < 4u); i = (i + 1u)) {
       arr[i] = conv_S(val[i]);
diff --git a/test/tint/buffer/uniform/std140/mat3x2/to_workgroup.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat3x2/to_workgroup.wgsl.expected.glsl
index d004b4b..17e4deb 100644
--- a/test/tint/buffer/uniform/std140/mat3x2/to_workgroup.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat3x2/to_workgroup.wgsl.expected.glsl
@@ -8,13 +8,25 @@
 
 struct S_std140 {
   int before;
+  uint pad;
   vec2 m_0;
   vec2 m_1;
   vec2 m_2;
+  uint pad_1;
+  uint pad_2;
+  uint pad_3;
+  uint pad_4;
+  uint pad_5;
+  uint pad_6;
+  uint pad_7;
+  uint pad_8;
+  uint pad_9;
+  uint pad_10;
   int after;
+  uint pad_11;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S_std140 inner[4];
 } u;
 
diff --git a/test/tint/buffer/uniform/std140/mat4x2/dynamic_index_via_ptr.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat4x2/dynamic_index_via_ptr.wgsl.expected.glsl
index 1ccb8d2..da098b6 100644
--- a/test/tint/buffer/uniform/std140/mat4x2/dynamic_index_via_ptr.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat4x2/dynamic_index_via_ptr.wgsl.expected.glsl
@@ -19,7 +19,7 @@
   Inner_std140 a[4];
 };
 
-layout(binding = 0) uniform a_block_ubo {
+layout(binding = 0, std140) uniform a_block_ubo {
   Outer_std140 inner[4];
 } a;
 
diff --git a/test/tint/buffer/uniform/std140/mat4x2/static_index_via_ptr.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat4x2/static_index_via_ptr.wgsl.expected.glsl
index 5c10cfb..99394e5 100644
--- a/test/tint/buffer/uniform/std140/mat4x2/static_index_via_ptr.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat4x2/static_index_via_ptr.wgsl.expected.glsl
@@ -19,7 +19,7 @@
   Inner_std140 a[4];
 };
 
-layout(binding = 0) uniform a_block_ubo {
+layout(binding = 0, std140) uniform a_block_ubo {
   Outer_std140 inner[4];
 } a;
 
diff --git a/test/tint/buffer/uniform/std140/mat4x2/to_builtin.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat4x2/to_builtin.wgsl.expected.glsl
index 46fbeb6..9eede3e 100644
--- a/test/tint/buffer/uniform/std140/mat4x2/to_builtin.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat4x2/to_builtin.wgsl.expected.glsl
@@ -8,14 +8,16 @@
 
 struct S_std140 {
   int before;
+  uint pad;
   vec2 m_0;
   vec2 m_1;
   vec2 m_2;
   vec2 m_3;
   int after;
+  uint pad_1;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S_std140 inner[4];
 } u;
 
diff --git a/test/tint/buffer/uniform/std140/mat4x2/to_fn.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat4x2/to_fn.wgsl.expected.glsl
index c409f8b..837c23e 100644
--- a/test/tint/buffer/uniform/std140/mat4x2/to_fn.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat4x2/to_fn.wgsl.expected.glsl
@@ -8,14 +8,16 @@
 
 struct S_std140 {
   int before;
+  uint pad;
   vec2 m_0;
   vec2 m_1;
   vec2 m_2;
   vec2 m_3;
   int after;
+  uint pad_1;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S_std140 inner[4];
 } u;
 
diff --git a/test/tint/buffer/uniform/std140/mat4x2/to_private.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat4x2/to_private.wgsl.expected.glsl
index 9696062..235d81d 100644
--- a/test/tint/buffer/uniform/std140/mat4x2/to_private.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat4x2/to_private.wgsl.expected.glsl
@@ -8,14 +8,16 @@
 
 struct S_std140 {
   int before;
+  uint pad;
   vec2 m_0;
   vec2 m_1;
   vec2 m_2;
   vec2 m_3;
   int after;
+  uint pad_1;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S_std140 inner[4];
 } u;
 
diff --git a/test/tint/buffer/uniform/std140/mat4x2/to_storage.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat4x2/to_storage.wgsl.expected.glsl
index 72e4c1c..13e7964 100644
--- a/test/tint/buffer/uniform/std140/mat4x2/to_storage.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat4x2/to_storage.wgsl.expected.glsl
@@ -2,20 +2,24 @@
 
 struct S {
   int before;
+  uint pad;
   mat4x2 m;
   int after;
+  uint pad_1;
 };
 
 struct S_std140 {
   int before;
+  uint pad_2;
   vec2 m_0;
   vec2 m_1;
   vec2 m_2;
   vec2 m_3;
   int after;
+  uint pad_3;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S_std140 inner[4];
 } u;
 
@@ -24,12 +28,12 @@
 } s;
 
 S conv_S(S_std140 val) {
-  S tint_symbol = S(val.before, mat4x2(val.m_0, val.m_1, val.m_2, val.m_3), val.after);
+  S tint_symbol = S(val.before, 0u, mat4x2(val.m_0, val.m_1, val.m_2, val.m_3), val.after, 0u);
   return tint_symbol;
 }
 
 S[4] conv_arr_4_S(S_std140 val[4]) {
-  S arr[4] = S[4](S(0, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0), S(0, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0));
+  S arr[4] = S[4](S(0, 0u, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0, 0u), S(0, 0u, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0, 0u), S(0, 0u, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0, 0u), S(0, 0u, mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), 0, 0u));
   {
     for(uint i = 0u; (i < 4u); i = (i + 1u)) {
       arr[i] = conv_S(val[i]);
diff --git a/test/tint/buffer/uniform/std140/mat4x2/to_workgroup.wgsl.expected.glsl b/test/tint/buffer/uniform/std140/mat4x2/to_workgroup.wgsl.expected.glsl
index 5f308a1..1b2f51f 100644
--- a/test/tint/buffer/uniform/std140/mat4x2/to_workgroup.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/std140/mat4x2/to_workgroup.wgsl.expected.glsl
@@ -8,14 +8,16 @@
 
 struct S_std140 {
   int before;
+  uint pad;
   vec2 m_0;
   vec2 m_1;
   vec2 m_2;
   vec2 m_3;
   int after;
+  uint pad_1;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S_std140 inner[4];
 } u;
 
diff --git a/test/tint/buffer/uniform/types/array.wgsl.expected.glsl b/test/tint/buffer/uniform/types/array.wgsl.expected.glsl
index d07ae63..c3f6dce 100644
--- a/test/tint/buffer/uniform/types/array.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/types/array.wgsl.expected.glsl
@@ -1,6 +1,6 @@
 #version 310 es
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   vec4 inner[4];
 } u;
 
diff --git a/test/tint/buffer/uniform/types/f32.wgsl.expected.glsl b/test/tint/buffer/uniform/types/f32.wgsl.expected.glsl
index 664b5a3..4121bca 100644
--- a/test/tint/buffer/uniform/types/f32.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/types/f32.wgsl.expected.glsl
@@ -1,6 +1,6 @@
 #version 310 es
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   float inner;
 } u;
 
diff --git a/test/tint/buffer/uniform/types/i32.wgsl.expected.glsl b/test/tint/buffer/uniform/types/i32.wgsl.expected.glsl
index 69fc627..84659c9 100644
--- a/test/tint/buffer/uniform/types/i32.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/types/i32.wgsl.expected.glsl
@@ -1,6 +1,6 @@
 #version 310 es
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   int inner;
 } u;
 
diff --git a/test/tint/buffer/uniform/types/mat2x2.wgsl.expected.glsl b/test/tint/buffer/uniform/types/mat2x2.wgsl.expected.glsl
index e53fad7..ae3c014 100644
--- a/test/tint/buffer/uniform/types/mat2x2.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/types/mat2x2.wgsl.expected.glsl
@@ -1,6 +1,6 @@
 #version 310 es
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   mat2 inner;
 } u;
 
diff --git a/test/tint/buffer/uniform/types/mat2x3.wgsl.expected.glsl b/test/tint/buffer/uniform/types/mat2x3.wgsl.expected.glsl
index ce089a2..bef6560 100644
--- a/test/tint/buffer/uniform/types/mat2x3.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/types/mat2x3.wgsl.expected.glsl
@@ -1,6 +1,6 @@
 #version 310 es
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   mat2x3 inner;
 } u;
 
diff --git a/test/tint/buffer/uniform/types/mat3x2.wgsl.expected.glsl b/test/tint/buffer/uniform/types/mat3x2.wgsl.expected.glsl
index 4bf66e3..06a0a60 100644
--- a/test/tint/buffer/uniform/types/mat3x2.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/types/mat3x2.wgsl.expected.glsl
@@ -1,6 +1,6 @@
 #version 310 es
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   mat3x2 inner;
 } u;
 
diff --git a/test/tint/buffer/uniform/types/mat4x4.wgsl.expected.glsl b/test/tint/buffer/uniform/types/mat4x4.wgsl.expected.glsl
index f0b2c98..d93e2b4 100644
--- a/test/tint/buffer/uniform/types/mat4x4.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/types/mat4x4.wgsl.expected.glsl
@@ -1,6 +1,6 @@
 #version 310 es
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   mat4 inner;
 } u;
 
diff --git a/test/tint/buffer/uniform/types/struct.wgsl.expected.glsl b/test/tint/buffer/uniform/types/struct.wgsl.expected.glsl
index 708f176..b717d8c 100644
--- a/test/tint/buffer/uniform/types/struct.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/types/struct.wgsl.expected.glsl
@@ -2,13 +2,16 @@
 
 struct Inner {
   float f;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 };
 
 struct S {
   Inner inner;
 };
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   S inner;
 } u;
 
diff --git a/test/tint/buffer/uniform/types/u32.wgsl.expected.glsl b/test/tint/buffer/uniform/types/u32.wgsl.expected.glsl
index 68cf9bc..32fad05 100644
--- a/test/tint/buffer/uniform/types/u32.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/types/u32.wgsl.expected.glsl
@@ -1,6 +1,6 @@
 #version 310 es
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   uint inner;
 } u;
 
diff --git a/test/tint/buffer/uniform/types/vec2.wgsl.expected.glsl b/test/tint/buffer/uniform/types/vec2.wgsl.expected.glsl
index d3a3922..e509748 100644
--- a/test/tint/buffer/uniform/types/vec2.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/types/vec2.wgsl.expected.glsl
@@ -1,6 +1,6 @@
 #version 310 es
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   ivec2 inner;
 } u;
 
diff --git a/test/tint/buffer/uniform/types/vec3.wgsl.expected.glsl b/test/tint/buffer/uniform/types/vec3.wgsl.expected.glsl
index 473cdcd..94bee31 100644
--- a/test/tint/buffer/uniform/types/vec3.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/types/vec3.wgsl.expected.glsl
@@ -1,6 +1,6 @@
 #version 310 es
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   uvec3 inner;
 } u;
 
diff --git a/test/tint/buffer/uniform/types/vec4.wgsl.expected.glsl b/test/tint/buffer/uniform/types/vec4.wgsl.expected.glsl
index 2006679..6358e5c 100644
--- a/test/tint/buffer/uniform/types/vec4.wgsl.expected.glsl
+++ b/test/tint/buffer/uniform/types/vec4.wgsl.expected.glsl
@@ -1,6 +1,6 @@
 #version 310 es
 
-layout(binding = 0) uniform u_block_ubo {
+layout(binding = 0, std140) uniform u_block_ubo {
   vec4 inner;
 } u;
 
diff --git a/test/tint/bug/chromium/1273230.wgsl.expected.glsl b/test/tint/bug/chromium/1273230.wgsl.expected.glsl
index 685ab03..ac98a18 100644
--- a/test/tint/bug/chromium/1273230.wgsl.expected.glsl
+++ b/test/tint/bug/chromium/1273230.wgsl.expected.glsl
@@ -1,12 +1,14 @@
 #version 310 es
 
-layout(binding = 0) uniform Uniforms_ubo {
+layout(binding = 0, std140) uniform Uniforms_ubo {
   uint numTriangles;
   uint gridSize;
   uint puuuuuuuuuuuuuuuuad1;
   uint pad2;
   vec3 bbMin;
+  uint pad;
   vec3 bbMax;
+  uint pad_1;
 } uniforms;
 
 layout(binding = 10, std430) buffer U32s_ssbo {
diff --git a/test/tint/bug/dawn/947.wgsl.expected.glsl b/test/tint/bug/dawn/947.wgsl.expected.glsl
index 1eb7221..7113cf5 100644
--- a/test/tint/bug/dawn/947.wgsl.expected.glsl
+++ b/test/tint/bug/dawn/947.wgsl.expected.glsl
@@ -13,7 +13,7 @@
 #version 310 es
 
 layout(location = 0) out vec2 texcoords_1;
-layout(binding = 0) uniform Uniforms_ubo {
+layout(binding = 0, std140) uniform Uniforms_ubo {
   vec2 u_scale;
   vec2 u_offset;
 } uniforms;
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.glsl b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.glsl
index e7bad69..dc22690 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.glsl
@@ -1,7 +1,10 @@
 #version 310 es
 
-layout(binding = 0) uniform UBO_ubo {
+layout(binding = 0, std140) uniform UBO_ubo {
   int dynamic_idx;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } ubo;
 
 struct S {
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.glsl b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.glsl
index 8ed17e0..6b7cb32 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.glsl
@@ -1,7 +1,10 @@
 #version 310 es
 
-layout(binding = 0) uniform UBO_ubo {
+layout(binding = 0, std140) uniform UBO_ubo {
   int dynamic_idx;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } ubo;
 
 struct S {
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.glsl b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.glsl
index 68fb649..dee0c36 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.glsl
@@ -1,7 +1,10 @@
 #version 310 es
 
-layout(binding = 0) uniform UBO_ubo {
+layout(binding = 0, std140) uniform UBO_ubo {
   int dynamic_idx;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } ubo;
 
 layout(binding = 2, std430) buffer Result_ssbo {
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.glsl b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.glsl
index e980b5d..ec3aa7d 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.glsl
@@ -1,8 +1,11 @@
 #version 310 es
 
-layout(binding = 0) uniform UBO_ubo {
+layout(binding = 0, std140) uniform UBO_ubo {
   ivec4 data[4];
   int dynamic_idx;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } ubo;
 
 layout(binding = 2, std430) buffer Result_ssbo {
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.glsl b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.glsl
index c98cbdf..c163eef 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.glsl
@@ -1,7 +1,10 @@
 #version 310 es
 
-layout(binding = 0) uniform UBO_ubo {
+layout(binding = 0, std140) uniform UBO_ubo {
   int dynamic_idx;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } ubo;
 
 struct S {
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.glsl b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.glsl
index 1798e8b..635b4d8 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.glsl
@@ -1,7 +1,10 @@
 #version 310 es
 
-layout(binding = 0) uniform UBO_ubo {
+layout(binding = 0, std140) uniform UBO_ubo {
   int dynamic_idx;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } ubo;
 
 struct S {
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.glsl b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.glsl
index a5ca9c7..5286aa6 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.glsl
@@ -1,7 +1,10 @@
 #version 310 es
 
-layout(binding = 0) uniform UBO_ubo {
+layout(binding = 0, std140) uniform UBO_ubo {
   int dynamic_idx;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } ubo;
 
 struct S {
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.glsl b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.glsl
index f5737c7..e1a897f 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.glsl
@@ -1,7 +1,10 @@
 #version 310 es
 
-layout(binding = 0) uniform UBO_ubo {
+layout(binding = 0, std140) uniform UBO_ubo {
   int dynamic_idx;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } ubo;
 
 struct S {
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.glsl b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.glsl
index 6ecdef3..12ca09a 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.glsl
@@ -1,7 +1,10 @@
 #version 310 es
 
-layout(binding = 0) uniform UBO_ubo {
+layout(binding = 0, std140) uniform UBO_ubo {
   int dynamic_idx;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } ubo;
 
 struct S {
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.glsl b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.glsl
index 8fc82a2..be6fc9c 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.glsl
@@ -1,7 +1,10 @@
 #version 310 es
 
-layout(binding = 0) uniform UBO_ubo {
+layout(binding = 0, std140) uniform UBO_ubo {
   int dynamic_idx;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } ubo;
 
 layout(binding = 2, std430) buffer Result_ssbo {
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.glsl b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.glsl
index 11cf201..417dbdf 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.glsl
@@ -1,7 +1,10 @@
 #version 310 es
 
-layout(binding = 0) uniform UBO_ubo {
+layout(binding = 0, std140) uniform UBO_ubo {
   int dynamic_idx;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } ubo;
 
 struct S {
diff --git a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.glsl b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.glsl
index af6d544..89e8cbc 100644
--- a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.glsl
@@ -3,16 +3,23 @@
 struct Particle {
   vec3 position[8];
   float lifetime;
+  uint pad_3;
+  uint pad_4;
+  uint pad_5;
   vec4 color;
   vec3 velocity;
+  uint pad_6;
 };
 
 layout(binding = 3, std430) buffer Particles_ssbo {
   Particle p[];
 } particles;
 
-layout(binding = 4) uniform Simulation_ubo {
+layout(binding = 4, std140) uniform Simulation_ubo {
   uint i;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } sim;
 
 void tint_symbol() {
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.glsl
index 719abc4..99500a6 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.glsl
@@ -1,8 +1,10 @@
 #version 310 es
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
   uint j;
+  uint pad;
+  uint pad_1;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.glsl
index d3300f2..5d76866 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.glsl
@@ -1,8 +1,10 @@
 #version 310 es
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
   uint j;
+  uint pad;
+  uint pad_1;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.glsl
index daf05d3..8d409b6 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.glsl
@@ -1,8 +1,10 @@
 #version 310 es
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
   uint j;
+  uint pad;
+  uint pad_1;
 } uniforms;
 
 mat2x4 m1 = mat2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.glsl
index dfeccec..aeaf8f5 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.glsl
@@ -1,8 +1,10 @@
 #version 310 es
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
   uint j;
+  uint pad;
+  uint pad_1;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.glsl
index 647fc86..9ade51c 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.glsl
@@ -1,8 +1,10 @@
 #version 310 es
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
   uint j;
+  uint pad;
+  uint pad_1;
 } uniforms;
 
 mat2x4 m1 = mat2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.glsl
index c0f23a7..89a3e06 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.glsl
@@ -1,8 +1,10 @@
 #version 310 es
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
   uint j;
+  uint pad;
+  uint pad_1;
 } uniforms;
 
 mat2x4 m1 = mat2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.glsl
index daf05d3..8d409b6 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.glsl
@@ -1,8 +1,10 @@
 #version 310 es
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
   uint j;
+  uint pad;
+  uint pad_1;
 } uniforms;
 
 mat2x4 m1 = mat2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.glsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.glsl
index 309d081..057a6fd 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.glsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.glsl
@@ -1,8 +1,10 @@
 #version 310 es
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
   uint j;
+  uint pad;
+  uint pad_1;
 } uniforms;
 
 mat2x4 m1 = mat2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/tint/bug/tint/1046.wgsl.expected.glsl b/test/tint/bug/tint/1046.wgsl.expected.glsl
index a65f344..2900bc3 100644
--- a/test/tint/bug/tint/1046.wgsl.expected.glsl
+++ b/test/tint/bug/tint/1046.wgsl.expected.glsl
@@ -10,11 +10,13 @@
   vec4 position;
 };
 
-layout(binding = 0) uniform Uniforms_ubo {
+layout(binding = 0, std140) uniform Uniforms_ubo {
   mat4 worldView;
   mat4 proj;
   uint numPointLights;
   uint color_source;
+  uint pad;
+  uint pad_1;
   vec4 color;
 } uniforms;
 
diff --git a/test/tint/bug/tint/1061.spvasm.expected.glsl b/test/tint/bug/tint/1061.spvasm.expected.glsl
index edeb86c..3df5cd7 100644
--- a/test/tint/bug/tint/1061.spvasm.expected.glsl
+++ b/test/tint/bug/tint/1061.spvasm.expected.glsl
@@ -2,7 +2,7 @@
 precision mediump float;
 
 layout(location = 0) out vec4 x_GLF_color_1_1;
-layout(binding = 0) uniform buf0_ubo {
+layout(binding = 0, std140) uniform buf0_ubo {
   vec4 ref;
 } x_7;
 
diff --git a/test/tint/bug/tint/1088.spvasm.expected.glsl b/test/tint/bug/tint/1088.spvasm.expected.glsl
index 6084c12..43e39e5 100644
--- a/test/tint/bug/tint/1088.spvasm.expected.glsl
+++ b/test/tint/bug/tint/1088.spvasm.expected.glsl
@@ -6,12 +6,18 @@
 layout(location = 0) out vec2 vUV_1_1;
 struct strided_arr {
   float el;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 };
 
 vec3 position = vec3(0.0f, 0.0f, 0.0f);
-layout(binding = 2) uniform LeftOver_ubo {
+layout(binding = 2, std140) uniform LeftOver_ubo {
   mat4 worldViewProjection;
   float time;
+  uint pad_3;
+  uint pad_4;
+  uint pad_5;
   mat4 test2[2];
   strided_arr test[4];
 } x_14;
diff --git a/test/tint/bug/tint/1113.wgsl.expected.glsl b/test/tint/bug/tint/1113.wgsl.expected.glsl
index c077619..456c153 100644
--- a/test/tint/bug/tint/1113.wgsl.expected.glsl
+++ b/test/tint/bug/tint/1113.wgsl.expected.glsl
@@ -1,12 +1,14 @@
 #version 310 es
 
-layout(binding = 0) uniform Uniforms_ubo {
+layout(binding = 0, std140) uniform Uniforms_ubo {
   uint numTriangles;
   uint gridSize;
   uint pad1;
   uint pad2;
   vec3 bbMin;
+  uint pad;
   vec3 bbMax;
+  uint pad_1;
 } uniforms;
 
 layout(binding = 10, std430) buffer U32s_ssbo {
@@ -102,13 +104,15 @@
 }
 #version 310 es
 
-layout(binding = 0) uniform Uniforms_ubo {
+layout(binding = 0, std140) uniform Uniforms_ubo {
   uint numTriangles;
   uint gridSize;
   uint pad1;
   uint pad2;
   vec3 bbMin;
+  uint pad;
   vec3 bbMax;
+  uint pad_1;
 } uniforms;
 
 layout(binding = 10, std430) buffer U32s_ssbo {
@@ -174,13 +178,15 @@
 }
 #version 310 es
 
-layout(binding = 0) uniform Uniforms_ubo {
+layout(binding = 0, std140) uniform Uniforms_ubo {
   uint numTriangles;
   uint gridSize;
   uint pad1;
   uint pad2;
   vec3 bbMin;
+  uint pad;
   vec3 bbMax;
+  uint pad_1;
 } uniforms;
 
 layout(binding = 10, std430) buffer U32s_ssbo {
diff --git a/test/tint/bug/tint/1118.wgsl.expected.glsl b/test/tint/bug/tint/1118.wgsl.expected.glsl
index a695211..2fe20d2 100644
--- a/test/tint/bug/tint/1118.wgsl.expected.glsl
+++ b/test/tint/bug/tint/1118.wgsl.expected.glsl
@@ -18,11 +18,11 @@
 layout(location = 0) out vec4 glFragColor_1_1;
 float fClipDistance3 = 0.0f;
 float fClipDistance4 = 0.0f;
-layout(binding = 0) uniform Scene_ubo {
+layout(binding = 0, std140) uniform Scene_ubo {
   vec4 vEyePosition;
 } x_29;
 
-layout(binding = 1) uniform Material_ubo {
+layout(binding = 1, std140) uniform Material_ubo {
   vec4 vDiffuseColor;
   vec3 vAmbientColor;
   float placeholder;
@@ -30,8 +30,11 @@
   float placeholder2;
 } x_49;
 
-layout(binding = 2) uniform Mesh_ubo {
+layout(binding = 2, std140) uniform Mesh_ubo {
   float visibility;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } x_137;
 
 vec4 glFragColor = vec4(0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/tint/bug/tint/1121.wgsl.expected.glsl b/test/tint/bug/tint/1121.wgsl.expected.glsl
index e509937..0636c71 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.glsl
+++ b/test/tint/bug/tint/1121.wgsl.expected.glsl
@@ -19,16 +19,18 @@
   TileLightIdData data[4];
 } tileLightId;
 
-layout(binding = 0) uniform Config_ubo {
+layout(binding = 0, std140) uniform Config_ubo {
   uint numLights;
   uint numTiles;
   uint tileCountX;
   uint tileCountY;
   uint numTileLightSlot;
   uint tileSize;
+  uint pad;
+  uint pad_1;
 } config;
 
-layout(binding = 0) uniform Uniforms_ubo {
+layout(binding = 0, std140) uniform Uniforms_ubo {
   vec4 tint_symbol;
   vec4 tint_symbol_1;
   mat4 viewMatrix;
diff --git a/test/tint/bug/tint/1520.spvasm.expected.glsl b/test/tint/bug/tint/1520.spvasm.expected.glsl
index 0e08ab8..cfdecf1 100644
--- a/test/tint/bug/tint/1520.spvasm.expected.glsl
+++ b/test/tint/bug/tint/1520.spvasm.expected.glsl
@@ -3,8 +3,15 @@
 
 layout(location = 0) in vec4 vcolor_S0_param_1;
 layout(location = 0) out vec4 sk_FragColor_1_1;
-layout(binding = 0) uniform UniformBuffer_ubo {
+layout(binding = 0, std140) uniform UniformBuffer_ubo {
+  uint pad;
+  uint pad_1;
+  uint pad_2;
+  uint pad_3;
   float unknownInput_S1_c0;
+  uint pad_4;
+  uint pad_5;
+  uint pad_6;
   vec4 ucolorRed_S1_c0;
   vec4 ucolorGreen_S1_c0;
   mat3 umatrix_S1;
diff --git a/test/tint/bug/tint/294.wgsl.expected.glsl b/test/tint/bug/tint/294.wgsl.expected.glsl
index 8bfaa2e..33f393f 100644
--- a/test/tint/bug/tint/294.wgsl.expected.glsl
+++ b/test/tint/bug/tint/294.wgsl.expected.glsl
@@ -6,7 +6,9 @@
 }
 struct Light {
   vec3 position;
+  uint pad;
   vec3 colour;
+  uint pad_1;
 };
 
 layout(binding = 1, std430) buffer Lights_ssbo {
diff --git a/test/tint/bug/tint/369.wgsl.expected.glsl b/test/tint/bug/tint/369.wgsl.expected.glsl
index 0a45971..8fa9069 100644
--- a/test/tint/bug/tint/369.wgsl.expected.glsl
+++ b/test/tint/bug/tint/369.wgsl.expected.glsl
@@ -8,7 +8,7 @@
   mat2 m;
 } SSBO;
 
-layout(binding = 0) uniform S_std140_ubo {
+layout(binding = 0, std140) uniform S_std140_ubo {
   vec2 m_0;
   vec2 m_1;
 } UBO;
diff --git a/test/tint/bug/tint/403.wgsl.expected.glsl b/test/tint/bug/tint/403.wgsl.expected.glsl
index 8369676..38d12ca 100644
--- a/test/tint/bug/tint/403.wgsl.expected.glsl
+++ b/test/tint/bug/tint/403.wgsl.expected.glsl
@@ -8,12 +8,12 @@
   mat2 transform2;
 };
 
-layout(binding = 0) uniform vertexUniformBuffer1_std140_ubo {
+layout(binding = 0, std140) uniform vertexUniformBuffer1_std140_ubo {
   vec2 transform1_0;
   vec2 transform1_1;
 } x_20;
 
-layout(binding = 0) uniform vertexUniformBuffer2_std140_ubo {
+layout(binding = 0, std140) uniform vertexUniformBuffer2_std140_ubo {
   vec2 transform2_0;
   vec2 transform2_1;
 } x_26;
diff --git a/test/tint/bug/tint/534.wgsl.expected.glsl b/test/tint/bug/tint/534.wgsl.expected.glsl
index 7c556c5..12c0408 100644
--- a/test/tint/bug/tint/534.wgsl.expected.glsl
+++ b/test/tint/bug/tint/534.wgsl.expected.glsl
@@ -4,7 +4,7 @@
   uint result[];
 } tint_symbol;
 
-layout(binding = 3) uniform Uniforms_ubo {
+layout(binding = 3, std140) uniform Uniforms_ubo {
   uint dstTextureFlipY;
   uint isFloat16;
   uint isRGB10A2Unorm;
diff --git a/test/tint/bug/tint/744.wgsl.expected.glsl b/test/tint/bug/tint/744.wgsl.expected.glsl
index eeeef67..a142a00 100644
--- a/test/tint/bug/tint/744.wgsl.expected.glsl
+++ b/test/tint/bug/tint/744.wgsl.expected.glsl
@@ -12,10 +12,12 @@
   uint numbers[];
 } resultMatrix;
 
-layout(binding = 3) uniform Uniforms_ubo {
+layout(binding = 3, std140) uniform Uniforms_ubo {
   uvec2 aShape;
   uvec2 bShape;
   uvec2 outShape;
+  uint pad;
+  uint pad_1;
 } uniforms;
 
 void tint_symbol(uvec3 global_id) {
diff --git a/test/tint/bug/tint/749.spvasm.expected.glsl b/test/tint/bug/tint/749.spvasm.expected.glsl
index 7f580c1..57b834d 100644
--- a/test/tint/bug/tint/749.spvasm.expected.glsl
+++ b/test/tint/bug/tint/749.spvasm.expected.glsl
@@ -8,8 +8,10 @@
 
 QuicksortObject obj = QuicksortObject(int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
 vec4 tint_symbol = vec4(0.0f, 0.0f, 0.0f, 0.0f);
-layout(binding = 0) uniform buf0_ubo {
+layout(binding = 0, std140) uniform buf0_ubo {
   vec2 resolution;
+  uint pad;
+  uint pad_1;
 } x_188;
 
 vec4 x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/tint/bug/tint/913.wgsl.expected.glsl b/test/tint/bug/tint/913.wgsl.expected.glsl
index 01a54d0..03f0da1 100644
--- a/test/tint/bug/tint/913.wgsl.expected.glsl
+++ b/test/tint/bug/tint/913.wgsl.expected.glsl
@@ -4,7 +4,7 @@
   uint result[];
 } tint_symbol;
 
-layout(binding = 3) uniform Uniforms_ubo {
+layout(binding = 3, std140) uniform Uniforms_ubo {
   uint dstTextureFlipY;
   uint channelCount;
   uvec2 srcCopyOrigin;
diff --git a/test/tint/bug/tint/914.wgsl.expected.glsl b/test/tint/bug/tint/914.wgsl.expected.glsl
index 25ef733..b9ebe4a 100644
--- a/test/tint/bug/tint/914.wgsl.expected.glsl
+++ b/test/tint/bug/tint/914.wgsl.expected.glsl
@@ -12,10 +12,11 @@
   float numbers[];
 } resultMatrix;
 
-layout(binding = 3) uniform Uniforms_ubo {
+layout(binding = 3, std140) uniform Uniforms_ubo {
   uint dimAOuter;
   uint dimInner;
   uint dimBOuter;
+  uint pad;
 } uniforms;
 
 float mm_readA(uint row, uint col) {
diff --git a/test/tint/bug/tint/922.wgsl.expected.glsl b/test/tint/bug/tint/922.wgsl.expected.glsl
index d88d887..351b258 100644
--- a/test/tint/bug/tint/922.wgsl.expected.glsl
+++ b/test/tint/bug/tint/922.wgsl.expected.glsl
@@ -31,16 +31,16 @@
   vec4 member;
 };
 
-layout(binding = 0) uniform ub_SceneParams_ubo {
+layout(binding = 0, std140) uniform ub_SceneParams_ubo {
   Mat4x4_ u_Projection;
 } global;
 
-layout(binding = 1) uniform ub_MaterialParams_ubo {
+layout(binding = 1, std140) uniform ub_MaterialParams_ubo {
   Mat4x2_ u_TexMtx[1];
   vec4 u_Misc0_;
 } global1;
 
-layout(binding = 2) uniform ub_PacketParams_ubo {
+layout(binding = 2, std140) uniform ub_PacketParams_ubo {
   Mat4x3_ u_PosMtx[32];
 } global2;
 
diff --git a/test/tint/bug/tint/942.wgsl.expected.glsl b/test/tint/bug/tint/942.wgsl.expected.glsl
index f577d03..bf44f34 100644
--- a/test/tint/bug/tint/942.wgsl.expected.glsl
+++ b/test/tint/bug/tint/942.wgsl.expected.glsl
@@ -1,13 +1,18 @@
 #version 310 es
 
-layout(binding = 1) uniform Params_ubo {
+layout(binding = 1, std140) uniform Params_ubo {
   uint filterDim;
   uint blockDim;
+  uint pad;
+  uint pad_1;
 } params;
 
 layout(rgba8) uniform highp writeonly image2D outputTex;
-layout(binding = 3) uniform Flip_ubo {
+layout(binding = 3, std140) uniform Flip_ubo {
   uint value;
+  uint pad_2;
+  uint pad_3;
+  uint pad_4;
 } flip;
 
 shared vec3 tile[4][256];
diff --git a/test/tint/bug/tint/943.spvasm.expected.glsl b/test/tint/bug/tint/943.spvasm.expected.glsl
index 59b4da0..2a9acbb 100644
--- a/test/tint/bug/tint/943.spvasm.expected.glsl
+++ b/test/tint/bug/tint/943.spvasm.expected.glsl
@@ -4,12 +4,20 @@
 #version 310 es
 
 int dimAOuter_1 = 0;
-layout(binding = 3) uniform Uniforms_ubo {
+layout(binding = 3, std140) uniform Uniforms_ubo {
   float NAN;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
   ivec3 aShape;
+  uint pad_3;
   ivec3 bShape;
+  uint pad_4;
   ivec3 outShape;
+  uint pad_5;
   ivec2 outShapeStrides;
+  uint pad_6;
+  uint pad_7;
 } x_48;
 
 int dimInner_1 = 0;
diff --git a/test/tint/bug/tint/948.wgsl.expected.glsl b/test/tint/bug/tint/948.wgsl.expected.glsl
index 50e6863..107f86e 100644
--- a/test/tint/bug/tint/948.wgsl.expected.glsl
+++ b/test/tint/bug/tint/948.wgsl.expected.glsl
@@ -25,9 +25,11 @@
 layout(location = 0) in vec3 vPosition_param_1;
 layout(location = 1) in vec2 vUV_param_1;
 layout(location = 0) out vec4 glFragColor_1_1;
-layout(binding = 9) uniform LeftOver_ubo {
+layout(binding = 9, std140) uniform LeftOver_ubo {
   float time;
   uint padding;
+  uint pad;
+  uint pad_1;
   mat4 worldViewProjection;
   vec2 outputSize;
   vec2 stageSize;
@@ -35,6 +37,7 @@
   float stageScale;
   float spriteCount;
   vec3 colorMul;
+  uint pad_2;
 } x_20;
 
 vec2 tUV = vec2(0.0f, 0.0f);
diff --git a/test/tint/bug/tint/949.wgsl.expected.glsl b/test/tint/bug/tint/949.wgsl.expected.glsl
index 3372f67..7585e91 100644
--- a/test/tint/bug/tint/949.wgsl.expected.glsl
+++ b/test/tint/bug/tint/949.wgsl.expected.glsl
@@ -26,11 +26,13 @@
 float u_Float = 0.0f;
 vec3 u_Color = vec3(0.0f, 0.0f, 0.0f);
 vec2 vMainuv = vec2(0.0f, 0.0f);
-layout(binding = 6) uniform LeftOver_ubo {
+layout(binding = 6, std140) uniform LeftOver_ubo {
   mat4 u_World;
   mat4 u_ViewProjection;
   float u_bumpStrength;
   uint padding;
+  uint pad;
+  uint pad_1;
   vec3 u_cameraPosition;
   float u_parallaxScale;
   float textureInfoName;
@@ -42,7 +44,7 @@
 bool tint_symbol = false;
 vec2 v_uv = vec2(0.0f, 0.0f);
 vec4 v_output2 = vec4(0.0f, 0.0f, 0.0f, 0.0f);
-layout(binding = 5) uniform Light0_ubo {
+layout(binding = 5, std140) uniform Light0_ubo {
   vec4 vLightData;
   vec4 vLightDiffuse;
   vec4 vLightSpecular;
@@ -50,6 +52,8 @@
   uint padding_2;
   vec4 shadowsInfo;
   vec2 depthValues;
+  uint pad_2;
+  uint pad_3;
 } light0;
 
 vec4 glFragColor = vec4(0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/tint/bug/tint/951.spvasm.expected.glsl b/test/tint/bug/tint/951.spvasm.expected.glsl
index 618b684..af2f6d4 100644
--- a/test/tint/bug/tint/951.spvasm.expected.glsl
+++ b/test/tint/bug/tint/951.spvasm.expected.glsl
@@ -9,12 +9,15 @@
 } x_20;
 
 uvec3 tint_symbol = uvec3(0u, 0u, 0u);
-layout(binding = 2) uniform Uniforms_ubo {
+layout(binding = 2, std140) uniform Uniforms_ubo {
   float NAN;
   int aShape;
   int outShape;
   int outShapeStrides;
   int size;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } x_24;
 
 float getAAtOutCoords_() {
diff --git a/test/tint/bug/tint/959.wgsl.expected.glsl b/test/tint/bug/tint/959.wgsl.expected.glsl
index a461051..d0639e47 100644
--- a/test/tint/bug/tint/959.wgsl.expected.glsl
+++ b/test/tint/bug/tint/959.wgsl.expected.glsl
@@ -3,66 +3,114 @@
 
 layout(binding = 0, std430) buffer S_ssbo {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b0;
 
 layout(binding = 0, std430) buffer S_ssbo_1 {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b1;
 
 layout(binding = 0, std430) buffer S_ssbo_2 {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b2;
 
 layout(binding = 0, std430) buffer S_ssbo_3 {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b3;
 
 layout(binding = 0, std430) buffer S_ssbo_4 {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b4;
 
 layout(binding = 0, std430) buffer S_ssbo_5 {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b5;
 
 layout(binding = 0, std430) buffer S_ssbo_6 {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b6;
 
 layout(binding = 0, std430) buffer S_ssbo_7 {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b7;
 
-layout(binding = 1) uniform S_ubo {
+layout(binding = 1, std140) uniform S_ubo {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b8;
 
-layout(binding = 1) uniform S_ubo_1 {
+layout(binding = 1, std140) uniform S_ubo_1 {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b9;
 
-layout(binding = 1) uniform S_ubo_2 {
+layout(binding = 1, std140) uniform S_ubo_2 {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b10;
 
-layout(binding = 1) uniform S_ubo_3 {
+layout(binding = 1, std140) uniform S_ubo_3 {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b11;
 
-layout(binding = 1) uniform S_ubo_4 {
+layout(binding = 1, std140) uniform S_ubo_4 {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b12;
 
-layout(binding = 1) uniform S_ubo_5 {
+layout(binding = 1, std140) uniform S_ubo_5 {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b13;
 
-layout(binding = 1) uniform S_ubo_6 {
+layout(binding = 1, std140) uniform S_ubo_6 {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b14;
 
-layout(binding = 1) uniform S_ubo_7 {
+layout(binding = 1, std140) uniform S_ubo_7 {
   float a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } b15;
 
 void tint_symbol() {
diff --git a/test/tint/bug/tint/993.wgsl.expected.glsl b/test/tint/bug/tint/993.wgsl.expected.glsl
index bd15be7..c3ca8de 100644
--- a/test/tint/bug/tint/993.wgsl.expected.glsl
+++ b/test/tint/bug/tint/993.wgsl.expected.glsl
@@ -1,7 +1,10 @@
 #version 310 es
 
-layout(binding = 0) uniform Constants_ubo {
+layout(binding = 0, std140) uniform Constants_ubo {
   uint zero;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } constants;
 
 layout(binding = 1, std430) buffer Result_ssbo {
diff --git a/test/tint/bug/tint/998.wgsl.expected.glsl b/test/tint/bug/tint/998.wgsl.expected.glsl
index 30dd9b8..2aa2642 100644
--- a/test/tint/bug/tint/998.wgsl.expected.glsl
+++ b/test/tint/bug/tint/998.wgsl.expected.glsl
@@ -1,7 +1,10 @@
 #version 310 es
 
-layout(binding = 0) uniform Constants_ubo {
+layout(binding = 0, std140) uniform Constants_ubo {
   uint zero;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } constants;
 
 struct Result {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ba1481.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/ba1481.wgsl.expected.glsl
index f610169..7bb878e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ba1481.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ba1481.wgsl.expected.glsl
@@ -11,7 +11,7 @@
   uint padding;
 };
 
-layout(binding = 2) uniform ExternalTextureParams_ubo {
+layout(binding = 2, std140) uniform ExternalTextureParams_ubo {
   uint numPlanes;
   uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
@@ -52,7 +52,7 @@
   uint padding;
 };
 
-layout(binding = 2) uniform ExternalTextureParams_ubo {
+layout(binding = 2, std140) uniform ExternalTextureParams_ubo {
   uint numPlanes;
   uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
@@ -87,7 +87,7 @@
   uint padding;
 };
 
-layout(binding = 2) uniform ExternalTextureParams_ubo {
+layout(binding = 2, std140) uniform ExternalTextureParams_ubo {
   uint numPlanes;
   uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
diff --git a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl
index 2d9af35..2667743 100644
--- a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl
@@ -20,7 +20,7 @@
   mat3 gamutConversionMatrix;
 };
 
-layout(binding = 2) uniform ext_tex_params_block_ubo {
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
   ExternalTextureParams inner;
 } ext_tex_params;
 
@@ -88,7 +88,7 @@
   mat3 gamutConversionMatrix;
 };
 
-layout(binding = 2) uniform ext_tex_params_block_ubo {
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
   ExternalTextureParams inner;
 } ext_tex_params;
 
@@ -150,7 +150,7 @@
   mat3 gamutConversionMatrix;
 };
 
-layout(binding = 2) uniform ext_tex_params_block_ubo {
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
   ExternalTextureParams inner;
 } ext_tex_params;
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.glsl
index 63c387f..e90a09d 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.glsl
@@ -20,7 +20,7 @@
   mat3 gamutConversionMatrix;
 };
 
-layout(binding = 3) uniform ext_tex_params_block_ubo {
+layout(binding = 3, std140) uniform ext_tex_params_block_ubo {
   ExternalTextureParams inner;
 } ext_tex_params;
 
@@ -89,7 +89,7 @@
   mat3 gamutConversionMatrix;
 };
 
-layout(binding = 3) uniform ext_tex_params_block_ubo {
+layout(binding = 3, std140) uniform ext_tex_params_block_ubo {
   ExternalTextureParams inner;
 } ext_tex_params;
 
@@ -152,7 +152,7 @@
   mat3 gamutConversionMatrix;
 };
 
-layout(binding = 3) uniform ext_tex_params_block_ubo {
+layout(binding = 3, std140) uniform ext_tex_params_block_ubo {
   ExternalTextureParams inner;
 } ext_tex_params;
 
diff --git a/test/tint/builtins/gen/var/textureDimensions/ba1481.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/ba1481.wgsl.expected.glsl
index f610169..7bb878e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ba1481.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ba1481.wgsl.expected.glsl
@@ -11,7 +11,7 @@
   uint padding;
 };
 
-layout(binding = 2) uniform ExternalTextureParams_ubo {
+layout(binding = 2, std140) uniform ExternalTextureParams_ubo {
   uint numPlanes;
   uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
@@ -52,7 +52,7 @@
   uint padding;
 };
 
-layout(binding = 2) uniform ExternalTextureParams_ubo {
+layout(binding = 2, std140) uniform ExternalTextureParams_ubo {
   uint numPlanes;
   uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
@@ -87,7 +87,7 @@
   uint padding;
 };
 
-layout(binding = 2) uniform ExternalTextureParams_ubo {
+layout(binding = 2, std140) uniform ExternalTextureParams_ubo {
   uint numPlanes;
   uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
diff --git a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl
index 0debae1..e81af14 100644
--- a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl
@@ -20,7 +20,7 @@
   mat3 gamutConversionMatrix;
 };
 
-layout(binding = 2) uniform ext_tex_params_block_ubo {
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
   ExternalTextureParams inner;
 } ext_tex_params;
 
@@ -89,7 +89,7 @@
   mat3 gamutConversionMatrix;
 };
 
-layout(binding = 2) uniform ext_tex_params_block_ubo {
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
   ExternalTextureParams inner;
 } ext_tex_params;
 
@@ -152,7 +152,7 @@
   mat3 gamutConversionMatrix;
 };
 
-layout(binding = 2) uniform ext_tex_params_block_ubo {
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
   ExternalTextureParams inner;
 } ext_tex_params;
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.glsl
index 1a5bb9a..168f660 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.glsl
@@ -20,7 +20,7 @@
   mat3 gamutConversionMatrix;
 };
 
-layout(binding = 3) uniform ext_tex_params_block_ubo {
+layout(binding = 3, std140) uniform ext_tex_params_block_ubo {
   ExternalTextureParams inner;
 } ext_tex_params;
 
@@ -90,7 +90,7 @@
   mat3 gamutConversionMatrix;
 };
 
-layout(binding = 3) uniform ext_tex_params_block_ubo {
+layout(binding = 3, std140) uniform ext_tex_params_block_ubo {
   ExternalTextureParams inner;
 } ext_tex_params;
 
@@ -154,7 +154,7 @@
   mat3 gamutConversionMatrix;
 };
 
-layout(binding = 3) uniform ext_tex_params_block_ubo {
+layout(binding = 3, std140) uniform ext_tex_params_block_ubo {
   ExternalTextureParams inner;
 } ext_tex_params;
 
diff --git a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.glsl b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.glsl
index 47f9c0a..2a7cdf6 100644
--- a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.glsl
+++ b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.glsl
@@ -20,7 +20,7 @@
   mat3 gamutConversionMatrix;
 };
 
-layout(binding = 2) uniform ext_tex_params_block_ubo {
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
   ExternalTextureParams inner;
 } ext_tex_params;
 
@@ -92,7 +92,7 @@
   mat3 gamutConversionMatrix;
 };
 
-layout(binding = 2) uniform ext_tex_params_block_ubo {
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
   ExternalTextureParams inner;
 } ext_tex_params;
 
@@ -158,7 +158,7 @@
   mat3 gamutConversionMatrix;
 };
 
-layout(binding = 2) uniform ext_tex_params_block_ubo {
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
   ExternalTextureParams inner;
 } ext_tex_params;
 
diff --git a/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.glsl
index c2ceb0a..8193622 100644
--- a/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.glsl
@@ -6,11 +6,14 @@
   vec3 vector;
 };
 
-layout(binding = 0) uniform S_std140_ubo {
+layout(binding = 0, std140) uniform S_std140_ubo {
   vec2 matrix_0;
   vec2 matrix_1;
   vec2 matrix_2;
+  uint pad;
+  uint pad_1;
   vec3 vector;
+  uint pad_2;
 } data;
 
 mat3x2 load_data_matrix() {
diff --git a/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.glsl
index b5481e4..f8f1b37 100644
--- a/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.glsl
@@ -1,9 +1,10 @@
 #version 310 es
 precision mediump float;
 
-layout(binding = 0) uniform S_ubo {
+layout(binding = 0, std140) uniform S_ubo {
   mat3 matrix;
   vec3 vector;
+  uint pad;
 } data;
 
 void tint_symbol() {
diff --git a/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.glsl
index 8059407..1d17cf7 100644
--- a/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.glsl
@@ -1,9 +1,10 @@
 #version 310 es
 precision mediump float;
 
-layout(binding = 0) uniform S_ubo {
+layout(binding = 0, std140) uniform S_ubo {
   mat3 matrix;
   vec3 vector;
+  uint pad;
 } data;
 
 void tint_symbol() {
diff --git a/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.glsl
index 26960f6..149b5e0 100644
--- a/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.glsl
@@ -1,9 +1,10 @@
 #version 310 es
 precision mediump float;
 
-layout(binding = 0) uniform S_ubo {
+layout(binding = 0, std140) uniform S_ubo {
   mat4x3 matrix;
   vec3 vector;
+  uint pad;
 } data;
 
 void tint_symbol() {
diff --git a/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.glsl b/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.glsl
index 9f4cd7d..e72cd13 100644
--- a/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.glsl
@@ -4,8 +4,9 @@
 void unused_entry_point() {
   return;
 }
-layout(binding = 0) uniform S_ubo {
+layout(binding = 0, std140) uniform S_ubo {
   vec3 v;
+  uint pad;
 } U;
 
 void f() {
diff --git a/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.glsl b/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.glsl
index ce0631d..865c502 100644
--- a/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.glsl
@@ -4,8 +4,9 @@
 void unused_entry_point() {
   return;
 }
-layout(binding = 0) uniform S_ubo {
+layout(binding = 0, std140) uniform S_ubo {
   ivec3 v;
+  uint pad;
 } U;
 
 void f() {
diff --git a/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.glsl b/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.glsl
index 435e001..3d91f73 100644
--- a/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.glsl
@@ -4,8 +4,9 @@
 void unused_entry_point() {
   return;
 }
-layout(binding = 0) uniform S_ubo {
+layout(binding = 0, std140) uniform S_ubo {
   uvec3 v;
+  uint pad;
 } U;
 
 void f() {
diff --git a/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.glsl b/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.glsl
index 5bec520b..919f441 100644
--- a/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.glsl
@@ -6,6 +6,7 @@
 }
 layout(binding = 0, std430) buffer S_ssbo {
   vec3 v;
+  uint pad;
 } U;
 
 void f() {
diff --git a/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.glsl b/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.glsl
index ab987b2..2318c7c 100644
--- a/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.glsl
@@ -6,6 +6,7 @@
 }
 layout(binding = 0, std430) buffer S_ssbo {
   ivec3 v;
+  uint pad;
 } U;
 
 void f() {
diff --git a/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.glsl b/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.glsl
index 6481d65..ee0d4c6 100644
--- a/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.glsl
@@ -6,6 +6,7 @@
 }
 layout(binding = 0, std430) buffer S_ssbo {
   uvec3 v;
+  uint pad;
 } U;
 
 void f() {
diff --git a/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.glsl b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.glsl
index b439134..78de6f7 100644
--- a/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.glsl
+++ b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.glsl
@@ -2,6 +2,8 @@
 
 struct strided_arr {
   vec2 el;
+  uint pad;
+  uint pad_1;
 };
 
 layout(binding = 0, std430) buffer SSBO_ssbo {
@@ -13,8 +15,8 @@
 }
 
 strided_arr[2] mat2x2_stride_16_to_arr(mat2 m) {
-  strided_arr tint_symbol_1 = strided_arr(m[0u]);
-  strided_arr tint_symbol_2 = strided_arr(m[1u]);
+  strided_arr tint_symbol_1 = strided_arr(m[0u], 0u, 0u);
+  strided_arr tint_symbol_2 = strided_arr(m[1u], 0u, 0u);
   strided_arr tint_symbol_3[2] = strided_arr[2](tint_symbol_1, tint_symbol_2);
   return tint_symbol_3;
 }
diff --git a/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.glsl b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.glsl
index b259bfb..3fbb91e 100644
--- a/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.glsl
+++ b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.glsl
@@ -1,7 +1,10 @@
 #version 310 es
 
-layout(binding = 0) uniform S_ubo {
+layout(binding = 0, std140) uniform S_ubo {
   int a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } v;
 
 void tint_symbol() {
diff --git a/test/tint/samples/compute_boids.wgsl.expected.glsl b/test/tint/samples/compute_boids.wgsl.expected.glsl
index 408cf55..9e55311 100644
--- a/test/tint/samples/compute_boids.wgsl.expected.glsl
+++ b/test/tint/samples/compute_boids.wgsl.expected.glsl
@@ -75,7 +75,7 @@
   vec2 vel;
 };
 
-layout(binding = 0) uniform SimParams_ubo {
+layout(binding = 0, std140) uniform SimParams_ubo {
   float deltaT;
   float rule1Distance;
   float rule2Distance;
@@ -83,6 +83,7 @@
   float rule1Scale;
   float rule2Scale;
   float rule3Scale;
+  uint pad;
 } params;
 
 layout(binding = 1, std430) buffer Particles_ssbo {
diff --git a/test/tint/samples/cube.wgsl.expected.glsl b/test/tint/samples/cube.wgsl.expected.glsl
index 442e404..4526aa7 100644
--- a/test/tint/samples/cube.wgsl.expected.glsl
+++ b/test/tint/samples/cube.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 layout(location = 0) in vec4 cur_position_1;
 layout(location = 1) in vec4 color_1;
 layout(location = 0) out vec4 vtxFragColor_1;
-layout(binding = 0) uniform Uniforms_ubo {
+layout(binding = 0, std140) uniform Uniforms_ubo {
   mat4 modelViewProjectionMatrix;
 } uniforms;
 
diff --git a/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.glsl b/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.glsl
index 325570b..2726342 100644
--- a/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.glsl
+++ b/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.glsl
@@ -6,7 +6,65 @@
 struct S {
   float f;
   uint u;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
+  uint pad_3;
+  uint pad_4;
+  uint pad_5;
+  uint pad_6;
+  uint pad_7;
+  uint pad_8;
+  uint pad_9;
+  uint pad_10;
+  uint pad_11;
+  uint pad_12;
+  uint pad_13;
+  uint pad_14;
+  uint pad_15;
+  uint pad_16;
+  uint pad_17;
+  uint pad_18;
+  uint pad_19;
+  uint pad_20;
+  uint pad_21;
+  uint pad_22;
+  uint pad_23;
+  uint pad_24;
+  uint pad_25;
+  uint pad_26;
+  uint pad_27;
+  uint pad_28;
+  uint pad_29;
   vec4 v;
+  uint pad_30;
+  uint pad_31;
+  uint pad_32;
+  uint pad_33;
+  uint pad_34;
+  uint pad_35;
+  uint pad_36;
+  uint pad_37;
+  uint pad_38;
+  uint pad_39;
+  uint pad_40;
+  uint pad_41;
+  uint pad_42;
+  uint pad_43;
+  uint pad_44;
+  uint pad_45;
+  uint pad_46;
+  uint pad_47;
+  uint pad_48;
+  uint pad_49;
+  uint pad_50;
+  uint pad_51;
+  uint pad_52;
+  uint pad_53;
+  uint pad_54;
+  uint pad_55;
+  uint pad_56;
+  uint pad_57;
 };
 
 layout(binding = 0, std430) buffer tint_symbol_block_ssbo {
@@ -21,7 +79,7 @@
 }
 
 void main() {
-  S tint_symbol_2 = S(f_1, u_1, gl_FragCoord);
+  S tint_symbol_2 = S(f_1, u_1, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, gl_FragCoord, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u);
   frag_main(tint_symbol_2);
   return;
 }
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.glsl
index 359938c..f5130ac 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.glsl
@@ -8,8 +8,11 @@
   InnerS a1[8];
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.glsl
index 9ef360b..81900b9 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.glsl
@@ -8,8 +8,11 @@
   InnerS a1[8];
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.glsl
index 49aff5d..39960c3 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.glsl
@@ -8,8 +8,11 @@
   InnerS a1[8];
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.glsl
index 4505b85..4b1fbf9 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.glsl
@@ -18,9 +18,11 @@
   return nextIndex;
 }
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
   uint j;
+  uint pad;
+  uint pad_1;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.glsl
index 1b59df8..f617713 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.glsl
@@ -8,8 +8,11 @@
   InnerS a1[8];
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.glsl
index 01c4ad2..c636cfd 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.glsl
@@ -8,9 +8,11 @@
   InnerS a1[8][8];
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
   uint j;
+  uint pad;
+  uint pad_1;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.glsl
index af08fd8..46ad319 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.glsl
@@ -12,8 +12,11 @@
   S1 a1[8];
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.glsl
index 2951c8f..ae7e1f6 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.glsl
@@ -12,9 +12,11 @@
   S1 a1[8];
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
   uint j;
+  uint pad;
+  uint pad_1;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.glsl
index 23b760d..3ad5adb 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.glsl
@@ -4,8 +4,11 @@
   int v;
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } uniforms;
 
 layout(binding = 0, std430) buffer OuterS_ssbo {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.glsl
index 2416194..9b35005 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.glsl
@@ -8,9 +8,11 @@
   InnerS a2[8];
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
   uint j;
+  uint pad;
+  uint pad_1;
 } uniforms;
 
 layout(binding = 0, std430) buffer OuterS_ssbo {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.glsl
index 9211926..049e650 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.glsl
@@ -4,8 +4,11 @@
   mat2x4 m1;
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.glsl
index 6334c1f..6a2e306 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.glsl
@@ -9,8 +9,11 @@
   InnerS a2[8];
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.glsl
index c33dcc4..02e5a52 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.glsl
@@ -12,8 +12,11 @@
   S1 s2;
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.glsl
index fb6df14..b2fc18c 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.glsl
@@ -4,8 +4,11 @@
   vec3 v1;
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.glsl
index 35c1d85..d8898da 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.glsl
@@ -4,8 +4,11 @@
   uint a1[8];
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } uniforms;
 
 uint f(uint i) {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.glsl
index 08a5f16..25859a3 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.glsl
@@ -8,8 +8,11 @@
   InnerS a1[8];
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } uniforms;
 
 void tint_symbol() {
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.glsl
index dd49ae7..5045e6a 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.glsl
@@ -8,8 +8,11 @@
   InnerS a1[8];
 };
 
-layout(binding = 4) uniform Uniforms_ubo {
+layout(binding = 4, std140) uniform Uniforms_ubo {
   uint i;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } uniforms;
 
 void f(inout OuterS p) {
diff --git a/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.glsl b/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.glsl
index 15769ce..9d861c5 100644
--- a/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.glsl
+++ b/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.glsl
@@ -1,7 +1,10 @@
 #version 310 es
 
-layout(binding = 0) uniform S_ubo {
+layout(binding = 0, std140) uniform S_ubo {
   int i;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
 } u;
 
 void tint_symbol() {
diff --git a/test/tint/statements/compound_assign/for_loop.wgsl.expected.glsl b/test/tint/statements/compound_assign/for_loop.wgsl.expected.glsl
index daad909..c62965a 100644
--- a/test/tint/statements/compound_assign/for_loop.wgsl.expected.glsl
+++ b/test/tint/statements/compound_assign/for_loop.wgsl.expected.glsl
@@ -6,6 +6,9 @@
 }
 layout(binding = 0, std430) buffer S_ssbo {
   int a;
+  uint pad;
+  uint pad_1;
+  uint pad_2;
   vec4 b;
   mat2 c;
 } v;