[glsl][ir] Add padding to inline structs
The inline struct emission follows a different path from the non-inline,
make sure inline structs are also padded.
Bug: 42251044
Change-Id: Ib7cbb113ec16dc722601485edad3fe1a4fadcfbf
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/210094
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/glsl/writer/access_test.cc b/src/tint/lang/glsl/writer/access_test.cc
index 3d24953..a7a9ad6 100644
--- a/src/tint/lang/glsl/writer/access_test.cc
+++ b/src/tint/lang/glsl/writer/access_test.cc
@@ -979,6 +979,7 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
} v_1;
void main() {
diff --git a/src/tint/lang/glsl/writer/printer/printer.cc b/src/tint/lang/glsl/writer/printer/printer.cc
index d8e1991..5ce9bf1 100644
--- a/src/tint/lang/glsl/writer/printer/printer.cc
+++ b/src/tint/lang/glsl/writer/printer/printer.cc
@@ -661,25 +661,12 @@
TINT_ICE_ON_NO_MATCH);
}
- void EmitStructType(const core::type::Struct* str) {
- if (!emitted_structs_.Add(str)) {
- return;
- }
-
- // This does not append directly to the preamble because a struct may require other
- // structs to get emitted before it. So, the struct emits into a temporary text buffer, then
- // anything it depends on will emit to the preamble first, and then it copies the text
- // buffer into the preamble.
- TextBuffer str_buf;
- Line(&str_buf) << "\n" << "struct " << StructName(str) << " {";
-
+ void EmitStructMembers(TextBuffer& str_buf, const core::type::Struct* str) {
bool is_host_shareable = host_shareable_structs_.Contains(str);
-
Vector<std::optional<uint32_t>, 4> new_struct_to_old;
auto add_padding = [&](uint32_t size) {
auto pad_size = size / 4;
-
for (size_t i = 0; i < pad_size; ++i) {
std::string name;
do {
@@ -691,8 +678,6 @@
}
};
- str_buf.IncrementIndent();
-
uint32_t glsl_offset = 0;
for (auto* mem : str->Members()) {
auto out = Line(&str_buf);
@@ -733,14 +718,31 @@
add_padding(str->Size() - glsl_offset);
}
- str_buf.DecrementIndent();
- Line(&str_buf) << "};";
-
// If the lengths differ then we've added padding, so we need to handle it when constructing
// later.
if (new_struct_to_old.Length() != str->Members().Length()) {
struct_to_padding_struct_ids_.Add(str, new_struct_to_old);
}
+ }
+
+ void EmitStructType(const core::type::Struct* str) {
+ if (!emitted_structs_.Add(str)) {
+ return;
+ }
+
+ // This does not append directly to the preamble because a struct may require other
+ // structs to get emitted before it. So, the struct emits into a temporary text buffer, then
+ // anything it depends on will emit to the preamble first, and then it copies the text
+ // buffer into the preamble.
+ TextBuffer str_buf;
+ Line(&str_buf) << "\n" << "struct " << StructName(str) << " {";
+
+ str_buf.IncrementIndent();
+
+ EmitStructMembers(str_buf, str);
+
+ str_buf.DecrementIndent();
+ Line(&str_buf) << "};";
preamble_buffer_.Append(str_buf);
}
@@ -1042,11 +1044,9 @@
{
ScopedIndent si(current_buffer_);
- for (auto* mem : str->Members()) {
- auto out = Line();
- EmitTypeAndName(out, mem->Type(), mem->Name().Name());
- out << ";";
- }
+ TextBuffer str_buf;
+ EmitStructMembers(str_buf, str);
+ current_buffer_->Append(str_buf);
}
Line() << "} " << name << ";";
diff --git a/src/tint/lang/glsl/writer/type_test.cc b/src/tint/lang/glsl/writer/type_test.cc
index 9ce6a97..83a894c 100644
--- a/src/tint/lang/glsl/writer/type_test.cc
+++ b/src/tint/lang/glsl/writer/type_test.cc
@@ -1070,5 +1070,36 @@
GlslStorageTextureData{core::type::TextureDimension::kCubeArray, core::Access::kReadWrite,
TextureDataType::kU32, "uimageCubeArray"}));
+TEST_F(GlslWriterTest, EmitType_PadInlineStruct) {
+ Vector members{ty.Get<core::type::StructMember>(
+ b.ir.symbols.New("padding"), ty.u32(), /* index */ 0u,
+ /* offset */ 0u, /* align */ 4u, /* size */ 20u, core::IOAttributes{}),
+ ty.Get<core::type::StructMember>(
+ b.ir.symbols.New("arr"), ty.array<u32>(), /* index */ 1u,
+ /* offset */ 20u, /* align */ 4u, /* size */ 32u, core::IOAttributes{})};
+
+ auto* S = ty.Struct(mod.symbols.New("S"), std::move(members));
+
+ auto* var = b.Var("v", storage, S, core::Access::kReadWrite);
+ var->SetBindingPoint(0, 0);
+ b.ir.root_block->Append(var);
+
+ ASSERT_TRUE(Generate()) << err_ << output_.glsl;
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+layout(binding = 0, std430)
+buffer S_1_ssbo {
+ uint padding;
+ uint tint_pad;
+ uint tint_pad_1;
+ uint tint_pad_2;
+ uint tint_pad_3;
+ uint arr[];
+} v;
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
+)");
+}
+
} // namespace
} // namespace tint::glsl::writer
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 84d8be9..528403f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -3,6 +3,7 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
} v;
int counter = 0;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.glsl
index c6724b7..d830130 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.glsl
@@ -3,6 +3,7 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
} v;
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.glsl
index 7f90d41..4303691 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.glsl
@@ -3,6 +3,7 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
} v;
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.glsl
index c3c797e..396ed4f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.glsl
@@ -3,6 +3,7 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
} v_1;
void a(mat2x3 m) {
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.glsl
index 39e5856..141d373 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.glsl
@@ -3,6 +3,7 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
} v;
mat2x3 p = mat2x3(vec3(0.0f), vec3(0.0f));
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_storage.wgsl.expected.ir.glsl
index f5c26a4..655dffa 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_storage.wgsl.expected.ir.glsl
@@ -3,6 +3,7 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
} v;
layout(binding = 1, std430)
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_workgroup.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_workgroup.wgsl.expected.ir.glsl
index 445bb35..114c5d6 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_workgroup.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_workgroup.wgsl.expected.ir.glsl
@@ -3,6 +3,7 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
} v;
shared mat2x3 w;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index 8ce9705..78711c8 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -3,7 +3,9 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
+ uint tint_pad_1;
vec3 tint_symbol_col2;
} v;
int counter = 0;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.glsl
index 8441f55..9a0c261 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.glsl
@@ -3,7 +3,9 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
+ uint tint_pad_1;
vec3 tint_symbol_col2;
} v;
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.glsl
index 3861744..28bc43c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.glsl
@@ -3,7 +3,9 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
+ uint tint_pad_1;
vec3 tint_symbol_col2;
} v;
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.glsl
index ce9d2d4..79b3378 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.glsl
@@ -3,7 +3,9 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
+ uint tint_pad_1;
vec3 tint_symbol_col2;
} v_1;
void a(mat3 m) {
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.glsl
index e32aa4a..463b654 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.glsl
@@ -3,7 +3,9 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
+ uint tint_pad_1;
vec3 tint_symbol_col2;
} v;
mat3 p = mat3(vec3(0.0f), vec3(0.0f), vec3(0.0f));
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_storage.wgsl.expected.ir.glsl
index fc229e2..562c47e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_storage.wgsl.expected.ir.glsl
@@ -3,7 +3,9 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
+ uint tint_pad_1;
vec3 tint_symbol_col2;
} v;
layout(binding = 1, std430)
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_workgroup.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_workgroup.wgsl.expected.ir.glsl
index 6cfa424..d8241a0 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_workgroup.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_workgroup.wgsl.expected.ir.glsl
@@ -3,7 +3,9 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
+ uint tint_pad_1;
vec3 tint_symbol_col2;
} v;
shared mat3 w;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
index d6a2adb..d5e7138 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.glsl
@@ -3,8 +3,11 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
+ uint tint_pad_1;
vec3 tint_symbol_col2;
+ uint tint_pad_2;
vec3 tint_symbol_col3;
} v;
int counter = 0;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.glsl
index 186cf0d..f4e6fb7 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.glsl
@@ -3,8 +3,11 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
+ uint tint_pad_1;
vec3 tint_symbol_col2;
+ uint tint_pad_2;
vec3 tint_symbol_col3;
} v;
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.glsl
index 65524fb..8b8520c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.glsl
@@ -3,8 +3,11 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
+ uint tint_pad_1;
vec3 tint_symbol_col2;
+ uint tint_pad_2;
vec3 tint_symbol_col3;
} v;
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.glsl
index 876d6bb..7dadf06 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.glsl
@@ -3,8 +3,11 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
+ uint tint_pad_1;
vec3 tint_symbol_col2;
+ uint tint_pad_2;
vec3 tint_symbol_col3;
} v_1;
void a(mat4x3 m) {
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.glsl
index 21725f1..2999953 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.glsl
@@ -3,8 +3,11 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
+ uint tint_pad_1;
vec3 tint_symbol_col2;
+ uint tint_pad_2;
vec3 tint_symbol_col3;
} v;
mat4x3 p = mat4x3(vec3(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f));
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_storage.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_storage.wgsl.expected.ir.glsl
index fa97693f..039c91d 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_storage.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_storage.wgsl.expected.ir.glsl
@@ -3,8 +3,11 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
+ uint tint_pad_1;
vec3 tint_symbol_col2;
+ uint tint_pad_2;
vec3 tint_symbol_col3;
} v;
layout(binding = 1, std430)
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_workgroup.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_workgroup.wgsl.expected.ir.glsl
index eb841d4..c0f583b 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_workgroup.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_workgroup.wgsl.expected.ir.glsl
@@ -3,8 +3,11 @@
layout(binding = 0, std140)
uniform tint_symbol_1_std140_1_ubo {
vec3 tint_symbol_col0;
+ uint tint_pad;
vec3 tint_symbol_col1;
+ uint tint_pad_1;
vec3 tint_symbol_col2;
+ uint tint_pad_2;
vec3 tint_symbol_col3;
} v;
shared mat4x3 w;
diff --git a/test/tint/buffer/uniform/types/mat2x3_f32.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/types/mat2x3_f32.wgsl.expected.ir.glsl
index 26a17b8..a4f1c2d 100644
--- a/test/tint/buffer/uniform/types/mat2x3_f32.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/types/mat2x3_f32.wgsl.expected.ir.glsl
@@ -3,6 +3,7 @@
layout(binding = 0, std140)
uniform tint_symbol_2_std140_1_ubo {
vec3 tint_symbol_1_col0;
+ uint tint_pad;
vec3 tint_symbol_1_col1;
} v;
layout(binding = 1, std430)
diff --git a/test/tint/buffer/uniform/types/mat3x3_f32.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/types/mat3x3_f32.wgsl.expected.ir.glsl
index 4eb670f..3d92efc 100644
--- a/test/tint/buffer/uniform/types/mat3x3_f32.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/types/mat3x3_f32.wgsl.expected.ir.glsl
@@ -3,7 +3,9 @@
layout(binding = 0, std140)
uniform tint_symbol_2_std140_1_ubo {
vec3 tint_symbol_1_col0;
+ uint tint_pad;
vec3 tint_symbol_1_col1;
+ uint tint_pad_1;
vec3 tint_symbol_1_col2;
} v;
layout(binding = 1, std430)
diff --git a/test/tint/buffer/uniform/types/mat4x3_f32.wgsl.expected.ir.glsl b/test/tint/buffer/uniform/types/mat4x3_f32.wgsl.expected.ir.glsl
index 8ce4a72..73d5fc6 100644
--- a/test/tint/buffer/uniform/types/mat4x3_f32.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/uniform/types/mat4x3_f32.wgsl.expected.ir.glsl
@@ -3,8 +3,11 @@
layout(binding = 0, std140)
uniform tint_symbol_2_std140_1_ubo {
vec3 tint_symbol_1_col0;
+ uint tint_pad;
vec3 tint_symbol_1_col1;
+ uint tint_pad_1;
vec3 tint_symbol_1_col2;
+ uint tint_pad_2;
vec3 tint_symbol_1_col3;
} v;
layout(binding = 1, std430)