diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn index f53b52019b..ea32d7898e 100644 --- a/src/tint/BUILD.gn +++ b/src/tint/BUILD.gn @@ -390,9 +390,9 @@ libtint_source_set("libtint_core_all_src") { "program_builder.h", "program_id.cc", "program_id.h", - "reflection.h", "reader/reader.cc", "reader/reader.h", + "reflection.h", "resolver/const_eval.cc", "resolver/const_eval.h", "resolver/ctor_conv_intrinsic.cc", @@ -470,10 +470,10 @@ libtint_source_set("libtint_core_all_src") { "text/unicode.cc", "text/unicode.h", "traits.h", + "transform/add_block_attribute.cc", + "transform/add_block_attribute.h", "transform/add_empty_entry_point.cc", "transform/add_empty_entry_point.h", - "transform/add_spirv_block_attribute.cc", - "transform/add_spirv_block_attribute.h", "transform/array_length_from_uniform.cc", "transform/array_length_from_uniform.h", "transform/binding_remapper.cc", @@ -1186,8 +1186,8 @@ if (tint_build_unittests) { tint_unittests_source_set("tint_unittests_transform_src") { sources = [ + "transform/add_block_attribute_test.cc", "transform/add_empty_entry_point_test.cc", - "transform/add_spirv_block_attribute_test.cc", "transform/array_length_from_uniform_test.cc", "transform/binding_remapper_test.cc", "transform/builtin_polyfill_test.cc", diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt index 3e0c5d1b26..08212d38b8 100644 --- a/src/tint/CMakeLists.txt +++ b/src/tint/CMakeLists.txt @@ -384,8 +384,8 @@ set(TINT_LIB_SRCS traits.h transform/add_empty_entry_point.cc transform/add_empty_entry_point.h - transform/add_spirv_block_attribute.cc - transform/add_spirv_block_attribute.h + transform/add_block_attribute.cc + transform/add_block_attribute.h transform/array_length_from_uniform.cc transform/array_length_from_uniform.h transform/binding_remapper.cc @@ -1102,7 +1102,7 @@ if(TINT_BUILD_TESTS) if(${TINT_BUILD_WGSL_READER} AND ${TINT_BUILD_WGSL_WRITER}) list(APPEND TINT_TEST_SRCS transform/add_empty_entry_point_test.cc - transform/add_spirv_block_attribute_test.cc + transform/add_block_attribute_test.cc transform/array_length_from_uniform_test.cc transform/binding_remapper_test.cc transform/builtin_polyfill_test.cc diff --git a/src/tint/ast/struct_test.cc b/src/tint/ast/struct_test.cc index 53ec9c8c6c..29b9e9a366 100644 --- a/src/tint/ast/struct_test.cc +++ b/src/tint/ast/struct_test.cc @@ -26,13 +26,13 @@ #include "src/tint/ast/texture.h" #include "src/tint/ast/u32.h" #include "src/tint/ast/vector.h" -#include "src/tint/transform/add_spirv_block_attribute.h" +#include "src/tint/transform/add_block_attribute.h" namespace tint::ast { namespace { using AstStructTest = TestHelper; -using SpirvBlockAttribute = transform::AddSpirvBlockAttribute::SpirvBlockAttribute; +using BlockAttribute = transform::AddBlockAttribute::BlockAttribute; TEST_F(AstStructTest, Creation) { auto name = Sym("s"); @@ -51,12 +51,12 @@ TEST_F(AstStructTest, Creation_WithAttributes) { auto* s = create(name, utils::Vector{Member("a", ty.i32())}, utils::Vector{ - ASTNodes().Create(ID(), AllocateNodeID()), + ASTNodes().Create(ID(), AllocateNodeID()), }); EXPECT_EQ(s->name, name); EXPECT_EQ(s->members.Length(), 1u); ASSERT_EQ(s->attributes.Length(), 1u); - EXPECT_TRUE(s->attributes[0]->Is()); + EXPECT_TRUE(s->attributes[0]->Is()); EXPECT_EQ(s->source.range.begin.line, 0u); EXPECT_EQ(s->source.range.begin.column, 0u); EXPECT_EQ(s->source.range.end.line, 0u); @@ -65,14 +65,14 @@ TEST_F(AstStructTest, Creation_WithAttributes) { TEST_F(AstStructTest, CreationWithSourceAndAttributes) { auto name = Sym("s"); - auto* s = create( - Source{Source::Range{Source::Location{27, 4}, Source::Location{27, 8}}}, name, - utils::Vector{Member("a", ty.i32())}, - utils::Vector{ASTNodes().Create(ID(), AllocateNodeID())}); + auto* s = + create(Source{Source::Range{Source::Location{27, 4}, Source::Location{27, 8}}}, + name, utils::Vector{Member("a", ty.i32())}, + utils::Vector{ASTNodes().Create(ID(), AllocateNodeID())}); EXPECT_EQ(s->name, name); EXPECT_EQ(s->members.Length(), 1u); ASSERT_EQ(s->attributes.Length(), 1u); - EXPECT_TRUE(s->attributes[0]->Is()); + EXPECT_TRUE(s->attributes[0]->Is()); EXPECT_EQ(s->source.range.begin.line, 27u); EXPECT_EQ(s->source.range.begin.column, 4u); EXPECT_EQ(s->source.range.end.line, 27u); @@ -115,9 +115,9 @@ TEST_F(AstStructTest, Assert_DifferentProgramID_Attribute) { { ProgramBuilder b1; ProgramBuilder b2; - b1.create(b1.Sym("S"), utils::Vector{b1.Member("a", b1.ty.i32())}, - utils::Vector{b2.ASTNodes().Create( - b2.ID(), b2.AllocateNodeID())}); + b1.create( + b1.Sym("S"), utils::Vector{b1.Member("a", b1.ty.i32())}, + utils::Vector{b2.ASTNodes().Create(b2.ID(), b2.AllocateNodeID())}); }, "internal compiler error"); } diff --git a/src/tint/resolver/attribute_validation_test.cc b/src/tint/resolver/attribute_validation_test.cc index 0180589fd6..7f573a8e76 100644 --- a/src/tint/resolver/attribute_validation_test.cc +++ b/src/tint/resolver/attribute_validation_test.cc @@ -15,7 +15,7 @@ #include "src/tint/ast/disable_validation_attribute.h" #include "src/tint/resolver/resolver.h" #include "src/tint/resolver/resolver_test_helper.h" -#include "src/tint/transform/add_spirv_block_attribute.h" +#include "src/tint/transform/add_block_attribute.h" #include "gmock/gmock.h" @@ -557,7 +557,7 @@ TEST_F(EntryPointReturnTypeAttributeTest, DuplicateInternalAttribute) { namespace StructAndStructMemberTests { using StructAttributeTest = TestWithParams; -using SpirvBlockAttribute = transform::AddSpirvBlockAttribute::SpirvBlockAttribute; +using SpirvBlockAttribute = transform::AddBlockAttribute::BlockAttribute; TEST_P(StructAttributeTest, IsValid) { auto& params = GetParam(); diff --git a/src/tint/transform/add_spirv_block_attribute.cc b/src/tint/transform/add_block_attribute.cc similarity index 68% rename from src/tint/transform/add_spirv_block_attribute.cc rename to src/tint/transform/add_block_attribute.cc index 25abdcecc3..619083d856 100644 --- a/src/tint/transform/add_spirv_block_attribute.cc +++ b/src/tint/transform/add_block_attribute.cc @@ -12,8 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "src/tint/transform/add_spirv_block_attribute.h" +#include "src/tint/transform/add_block_attribute.h" +#include #include #include "src/tint/program_builder.h" @@ -21,16 +22,29 @@ #include "src/tint/utils/hashmap.h" #include "src/tint/utils/hashset.h" -TINT_INSTANTIATE_TYPEINFO(tint::transform::AddSpirvBlockAttribute); -TINT_INSTANTIATE_TYPEINFO(tint::transform::AddSpirvBlockAttribute::SpirvBlockAttribute); +TINT_INSTANTIATE_TYPEINFO(tint::transform::AddBlockAttribute); +TINT_INSTANTIATE_TYPEINFO(tint::transform::AddBlockAttribute::BlockAttribute); namespace tint::transform { -AddSpirvBlockAttribute::AddSpirvBlockAttribute() = default; +namespace { -AddSpirvBlockAttribute::~AddSpirvBlockAttribute() = default; +bool IsUsedAsNonBuffer(const std::unordered_set& uses) { + for (auto use : uses) { + if (!ast::IsHostShareable(use)) { + return true; + } + } + return false; +} -void AddSpirvBlockAttribute::Run(CloneContext& ctx, const DataMap&, DataMap&) const { +} // namespace + +AddBlockAttribute::AddBlockAttribute() = default; + +AddBlockAttribute::~AddBlockAttribute() = default; + +void AddBlockAttribute::Run(CloneContext& ctx, const DataMap&, DataMap&) const { auto& sem = ctx.src->Sem(); // Collect the set of structs that are nested in other types. @@ -66,8 +80,10 @@ void AddSpirvBlockAttribute::Run(CloneContext& ctx, const DataMap&, DataMap&) co auto* ty = var->Type()->UnwrapRef(); auto* str = ty->As(); - bool needs_wrapping = !str || // Type is not a structure - nested_structs.Contains(str); // Structure is nested by another type + bool needs_wrapping = + !str || // Type is not a structure + nested_structs.Contains(str) || // Structure is nested by another type + IsUsedAsNonBuffer(str->StorageClassUsage()); // Structure is used as a non-buffer usage if (needs_wrapping) { const char* kMemberName = "inner"; @@ -75,8 +91,8 @@ void AddSpirvBlockAttribute::Run(CloneContext& ctx, const DataMap&, DataMap&) co // This is a non-struct or a struct that is nested somewhere else, so we // need to wrap it first. auto* wrapper = wrapper_structs.GetOrCreate(ty, [&] { - auto* block = ctx.dst->ASTNodes().Create( - ctx.dst->ID(), ctx.dst->AllocateNodeID()); + auto* block = ctx.dst->ASTNodes().Create(ctx.dst->ID(), + ctx.dst->AllocateNodeID()); auto wrapper_name = ctx.src->Symbols().NameFor(global->symbol) + "_block"; auto* ret = ctx.dst->create( ctx.dst->Symbols().New(wrapper_name), @@ -95,8 +111,8 @@ void AddSpirvBlockAttribute::Run(CloneContext& ctx, const DataMap&, DataMap&) co } } else { // Add a block attribute to this struct directly. - auto* block = ctx.dst->ASTNodes().Create( - ctx.dst->ID(), ctx.dst->AllocateNodeID()); + auto* block = ctx.dst->ASTNodes().Create(ctx.dst->ID(), + ctx.dst->AllocateNodeID()); ctx.InsertFront(str->Declaration()->attributes, block); } } @@ -104,16 +120,16 @@ void AddSpirvBlockAttribute::Run(CloneContext& ctx, const DataMap&, DataMap&) co ctx.Clone(); } -AddSpirvBlockAttribute::SpirvBlockAttribute::SpirvBlockAttribute(ProgramID pid, ast::NodeID nid) +AddBlockAttribute::BlockAttribute::BlockAttribute(ProgramID pid, ast::NodeID nid) : Base(pid, nid) {} -AddSpirvBlockAttribute::SpirvBlockAttribute::~SpirvBlockAttribute() = default; -std::string AddSpirvBlockAttribute::SpirvBlockAttribute::InternalName() const { - return "spirv_block"; +AddBlockAttribute::BlockAttribute::~BlockAttribute() = default; +std::string AddBlockAttribute::BlockAttribute::InternalName() const { + return "block"; } -const AddSpirvBlockAttribute::SpirvBlockAttribute* -AddSpirvBlockAttribute::SpirvBlockAttribute::Clone(CloneContext* ctx) const { - return ctx->dst->ASTNodes().Create( +const AddBlockAttribute::BlockAttribute* AddBlockAttribute::BlockAttribute::Clone( + CloneContext* ctx) const { + return ctx->dst->ASTNodes().Create( ctx->dst->ID(), ctx->dst->AllocateNodeID()); } diff --git a/src/tint/transform/add_spirv_block_attribute.h b/src/tint/transform/add_block_attribute.h similarity index 68% rename from src/tint/transform/add_spirv_block_attribute.h rename to src/tint/transform/add_block_attribute.h index 51409c8a23..69dfab5c9b 100644 --- a/src/tint/transform/add_spirv_block_attribute.h +++ b/src/tint/transform/add_block_attribute.h @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef SRC_TINT_TRANSFORM_ADD_SPIRV_BLOCK_ATTRIBUTE_H_ -#define SRC_TINT_TRANSFORM_ADD_SPIRV_BLOCK_ATTRIBUTE_H_ +#ifndef SRC_TINT_TRANSFORM_ADD_BLOCK_ATTRIBUTE_H_ +#define SRC_TINT_TRANSFORM_ADD_BLOCK_ATTRIBUTE_H_ #include @@ -22,23 +22,23 @@ namespace tint::transform { -/// AddSpirvBlockAttribute is a transform that adds an -/// `@internal(spirv_block)` attribute to any structure that is used as the +/// AddBlockAttribute is a transform that adds an +/// `@internal(block)` attribute to any structure that is used as the /// store type of a buffer. If that structure is nested inside another structure /// or an array, then it is wrapped inside another structure which gets the -/// `@internal(spirv_block)` attribute instead. -class AddSpirvBlockAttribute final : public Castable { +/// `@internal(block)` attribute instead. +class AddBlockAttribute final : public Castable { public: - /// SpirvBlockAttribute is an InternalAttribute that is used to decorate a - // structure that needs a SPIR-V block attribute. - class SpirvBlockAttribute final : public Castable { + /// BlockAttribute is an InternalAttribute that is used to decorate a + // structure that is used as a buffer in SPIR-V or GLSL. + class BlockAttribute final : public Castable { public: /// Constructor /// @param program_id the identifier of the program that owns this node /// @param nid the unique node identifier - SpirvBlockAttribute(ProgramID program_id, ast::NodeID nid); + BlockAttribute(ProgramID program_id, ast::NodeID nid); /// Destructor - ~SpirvBlockAttribute() override; + ~BlockAttribute() override; /// @return a short description of the internal attribute which will be /// displayed as `@internal()` @@ -47,14 +47,14 @@ class AddSpirvBlockAttribute final : public Castable #include @@ -22,18 +22,18 @@ namespace tint::transform { namespace { -using AddSpirvBlockAttributeTest = TransformTest; +using AddBlockAttributeTest = TransformTest; -TEST_F(AddSpirvBlockAttributeTest, EmptyModule) { +TEST_F(AddBlockAttributeTest, EmptyModule) { auto* src = ""; auto* expect = ""; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, Noop_UsedForPrivateVar) { +TEST_F(AddBlockAttributeTest, Noop_UsedForPrivateVar) { auto* src = R"( struct S { f : f32, @@ -48,12 +48,12 @@ fn main() { )"; auto* expect = src; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, Noop_UsedForShaderIO) { +TEST_F(AddBlockAttributeTest, Noop_UsedForShaderIO) { auto* src = R"( struct S { @location(0) @@ -67,12 +67,12 @@ fn main() -> S { )"; auto* expect = src; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, BasicScalar) { +TEST_F(AddBlockAttributeTest, BasicScalar) { auto* src = R"( @group(0) @binding(0) var u : f32; @@ -83,7 +83,7 @@ fn main() { } )"; auto* expect = R"( -@internal(spirv_block) +@internal(block) struct u_block { inner : f32, } @@ -96,12 +96,12 @@ fn main() { } )"; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, BasicArray) { +TEST_F(AddBlockAttributeTest, BasicArray) { auto* src = R"( @group(0) @binding(0) var u : array, 4u>; @@ -112,7 +112,7 @@ fn main() { } )"; auto* expect = R"( -@internal(spirv_block) +@internal(block) struct u_block { inner : array, 4u>, } @@ -125,12 +125,12 @@ fn main() { } )"; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, BasicArray_Alias) { +TEST_F(AddBlockAttributeTest, BasicArray_Alias) { auto* src = R"( type Numbers = array, 4u>; @@ -145,7 +145,7 @@ fn main() { auto* expect = R"( type Numbers = array, 4u>; -@internal(spirv_block) +@internal(block) struct u_block { inner : array, 4u>, } @@ -158,12 +158,12 @@ fn main() { } )"; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, BasicStruct_AccessRoot) { +TEST_F(AddBlockAttributeTest, BasicStruct_AccessRoot) { auto* src = R"( struct S { f : f32, @@ -178,25 +178,29 @@ fn main() { } )"; auto* expect = R"( -@internal(spirv_block) struct S { f : f32, } -@group(0) @binding(0) var u : S; +@internal(block) +struct u_block { + inner : S, +} + +@group(0) @binding(0) var u : u_block; @fragment fn main() { - let f = u; + let f = u.inner; } )"; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, BasicStruct_AccessField) { +TEST_F(AddBlockAttributeTest, BasicStruct_AccessField) { auto* src = R"( struct S { f : f32, @@ -211,7 +215,7 @@ fn main() { } )"; auto* expect = R"( -@internal(spirv_block) +@internal(block) struct S { f : f32, } @@ -224,12 +228,12 @@ fn main() { } )"; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, BasicScalar_PushConstant) { +TEST_F(AddBlockAttributeTest, BasicScalar_PushConstant) { auto* src = R"( enable chromium_experimental_push_constant; var u : f32; @@ -242,7 +246,7 @@ fn main() { auto* expect = R"( enable chromium_experimental_push_constant; -@internal(spirv_block) +@internal(block) struct u_block { inner : f32, } @@ -255,12 +259,12 @@ fn main() { } )"; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, BasicStruct_PushConstant) { +TEST_F(AddBlockAttributeTest, BasicStruct_PushConstant) { auto* src = R"( enable chromium_experimental_push_constant; struct S { @@ -276,7 +280,7 @@ fn main() { auto* expect = R"( enable chromium_experimental_push_constant; -@internal(spirv_block) +@internal(block) struct S { f : f32, } @@ -289,12 +293,12 @@ fn main() { } )"; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, Nested_OuterBuffer_InnerNotBuffer) { +TEST_F(AddBlockAttributeTest, Nested_OuterBuffer_InnerNotBuffer) { auto* src = R"( struct Inner { f : f32, @@ -317,7 +321,7 @@ struct Inner { f : f32, } -@internal(spirv_block) +@internal(block) struct Outer { i : Inner, } @@ -330,12 +334,12 @@ fn main() { } )"; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, Nested_OuterBuffer_InnerBuffer) { +TEST_F(AddBlockAttributeTest, Nested_OuterBuffer_InnerBuffer) { auto* src = R"( struct Inner { f : f32, @@ -362,14 +366,14 @@ struct Inner { f : f32, } -@internal(spirv_block) +@internal(block) struct Outer { i : Inner, } @group(0) @binding(0) var u0 : Outer; -@internal(spirv_block) +@internal(block) struct u1_block { inner : Inner, } @@ -383,12 +387,12 @@ fn main() { } )"; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, Nested_OuterNotBuffer_InnerBuffer) { +TEST_F(AddBlockAttributeTest, Nested_OuterNotBuffer_InnerBuffer) { auto* src = R"( struct Inner { f : f32, @@ -420,7 +424,7 @@ struct Outer { var p : Outer; -@internal(spirv_block) +@internal(block) struct u_block { inner : Inner, } @@ -434,12 +438,12 @@ fn main() { } )"; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, Nested_InnerUsedForMultipleBuffers) { +TEST_F(AddBlockAttributeTest, Nested_InnerUsedForMultipleBuffers) { auto* src = R"( struct Inner { f : f32, @@ -470,14 +474,14 @@ struct Inner { f : f32, } -@internal(spirv_block) +@internal(block) struct S { i : Inner, } @group(0) @binding(0) var u0 : S; -@internal(spirv_block) +@internal(block) struct u1_block { inner : Inner, } @@ -494,12 +498,12 @@ fn main() { } )"; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, StructInArray) { +TEST_F(AddBlockAttributeTest, StructInArray) { auto* src = R"( struct S { f : f32, @@ -519,7 +523,7 @@ struct S { f : f32, } -@internal(spirv_block) +@internal(block) struct u_block { inner : S, } @@ -533,12 +537,12 @@ fn main() { } )"; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, StructInArray_MultipleBuffers) { +TEST_F(AddBlockAttributeTest, StructInArray_MultipleBuffers) { auto* src = R"( struct S { f : f32, @@ -562,7 +566,7 @@ struct S { f : f32, } -@internal(spirv_block) +@internal(block) struct u0_block { inner : S, } @@ -579,12 +583,12 @@ fn main() { } )"; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, Aliases_Nested_OuterBuffer_InnerBuffer) { +TEST_F(AddBlockAttributeTest, Aliases_Nested_OuterBuffer_InnerBuffer) { auto* src = R"( struct Inner { f : f32, @@ -617,7 +621,7 @@ struct Inner { type MyInner = Inner; -@internal(spirv_block) +@internal(block) struct Outer { i : MyInner, } @@ -626,7 +630,7 @@ type MyOuter = Outer; @group(0) @binding(0) var u0 : MyOuter; -@internal(spirv_block) +@internal(block) struct u1_block { inner : Inner, } @@ -640,12 +644,12 @@ fn main() { } )"; - auto got = Run(src); + auto got = Run(src); EXPECT_EQ(expect, str(got)); } -TEST_F(AddSpirvBlockAttributeTest, Aliases_Nested_OuterBuffer_InnerBuffer_OutOfOrder) { +TEST_F(AddBlockAttributeTest, Aliases_Nested_OuterBuffer_InnerBuffer_OutOfOrder) { auto* src = R"( @fragment fn main() { @@ -678,7 +682,7 @@ fn main() { let f1 = u1.inner.f; } -@internal(spirv_block) +@internal(block) struct u1_block { inner : Inner, } @@ -691,7 +695,7 @@ type MyInner = Inner; type MyOuter = Outer; -@internal(spirv_block) +@internal(block) struct Outer { i : MyInner, } @@ -701,7 +705,147 @@ struct Inner { } )"; - auto got = Run(src); + auto got = Run(src); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(AddBlockAttributeTest, UniformAndPrivateUsages) { + auto* src = R"( +struct S { + f : f32, +} + +@group(0) @binding(0) var u : S; + +var p : S; + +@fragment +fn main() { + p = u; +} +)"; + auto* expect = R"( +struct S { + f : f32, +} + +@internal(block) +struct u_block { + inner : S, +} + +@group(0) @binding(0) var u : u_block; + +var p : S; + +@fragment +fn main() { + p = u.inner; +} +)"; + + auto got = Run(src); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(AddBlockAttributeTest, StorageAndPrivateUsages) { + auto* src = R"( +struct S { + f : f32, +} + +@group(0) @binding(0) var s : S; + +var p : S; + +@fragment +fn main() { + p = s; + p.f = 1234.0; + s = p; +} +)"; + auto* expect = R"( +struct S { + f : f32, +} + +@internal(block) +struct s_block { + inner : S, +} + +@group(0) @binding(0) var s : s_block; + +var p : S; + +@fragment +fn main() { + p = s.inner; + p.f = 1234.0; + s.inner = p; +} +)"; + + auto got = Run(src); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(AddBlockAttributeTest, StorageAndUniformUsages) { + auto* src = R"( +struct S { + f : f32, +} + +@group(0) @binding(0) var u : S; + +@group(0) @binding(1) var s : S; + +@fragment +fn main() { + s = u; +} +)"; + auto* expect = R"( +@internal(block) @internal(block) +struct S { + f : f32, +} + +@group(0) @binding(0) var u : S; + +@group(0) @binding(1) var s : S; + +@fragment +fn main() { + s = u; +} +)"; + + auto got = Run(src); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(AddBlockAttributeTest, PrivateUsageOnly) { + auto* src = R"( +struct S { + f : f32, +} + +var p : S; + +@fragment +fn main() { + p.f = 4321.0f; +} +)"; + auto* expect = src; + + auto got = Run(src); EXPECT_EQ(expect, str(got)); } diff --git a/src/tint/writer/glsl/generator_impl.cc b/src/tint/writer/glsl/generator_impl.cc index e783b0bd6f..d1261f1a19 100644 --- a/src/tint/writer/glsl/generator_impl.cc +++ b/src/tint/writer/glsl/generator_impl.cc @@ -46,8 +46,8 @@ #include "src/tint/sem/type_constructor.h" #include "src/tint/sem/type_conversion.h" #include "src/tint/sem/variable.h" +#include "src/tint/transform/add_block_attribute.h" #include "src/tint/transform/add_empty_entry_point.h" -#include "src/tint/transform/add_spirv_block_attribute.h" #include "src/tint/transform/binding_remapper.h" #include "src/tint/transform/builtin_polyfill.h" #include "src/tint/transform/canonicalize_entry_point_io.h" @@ -244,7 +244,7 @@ SanitizedResult Sanitize(const Program* in, manager.Add(); manager.Add(); - manager.Add(); + manager.Add(); data.Add( transform::CanonicalizeEntryPointIO::ShaderStyle::kGlsl); @@ -284,18 +284,15 @@ bool GeneratorImpl::Generate() { return false; } } else if (auto* str = decl->As()) { - // Skip emission if the struct contains a runtime-sized array, since its - // only use will be as the store-type of a buffer and we emit those - // elsewhere. - // TODO(crbug.com/tint/1339): We could also avoid emitting any other - // struct that is only used as a buffer store type. - const sem::Struct* sem_str = builder_.Sem().Get(str); - const auto& members = sem_str->Members(); - TINT_ASSERT(Writer, members.size() > 0); - auto* last_member = members[members.size() - 1]; - auto* arr = last_member->Type()->As(); - if (!arr || !arr->IsRuntimeSized()) { - if (!EmitStructType(current_buffer_, sem_str)) { + auto* sem = builder_.Sem().Get(str); + bool has_rt_arr = false; + if (auto* arr = sem->Members().back()->Type()->As()) { + has_rt_arr = arr->IsRuntimeSized(); + } + bool is_block = + ast::HasAttribute(str->attributes); + if (!has_rt_arr && !is_block) { + if (!EmitStructType(current_buffer_, sem)) { return false; } } @@ -1915,7 +1912,7 @@ bool GeneratorImpl::EmitUniformVariable(const ast::Var* var, const sem::Variable if (version_.IsDesktop()) { out << ", std140"; } - out << ") uniform " << UniqueIdentifier(StructName(str)) << " {"; + out << ") uniform " << UniqueIdentifier(StructName(str) + "_ubo") << " {"; } EmitStructMembers(current_buffer_, str, /* emit_offsets */ true); auto name = builder_.Symbols().NameFor(var->symbol); @@ -1934,10 +1931,12 @@ bool GeneratorImpl::EmitStorageVariable(const ast::Var* var, const sem::Variable } auto bp = sem->As()->BindingPoint(); line() << "layout(binding = " << bp.binding << ", std430) buffer " - << UniqueIdentifier(StructName(str)) << " {"; + << UniqueIdentifier(StructName(str) + "_ssbo") << " {"; EmitStructMembers(current_buffer_, str, /* emit_offsets */ true); auto name = builder_.Symbols().NameFor(var->symbol); line() << "} " << name << ";"; + line(); + return true; } diff --git a/src/tint/writer/glsl/generator_impl_function_test.cc b/src/tint/writer/glsl/generator_impl_function_test.cc index 83ba37b277..c388005727 100644 --- a/src/tint/writer/glsl/generator_impl_function_test.cc +++ b/src/tint/writer/glsl/generator_impl_function_test.cc @@ -384,7 +384,7 @@ struct UBO { vec4 coord; }; -layout(binding = 0) uniform UBO_1 { +layout(binding = 0) uniform UBO_ubo { vec4 coord; } ubo; @@ -425,7 +425,7 @@ struct Uniforms { vec4 coord; }; -layout(binding = 0) uniform Uniforms_1 { +layout(binding = 0) uniform Uniforms_ubo { vec4 coord; } uniforms; @@ -462,15 +462,11 @@ TEST_F(GlslGeneratorImplTest_Function, Emit_Attribute_EntryPoint_With_RW_Storage EXPECT_EQ(gen.result(), R"(#version 310 es precision mediump float; -struct Data { - int a; - float b; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { int a; float b; } coord; + void frag_main() { float v = coord.b; return; @@ -510,15 +506,11 @@ TEST_F(GlslGeneratorImplTest_Function, Emit_Attribute_EntryPoint_With_RO_Storage R"(#version 310 es precision mediump float; -struct Data { - int a; - float b; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { int a; float b; } coord; + void frag_main() { float v = coord.b; return; @@ -555,15 +547,11 @@ TEST_F(GlslGeneratorImplTest_Function, Emit_Attribute_EntryPoint_With_WO_Storage EXPECT_EQ(gen.result(), R"(#version 310 es precision mediump float; -struct Data { - int a; - float b; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { int a; float b; } coord; + void frag_main() { coord.b = 2.0f; return; @@ -600,15 +588,11 @@ TEST_F(GlslGeneratorImplTest_Function, Emit_Attribute_EntryPoint_With_StorageBuf EXPECT_EQ(gen.result(), R"(#version 310 es precision mediump float; -struct Data { - int a; - float b; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { int a; float b; } coord; + void frag_main() { coord.b = 2.0f; return; @@ -651,7 +635,7 @@ struct S { float x; }; -layout(binding = 0) uniform S_1 { +layout(binding = 0) uniform S_ubo { float x; } coord; @@ -694,13 +678,10 @@ TEST_F(GlslGeneratorImplTest_Function, Emit_Attribute_Called_By_EntryPoint_With_ R"(#version 310 es precision mediump float; -struct S { - float x; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { float x; } coord; + float sub_func(float param) { return coord.x; } @@ -930,13 +911,10 @@ TEST_F(GlslGeneratorImplTest_Function, Emit_Multiple_EntryPoint_With_Same_Module ASSERT_TRUE(gen.Generate()) << gen.error(); EXPECT_EQ(gen.result(), R"(#version 310 es -struct Data { - float d; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { float d; } data; + void a() { float v = data.d; return; diff --git a/src/tint/writer/glsl/generator_impl_member_accessor_test.cc b/src/tint/writer/glsl/generator_impl_member_accessor_test.cc index 1602068541..b44a11b1e6 100644 --- a/src/tint/writer/glsl/generator_impl_member_accessor_test.cc +++ b/src/tint/writer/glsl/generator_impl_member_accessor_test.cc @@ -277,15 +277,11 @@ TEST_F(GlslGeneratorImplTest_MemberAccessor, StorageBuffer_Store_Matrix_Empty) { R"(#version 310 es precision mediump float; -struct Data { - int a; - mat2x3 b; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { int a; mat2x3 b; } data; + void tint_symbol() { data.b = mat2x3(vec3(0.0f), vec3(0.0f)); } @@ -322,15 +318,11 @@ TEST_F(GlslGeneratorImplTest_MemberAccessor, StorageBuffer_Load_Matrix_Single_El R"(#version 310 es precision mediump float; -struct Data { - float z; - mat4x3 a; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { float z; mat4x3 a; } data; + void tint_symbol() { float x = data.a[2][1]; } @@ -367,15 +359,11 @@ TEST_F(GlslGeneratorImplTest_MemberAccessor, R"(#version 310 es precision mediump float; -struct Data { - float z; - int a[5]; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { float z; int a[5]; } data; + void tint_symbol() { int x = data.a[2]; } @@ -415,15 +403,11 @@ TEST_F(GlslGeneratorImplTest_MemberAccessor, R"(#version 310 es precision mediump float; -struct Data { - float z; - int a[5]; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { float z; int a[5]; } data; + void tint_symbol() { int a = 2; int b = 4; @@ -462,15 +446,11 @@ TEST_F(GlslGeneratorImplTest_MemberAccessor, StorageBuffer_Store_ToArray) { R"(#version 310 es precision mediump float; -struct Data { - float z; - int a[5]; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { float z; int a[5]; } data; + void tint_symbol() { data.a[2] = 2; } @@ -520,13 +500,10 @@ struct Inner { vec3 b; }; -struct Data { - Inner c[4]; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { Inner c[4]; } data; + void tint_symbol() { vec3 x = data.c[2].b; } @@ -578,13 +555,10 @@ struct Inner { vec3 b; }; -struct Data { - Inner c[4]; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { Inner c[4]; } data; + void tint_symbol() { vec2 x = data.c[2].b.xy; } @@ -637,13 +611,10 @@ struct Inner { vec3 b; }; -struct Data { - Inner c[4]; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { Inner c[4]; } data; + void tint_symbol() { float x = data.c[2].b.g; } @@ -695,13 +666,10 @@ struct Inner { vec3 b; }; -struct Data { - Inner c[4]; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { Inner c[4]; } data; + void tint_symbol() { float x = data.c[2].b[1]; } @@ -752,13 +720,10 @@ struct Inner { vec3 b; }; -struct Data { - Inner c[4]; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { Inner c[4]; } data; + void tint_symbol() { data.c[2].b = vec3(1.0f, 2.0f, 3.0f); } @@ -810,13 +775,10 @@ struct Inner { vec3 b; }; -struct Data { - Inner c[4]; -}; - -layout(binding = 0, std430) buffer Data_1 { +layout(binding = 0, std430) buffer Data_ssbo { Inner c[4]; } data; + void tint_symbol() { data.c[2].b.y = 1.0f; } diff --git a/src/tint/writer/glsl/generator_impl_sanitizer_test.cc b/src/tint/writer/glsl/generator_impl_sanitizer_test.cc index f1157f1af7..2d0d1ce0fe 100644 --- a/src/tint/writer/glsl/generator_impl_sanitizer_test.cc +++ b/src/tint/writer/glsl/generator_impl_sanitizer_test.cc @@ -45,9 +45,10 @@ TEST_F(GlslSanitizerTest, Call_ArrayLength) { auto* expect = R"(#version 310 es precision mediump float; -layout(binding = 1, std430) buffer my_struct_1 { +layout(binding = 1, std430) buffer my_struct_ssbo { float a[]; } b; + void a_func() { uint len = uint(b.a.length()); } @@ -84,10 +85,11 @@ TEST_F(GlslSanitizerTest, Call_ArrayLength_OtherMembersInStruct) { auto* expect = R"(#version 310 es precision mediump float; -layout(binding = 1, std430) buffer my_struct_1 { +layout(binding = 1, std430) buffer my_struct_ssbo { float z; float a[]; } b; + void a_func() { uint len = uint(b.a.length()); } @@ -127,9 +129,10 @@ TEST_F(GlslSanitizerTest, Call_ArrayLength_ViaLets) { auto* expect = R"(#version 310 es precision mediump float; -layout(binding = 1, std430) buffer my_struct_1 { +layout(binding = 1, std430) buffer my_struct_ssbo { float a[]; } b; + void a_func() { uint len = uint(b.a.length()); } diff --git a/src/tint/writer/glsl/generator_impl_storage_buffer_test.cc b/src/tint/writer/glsl/generator_impl_storage_buffer_test.cc index 8c60374da5..2c7bed1e39 100644 --- a/src/tint/writer/glsl/generator_impl_storage_buffer_test.cc +++ b/src/tint/writer/glsl/generator_impl_storage_buffer_test.cc @@ -57,11 +57,12 @@ struct Nephews { float louie; }; -layout(binding = 0, std430) buffer Nephews_1 { +layout(binding = 0, std430) buffer Nephews_ssbo { float huey; float dewey; float louie; } nephews; + )"); } @@ -79,11 +80,12 @@ struct Nephews { float louie; }; -layout(binding = 0, std430) buffer Nephews_1 { +layout(binding = 0, std430) buffer Nephews_ssbo { float huey; layout(offset=256) float dewey; layout(offset=512) float louie; } nephews; + )"); } diff --git a/src/tint/writer/glsl/generator_impl_uniform_buffer_test.cc b/src/tint/writer/glsl/generator_impl_uniform_buffer_test.cc index 555e23795e..e3d2eeea96 100644 --- a/src/tint/writer/glsl/generator_impl_uniform_buffer_test.cc +++ b/src/tint/writer/glsl/generator_impl_uniform_buffer_test.cc @@ -37,7 +37,7 @@ struct Simple { float member; }; -layout(binding = 0) uniform Simple_1 { +layout(binding = 0) uniform Simple_ubo { float member; } simple; @@ -57,7 +57,7 @@ struct Simple { float member; }; -layout(binding = 0, std140) uniform Simple_1 { +layout(binding = 0, std140) uniform Simple_ubo { float member; } simple; diff --git a/src/tint/writer/spirv/builder.cc b/src/tint/writer/spirv/builder.cc index c2056a4d77..04cbaacb99 100644 --- a/src/tint/writer/spirv/builder.cc +++ b/src/tint/writer/spirv/builder.cc @@ -43,7 +43,7 @@ #include "src/tint/sem/type_conversion.h" #include "src/tint/sem/variable.h" #include "src/tint/sem/vector.h" -#include "src/tint/transform/add_spirv_block_attribute.h" +#include "src/tint/transform/add_block_attribute.h" #include "src/tint/utils/defer.h" #include "src/tint/utils/map.h" #include "src/tint/writer/append_vector.h" @@ -4059,8 +4059,7 @@ bool Builder::GenerateStructType(const sem::Struct* struct_type, const Operand& ops.push_back(result); auto* decl = struct_type->Declaration(); - if (decl && ast::HasAttribute( - decl->attributes)) { + if (decl && ast::HasAttribute(decl->attributes)) { push_annot(spv::Op::OpDecorate, {Operand(struct_id), U32Operand(SpvDecorationBlock)}); } diff --git a/src/tint/writer/spirv/generator_impl.cc b/src/tint/writer/spirv/generator_impl.cc index d7a2b80d49..06f861335c 100644 --- a/src/tint/writer/spirv/generator_impl.cc +++ b/src/tint/writer/spirv/generator_impl.cc @@ -17,8 +17,8 @@ #include #include +#include "src/tint/transform/add_block_attribute.h" #include "src/tint/transform/add_empty_entry_point.h" -#include "src/tint/transform/add_spirv_block_attribute.h" #include "src/tint/transform/builtin_polyfill.h" #include "src/tint/transform/canonicalize_entry_point_io.h" #include "src/tint/transform/disable_uniformity_analysis.h" @@ -86,7 +86,7 @@ SanitizedResult Sanitize(const Program* in, const Options& options) { manager.Add(); // ZeroInitWorkgroupMemory manager.Add(); manager.Add(); - manager.Add(); + manager.Add(); manager.Add(); data.Add( 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 ef532a6660..ecaba844b9 100644 --- a/test/tint/array/assign_to_function_var.wgsl.expected.glsl +++ b/test/tint/array/assign_to_function_var.wgsl.expected.glsl @@ -10,13 +10,14 @@ struct S { 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 S_1 { - ivec4 arr[4]; +layout(binding = 0) uniform src_uniform_block_ubo { + S inner; } src_uniform; -layout(binding = 1, std430) buffer S_2 { - ivec4 arr[4]; +layout(binding = 1, std430) buffer src_uniform_block_ssbo { + S inner; } src_storage; + ivec4[4] ret_arr() { ivec4 tint_symbol_1[4] = ivec4[4](ivec4(0), ivec4(0), ivec4(0), ivec4(0)); return tint_symbol_1; @@ -41,8 +42,8 @@ void foo(ivec4 src_param[4]) { dst = src_workgroup; S tint_symbol = ret_struct_arr(); dst = tint_symbol.arr; - dst = src_uniform.arr; - dst = src_storage.arr; + dst = src_uniform.inner.arr; + dst = src_storage.inner.arr; int dst_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0))); int src_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0))); dst_nested = src_nested; diff --git a/test/tint/array/assign_to_function_var.wgsl.expected.spvasm b/test/tint/array/assign_to_function_var.wgsl.expected.spvasm index 636346d438..46e5c7f280 100644 --- a/test/tint/array/assign_to_function_var.wgsl.expected.spvasm +++ b/test/tint/array/assign_to_function_var.wgsl.expected.spvasm @@ -1,7 +1,7 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 64 +; Bound: 65 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 @@ -9,6 +9,8 @@ OpExecutionMode %unused_entry_point LocalSize 1 1 1 OpName %src_private "src_private" OpName %src_workgroup "src_workgroup" + OpName %src_uniform_block "src_uniform_block" + OpMemberName %src_uniform_block 0 "inner" OpName %S "S" OpMemberName %S 0 "arr" OpName %src_uniform "src_uniform" @@ -23,7 +25,8 @@ OpName %dst_nested "dst_nested" OpName %src_nested "src_nested" OpDecorate %_arr_v4int_uint_4 ArrayStride 16 - OpDecorate %S Block + OpDecorate %src_uniform_block Block + OpMemberDecorate %src_uniform_block 0 Offset 0 OpMemberDecorate %S 0 Offset 0 OpDecorate %src_uniform NonWritable OpDecorate %src_uniform DescriptorSet 0 @@ -44,24 +47,25 @@ %_ptr_Workgroup__arr_v4int_uint_4 = OpTypePointer Workgroup %_arr_v4int_uint_4 %src_workgroup = OpVariable %_ptr_Workgroup__arr_v4int_uint_4 Workgroup %S = OpTypeStruct %_arr_v4int_uint_4 -%_ptr_Uniform_S = OpTypePointer Uniform %S -%src_uniform = OpVariable %_ptr_Uniform_S Uniform -%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S -%src_storage = OpVariable %_ptr_StorageBuffer_S StorageBuffer +%src_uniform_block = OpTypeStruct %S +%_ptr_Uniform_src_uniform_block = OpTypePointer Uniform %src_uniform_block +%src_uniform = OpVariable %_ptr_Uniform_src_uniform_block Uniform +%_ptr_StorageBuffer_src_uniform_block = OpTypePointer StorageBuffer %src_uniform_block +%src_storage = OpVariable %_ptr_StorageBuffer_src_uniform_block StorageBuffer %void = OpTypeVoid - %16 = OpTypeFunction %void - %20 = OpTypeFunction %_arr_v4int_uint_4 - %23 = OpTypeFunction %S - %26 = OpConstantNull %S - %27 = OpTypeFunction %void %_arr_v4int_uint_4 + %17 = OpTypeFunction %void + %21 = OpTypeFunction %_arr_v4int_uint_4 + %24 = OpTypeFunction %S + %27 = OpConstantNull %S + %28 = OpTypeFunction %void %_arr_v4int_uint_4 %_ptr_Function__arr_v4int_uint_4 = OpTypePointer Function %_arr_v4int_uint_4 %int_1 = OpConstant %int 1 - %35 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1 + %36 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1 %int_2 = OpConstant %int 2 - %37 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2 + %38 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2 %int_3 = OpConstant %int 3 - %39 = OpConstantComposite %v4int %int_3 %int_3 %int_3 %int_3 - %40 = OpConstantComposite %_arr_v4int_uint_4 %35 %37 %39 %39 + %40 = OpConstantComposite %v4int %int_3 %int_3 %int_3 %int_3 + %41 = OpConstantComposite %_arr_v4int_uint_4 %36 %38 %40 %40 %uint_0 = OpConstant %uint 0 %_ptr_Uniform__arr_v4int_uint_4 = OpTypePointer Uniform %_arr_v4int_uint_4 %_ptr_StorageBuffer__arr_v4int_uint_4 = OpTypePointer StorageBuffer %_arr_v4int_uint_4 @@ -71,47 +75,47 @@ %_arr__arr_int_uint_2_uint_3 = OpTypeArray %_arr_int_uint_2 %uint_3 %_arr__arr__arr_int_uint_2_uint_3_uint_4 = OpTypeArray %_arr__arr_int_uint_2_uint_3 %uint_4 %_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 = OpTypePointer Function %_arr__arr__arr_int_uint_2_uint_3_uint_4 - %61 = OpConstantNull %_arr__arr__arr_int_uint_2_uint_3_uint_4 -%unused_entry_point = OpFunction %void None %16 - %19 = OpLabel + %62 = OpConstantNull %_arr__arr__arr_int_uint_2_uint_3_uint_4 +%unused_entry_point = OpFunction %void None %17 + %20 = OpLabel OpReturn OpFunctionEnd - %ret_arr = OpFunction %_arr_v4int_uint_4 None %20 - %22 = OpLabel + %ret_arr = OpFunction %_arr_v4int_uint_4 None %21 + %23 = OpLabel OpReturnValue %8 OpFunctionEnd -%ret_struct_arr = OpFunction %S None %23 - %25 = OpLabel - OpReturnValue %26 +%ret_struct_arr = OpFunction %S None %24 + %26 = OpLabel + OpReturnValue %27 OpFunctionEnd - %foo = OpFunction %void None %27 + %foo = OpFunction %void None %28 %src_param = OpFunctionParameter %_arr_v4int_uint_4 - %30 = OpLabel + %31 = OpLabel %src_function = OpVariable %_ptr_Function__arr_v4int_uint_4 Function %8 %dst = OpVariable %_ptr_Function__arr_v4int_uint_4 Function %8 - %dst_nested = OpVariable %_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 Function %61 - %src_nested = OpVariable %_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 Function %61 - OpStore %dst %40 - OpStore %dst %src_param - %41 = OpFunctionCall %_arr_v4int_uint_4 %ret_arr + %dst_nested = OpVariable %_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 Function %62 + %src_nested = OpVariable %_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 Function %62 OpStore %dst %41 - OpStore %dst %8 - %42 = OpLoad %_arr_v4int_uint_4 %src_function + OpStore %dst %src_param + %42 = OpFunctionCall %_arr_v4int_uint_4 %ret_arr OpStore %dst %42 - %43 = OpLoad %_arr_v4int_uint_4 %src_private + OpStore %dst %8 + %43 = OpLoad %_arr_v4int_uint_4 %src_function OpStore %dst %43 - %44 = OpLoad %_arr_v4int_uint_4 %src_workgroup + %44 = OpLoad %_arr_v4int_uint_4 %src_private OpStore %dst %44 - %45 = OpFunctionCall %S %ret_struct_arr - %46 = OpCompositeExtract %_arr_v4int_uint_4 %45 0 - OpStore %dst %46 - %49 = OpAccessChain %_ptr_Uniform__arr_v4int_uint_4 %src_uniform %uint_0 - %50 = OpLoad %_arr_v4int_uint_4 %49 - OpStore %dst %50 - %52 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %src_storage %uint_0 - %53 = OpLoad %_arr_v4int_uint_4 %52 - OpStore %dst %53 - %63 = OpLoad %_arr__arr__arr_int_uint_2_uint_3_uint_4 %src_nested - OpStore %dst_nested %63 + %45 = OpLoad %_arr_v4int_uint_4 %src_workgroup + OpStore %dst %45 + %46 = OpFunctionCall %S %ret_struct_arr + %47 = OpCompositeExtract %_arr_v4int_uint_4 %46 0 + OpStore %dst %47 + %50 = OpAccessChain %_ptr_Uniform__arr_v4int_uint_4 %src_uniform %uint_0 %uint_0 + %51 = OpLoad %_arr_v4int_uint_4 %50 + OpStore %dst %51 + %53 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %src_storage %uint_0 %uint_0 + %54 = OpLoad %_arr_v4int_uint_4 %53 + OpStore %dst %54 + %64 = OpLoad %_arr__arr__arr_int_uint_2_uint_3_uint_4 %src_nested + OpStore %dst_nested %64 OpReturn OpFunctionEnd 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 6a18417618..57630d574a 100644 --- a/test/tint/array/assign_to_private_var.wgsl.expected.glsl +++ b/test/tint/array/assign_to_private_var.wgsl.expected.glsl @@ -10,13 +10,14 @@ struct S { 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 S_1 { - ivec4 arr[4]; +layout(binding = 0) uniform src_uniform_block_ubo { + S inner; } src_uniform; -layout(binding = 1, std430) buffer S_2 { - ivec4 arr[4]; +layout(binding = 1, std430) buffer src_uniform_block_ssbo { + S inner; } src_storage; + ivec4 dst[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); int dst_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0))); ivec4[4] ret_arr() { @@ -42,8 +43,8 @@ void foo(ivec4 src_param[4]) { dst = src_workgroup; S tint_symbol = ret_struct_arr(); dst = tint_symbol.arr; - dst = src_uniform.arr; - dst = src_storage.arr; + dst = src_uniform.inner.arr; + dst = src_storage.inner.arr; int src_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0))); dst_nested = src_nested; } diff --git a/test/tint/array/assign_to_private_var.wgsl.expected.spvasm b/test/tint/array/assign_to_private_var.wgsl.expected.spvasm index 3427ea782f..caae540f1d 100644 --- a/test/tint/array/assign_to_private_var.wgsl.expected.spvasm +++ b/test/tint/array/assign_to_private_var.wgsl.expected.spvasm @@ -1,7 +1,7 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 65 +; Bound: 66 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 @@ -9,6 +9,8 @@ OpExecutionMode %unused_entry_point LocalSize 1 1 1 OpName %src_private "src_private" OpName %src_workgroup "src_workgroup" + OpName %src_uniform_block "src_uniform_block" + OpMemberName %src_uniform_block 0 "inner" OpName %S "S" OpMemberName %S 0 "arr" OpName %src_uniform "src_uniform" @@ -23,7 +25,8 @@ OpName %src_function "src_function" OpName %src_nested "src_nested" OpDecorate %_arr_v4int_uint_4 ArrayStride 16 - OpDecorate %S Block + OpDecorate %src_uniform_block Block + OpMemberDecorate %src_uniform_block 0 Offset 0 OpMemberDecorate %S 0 Offset 0 OpDecorate %src_uniform NonWritable OpDecorate %src_uniform DescriptorSet 0 @@ -44,10 +47,11 @@ %_ptr_Workgroup__arr_v4int_uint_4 = OpTypePointer Workgroup %_arr_v4int_uint_4 %src_workgroup = OpVariable %_ptr_Workgroup__arr_v4int_uint_4 Workgroup %S = OpTypeStruct %_arr_v4int_uint_4 -%_ptr_Uniform_S = OpTypePointer Uniform %S -%src_uniform = OpVariable %_ptr_Uniform_S Uniform -%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S -%src_storage = OpVariable %_ptr_StorageBuffer_S StorageBuffer +%src_uniform_block = OpTypeStruct %S +%_ptr_Uniform_src_uniform_block = OpTypePointer Uniform %src_uniform_block +%src_uniform = OpVariable %_ptr_Uniform_src_uniform_block Uniform +%_ptr_StorageBuffer_src_uniform_block = OpTypePointer StorageBuffer %src_uniform_block +%src_storage = OpVariable %_ptr_StorageBuffer_src_uniform_block StorageBuffer %dst = OpVariable %_ptr_Private__arr_v4int_uint_4 Private %8 %uint_2 = OpConstant %uint 2 %_arr_int_uint_2 = OpTypeArray %int %uint_2 @@ -55,64 +59,64 @@ %_arr__arr_int_uint_2_uint_3 = OpTypeArray %_arr_int_uint_2 %uint_3 %_arr__arr__arr_int_uint_2_uint_3_uint_4 = OpTypeArray %_arr__arr_int_uint_2_uint_3 %uint_4 %_ptr_Private__arr__arr__arr_int_uint_2_uint_3_uint_4 = OpTypePointer Private %_arr__arr__arr_int_uint_2_uint_3_uint_4 - %24 = OpConstantNull %_arr__arr__arr_int_uint_2_uint_3_uint_4 - %dst_nested = OpVariable %_ptr_Private__arr__arr__arr_int_uint_2_uint_3_uint_4 Private %24 + %25 = OpConstantNull %_arr__arr__arr_int_uint_2_uint_3_uint_4 + %dst_nested = OpVariable %_ptr_Private__arr__arr__arr_int_uint_2_uint_3_uint_4 Private %25 %void = OpTypeVoid - %25 = OpTypeFunction %void - %29 = OpTypeFunction %_arr_v4int_uint_4 - %32 = OpTypeFunction %S - %35 = OpConstantNull %S - %36 = OpTypeFunction %void %_arr_v4int_uint_4 + %26 = OpTypeFunction %void + %30 = OpTypeFunction %_arr_v4int_uint_4 + %33 = OpTypeFunction %S + %36 = OpConstantNull %S + %37 = OpTypeFunction %void %_arr_v4int_uint_4 %_ptr_Function__arr_v4int_uint_4 = OpTypePointer Function %_arr_v4int_uint_4 %int_1 = OpConstant %int 1 - %43 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1 + %44 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1 %int_2 = OpConstant %int 2 - %45 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2 + %46 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2 %int_3 = OpConstant %int 3 - %47 = OpConstantComposite %v4int %int_3 %int_3 %int_3 %int_3 - %48 = OpConstantComposite %_arr_v4int_uint_4 %43 %45 %47 %47 + %48 = OpConstantComposite %v4int %int_3 %int_3 %int_3 %int_3 + %49 = OpConstantComposite %_arr_v4int_uint_4 %44 %46 %48 %48 %uint_0 = OpConstant %uint 0 %_ptr_Uniform__arr_v4int_uint_4 = OpTypePointer Uniform %_arr_v4int_uint_4 %_ptr_StorageBuffer__arr_v4int_uint_4 = OpTypePointer StorageBuffer %_arr_v4int_uint_4 %_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 = OpTypePointer Function %_arr__arr__arr_int_uint_2_uint_3_uint_4 -%unused_entry_point = OpFunction %void None %25 - %28 = OpLabel +%unused_entry_point = OpFunction %void None %26 + %29 = OpLabel OpReturn OpFunctionEnd - %ret_arr = OpFunction %_arr_v4int_uint_4 None %29 - %31 = OpLabel + %ret_arr = OpFunction %_arr_v4int_uint_4 None %30 + %32 = OpLabel OpReturnValue %8 OpFunctionEnd -%ret_struct_arr = OpFunction %S None %32 - %34 = OpLabel - OpReturnValue %35 +%ret_struct_arr = OpFunction %S None %33 + %35 = OpLabel + OpReturnValue %36 OpFunctionEnd - %foo = OpFunction %void None %36 + %foo = OpFunction %void None %37 %src_param = OpFunctionParameter %_arr_v4int_uint_4 - %39 = OpLabel + %40 = OpLabel %src_function = OpVariable %_ptr_Function__arr_v4int_uint_4 Function %8 - %src_nested = OpVariable %_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 Function %24 - OpStore %dst %48 - OpStore %dst %src_param - %49 = OpFunctionCall %_arr_v4int_uint_4 %ret_arr + %src_nested = OpVariable %_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 Function %25 OpStore %dst %49 - OpStore %dst %8 - %50 = OpLoad %_arr_v4int_uint_4 %src_function + OpStore %dst %src_param + %50 = OpFunctionCall %_arr_v4int_uint_4 %ret_arr OpStore %dst %50 - %51 = OpLoad %_arr_v4int_uint_4 %src_private + OpStore %dst %8 + %51 = OpLoad %_arr_v4int_uint_4 %src_function OpStore %dst %51 - %52 = OpLoad %_arr_v4int_uint_4 %src_workgroup + %52 = OpLoad %_arr_v4int_uint_4 %src_private OpStore %dst %52 - %53 = OpFunctionCall %S %ret_struct_arr - %54 = OpCompositeExtract %_arr_v4int_uint_4 %53 0 - OpStore %dst %54 - %57 = OpAccessChain %_ptr_Uniform__arr_v4int_uint_4 %src_uniform %uint_0 - %58 = OpLoad %_arr_v4int_uint_4 %57 - OpStore %dst %58 - %60 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %src_storage %uint_0 - %61 = OpLoad %_arr_v4int_uint_4 %60 - OpStore %dst %61 - %64 = OpLoad %_arr__arr__arr_int_uint_2_uint_3_uint_4 %src_nested - OpStore %dst_nested %64 + %53 = OpLoad %_arr_v4int_uint_4 %src_workgroup + OpStore %dst %53 + %54 = OpFunctionCall %S %ret_struct_arr + %55 = OpCompositeExtract %_arr_v4int_uint_4 %54 0 + OpStore %dst %55 + %58 = OpAccessChain %_ptr_Uniform__arr_v4int_uint_4 %src_uniform %uint_0 %uint_0 + %59 = OpLoad %_arr_v4int_uint_4 %58 + OpStore %dst %59 + %61 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %src_storage %uint_0 %uint_0 + %62 = OpLoad %_arr_v4int_uint_4 %61 + OpStore %dst %62 + %65 = OpLoad %_arr__arr__arr_int_uint_2_uint_3_uint_4 %src_nested + OpStore %dst_nested %65 OpReturn OpFunctionEnd 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 bda5283626..fd9a95f367 100644 --- a/test/tint/array/assign_to_storage_var.wgsl.expected.glsl +++ b/test/tint/array/assign_to_storage_var.wgsl.expected.glsl @@ -8,25 +8,24 @@ struct S { ivec4 arr[4]; }; -struct S_nested { - int arr[4][3][2]; -}; - 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 S_1 { - ivec4 arr[4]; +layout(binding = 0) uniform src_uniform_block_ubo { + S inner; } src_uniform; -layout(binding = 1, std430) buffer S_2 { - ivec4 arr[4]; +layout(binding = 1, std430) buffer src_uniform_block_ssbo { + S inner; } src_storage; -layout(binding = 2, std430) buffer S_3 { - ivec4 arr[4]; + +layout(binding = 2, std430) buffer src_uniform_block_ssbo_1 { + S inner; } dst; -layout(binding = 3, std430) buffer S_nested_1 { + +layout(binding = 3, std430) buffer S_nested_ssbo { int arr[4][3][2]; } dst_nested; + ivec4[4] ret_arr() { ivec4 tint_symbol_2[4] = ivec4[4](ivec4(0), ivec4(0), ivec4(0), ivec4(0)); return tint_symbol_2; @@ -40,19 +39,19 @@ S ret_struct_arr() { void foo(ivec4 src_param[4]) { ivec4 src_function[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); ivec4 tint_symbol_4[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3)); - dst.arr = tint_symbol_4; - dst.arr = src_param; + dst.inner.arr = tint_symbol_4; + dst.inner.arr = src_param; ivec4 tint_symbol[4] = ret_arr(); - dst.arr = tint_symbol; + dst.inner.arr = tint_symbol; ivec4 src_let[4] = ivec4[4](ivec4(0), ivec4(0), ivec4(0), ivec4(0)); - dst.arr = src_let; - dst.arr = src_function; - dst.arr = src_private; - dst.arr = src_workgroup; + dst.inner.arr = src_let; + dst.inner.arr = src_function; + dst.inner.arr = src_private; + dst.inner.arr = src_workgroup; S tint_symbol_1 = ret_struct_arr(); - dst.arr = tint_symbol_1.arr; - dst.arr = src_uniform.arr; - dst.arr = src_storage.arr; + dst.inner.arr = tint_symbol_1.arr; + dst.inner.arr = src_uniform.inner.arr; + dst.inner.arr = src_storage.inner.arr; int src_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0))); dst_nested.arr = src_nested; } diff --git a/test/tint/array/assign_to_storage_var.wgsl.expected.spvasm b/test/tint/array/assign_to_storage_var.wgsl.expected.spvasm index f33dfbed4f..df207265a8 100644 --- a/test/tint/array/assign_to_storage_var.wgsl.expected.spvasm +++ b/test/tint/array/assign_to_storage_var.wgsl.expected.spvasm @@ -1,7 +1,7 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 78 +; Bound: 79 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 @@ -9,6 +9,8 @@ OpExecutionMode %unused_entry_point LocalSize 1 1 1 OpName %src_private "src_private" OpName %src_workgroup "src_workgroup" + OpName %src_uniform_block "src_uniform_block" + OpMemberName %src_uniform_block 0 "inner" OpName %S "S" OpMemberName %S 0 "arr" OpName %src_uniform "src_uniform" @@ -25,7 +27,8 @@ OpName %src_function "src_function" OpName %src_nested "src_nested" OpDecorate %_arr_v4int_uint_4 ArrayStride 16 - OpDecorate %S Block + OpDecorate %src_uniform_block Block + OpMemberDecorate %src_uniform_block 0 Offset 0 OpMemberDecorate %S 0 Offset 0 OpDecorate %src_uniform NonWritable OpDecorate %src_uniform DescriptorSet 0 @@ -52,11 +55,12 @@ %_ptr_Workgroup__arr_v4int_uint_4 = OpTypePointer Workgroup %_arr_v4int_uint_4 %src_workgroup = OpVariable %_ptr_Workgroup__arr_v4int_uint_4 Workgroup %S = OpTypeStruct %_arr_v4int_uint_4 -%_ptr_Uniform_S = OpTypePointer Uniform %S -%src_uniform = OpVariable %_ptr_Uniform_S Uniform -%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S -%src_storage = OpVariable %_ptr_StorageBuffer_S StorageBuffer - %dst = OpVariable %_ptr_StorageBuffer_S StorageBuffer +%src_uniform_block = OpTypeStruct %S +%_ptr_Uniform_src_uniform_block = OpTypePointer Uniform %src_uniform_block +%src_uniform = OpVariable %_ptr_Uniform_src_uniform_block Uniform +%_ptr_StorageBuffer_src_uniform_block = OpTypePointer StorageBuffer %src_uniform_block +%src_storage = OpVariable %_ptr_StorageBuffer_src_uniform_block StorageBuffer + %dst = OpVariable %_ptr_StorageBuffer_src_uniform_block StorageBuffer %uint_2 = OpConstant %uint 2 %_arr_int_uint_2 = OpTypeArray %int %uint_2 %uint_3 = OpConstant %uint 3 @@ -66,74 +70,74 @@ %_ptr_StorageBuffer_S_nested = OpTypePointer StorageBuffer %S_nested %dst_nested = OpVariable %_ptr_StorageBuffer_S_nested StorageBuffer %void = OpTypeVoid - %25 = OpTypeFunction %void - %29 = OpTypeFunction %_arr_v4int_uint_4 - %32 = OpTypeFunction %S - %35 = OpConstantNull %S - %36 = OpTypeFunction %void %_arr_v4int_uint_4 + %26 = OpTypeFunction %void + %30 = OpTypeFunction %_arr_v4int_uint_4 + %33 = OpTypeFunction %S + %36 = OpConstantNull %S + %37 = OpTypeFunction %void %_arr_v4int_uint_4 %_ptr_Function__arr_v4int_uint_4 = OpTypePointer Function %_arr_v4int_uint_4 %uint_0 = OpConstant %uint 0 %_ptr_StorageBuffer__arr_v4int_uint_4 = OpTypePointer StorageBuffer %_arr_v4int_uint_4 %int_1 = OpConstant %int 1 - %46 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1 + %47 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1 %int_2 = OpConstant %int 2 - %48 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2 + %49 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2 %int_3 = OpConstant %int 3 - %50 = OpConstantComposite %v4int %int_3 %int_3 %int_3 %int_3 - %51 = OpConstantComposite %_arr_v4int_uint_4 %46 %48 %50 %50 + %51 = OpConstantComposite %v4int %int_3 %int_3 %int_3 %int_3 + %52 = OpConstantComposite %_arr_v4int_uint_4 %47 %49 %51 %51 %_ptr_Uniform__arr_v4int_uint_4 = OpTypePointer Uniform %_arr_v4int_uint_4 %_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 = OpTypePointer Function %_arr__arr__arr_int_uint_2_uint_3_uint_4 - %74 = OpConstantNull %_arr__arr__arr_int_uint_2_uint_3_uint_4 + %75 = OpConstantNull %_arr__arr__arr_int_uint_2_uint_3_uint_4 %_ptr_StorageBuffer__arr__arr__arr_int_uint_2_uint_3_uint_4 = OpTypePointer StorageBuffer %_arr__arr__arr_int_uint_2_uint_3_uint_4 -%unused_entry_point = OpFunction %void None %25 - %28 = OpLabel +%unused_entry_point = OpFunction %void None %26 + %29 = OpLabel OpReturn OpFunctionEnd - %ret_arr = OpFunction %_arr_v4int_uint_4 None %29 - %31 = OpLabel + %ret_arr = OpFunction %_arr_v4int_uint_4 None %30 + %32 = OpLabel OpReturnValue %8 OpFunctionEnd -%ret_struct_arr = OpFunction %S None %32 - %34 = OpLabel - OpReturnValue %35 +%ret_struct_arr = OpFunction %S None %33 + %35 = OpLabel + OpReturnValue %36 OpFunctionEnd - %foo = OpFunction %void None %36 + %foo = OpFunction %void None %37 %src_param = OpFunctionParameter %_arr_v4int_uint_4 - %39 = OpLabel + %40 = OpLabel %src_function = OpVariable %_ptr_Function__arr_v4int_uint_4 Function %8 - %src_nested = OpVariable %_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 Function %74 - %44 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 - OpStore %44 %51 - %52 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 - OpStore %52 %src_param - %53 = OpFunctionCall %_arr_v4int_uint_4 %ret_arr - %54 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 - OpStore %54 %53 - %55 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 - OpStore %55 %8 - %56 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 - %57 = OpLoad %_arr_v4int_uint_4 %src_function - OpStore %56 %57 - %58 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 - %59 = OpLoad %_arr_v4int_uint_4 %src_private - OpStore %58 %59 - %60 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 - %61 = OpLoad %_arr_v4int_uint_4 %src_workgroup - OpStore %60 %61 - %62 = OpFunctionCall %S %ret_struct_arr - %63 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 - %64 = OpCompositeExtract %_arr_v4int_uint_4 %62 0 - OpStore %63 %64 - %65 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 - %67 = OpAccessChain %_ptr_Uniform__arr_v4int_uint_4 %src_uniform %uint_0 - %68 = OpLoad %_arr_v4int_uint_4 %67 - OpStore %65 %68 - %69 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 - %70 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %src_storage %uint_0 - %71 = OpLoad %_arr_v4int_uint_4 %70 - OpStore %69 %71 - %76 = OpAccessChain %_ptr_StorageBuffer__arr__arr__arr_int_uint_2_uint_3_uint_4 %dst_nested %uint_0 - %77 = OpLoad %_arr__arr__arr_int_uint_2_uint_3_uint_4 %src_nested - OpStore %76 %77 + %src_nested = OpVariable %_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 Function %75 + %45 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %uint_0 + OpStore %45 %52 + %53 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %uint_0 + OpStore %53 %src_param + %54 = OpFunctionCall %_arr_v4int_uint_4 %ret_arr + %55 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %uint_0 + OpStore %55 %54 + %56 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %uint_0 + OpStore %56 %8 + %57 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %uint_0 + %58 = OpLoad %_arr_v4int_uint_4 %src_function + OpStore %57 %58 + %59 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %uint_0 + %60 = OpLoad %_arr_v4int_uint_4 %src_private + OpStore %59 %60 + %61 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %uint_0 + %62 = OpLoad %_arr_v4int_uint_4 %src_workgroup + OpStore %61 %62 + %63 = OpFunctionCall %S %ret_struct_arr + %64 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %uint_0 + %65 = OpCompositeExtract %_arr_v4int_uint_4 %63 0 + OpStore %64 %65 + %66 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %uint_0 + %68 = OpAccessChain %_ptr_Uniform__arr_v4int_uint_4 %src_uniform %uint_0 %uint_0 + %69 = OpLoad %_arr_v4int_uint_4 %68 + OpStore %66 %69 + %70 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %uint_0 + %71 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %src_storage %uint_0 %uint_0 + %72 = OpLoad %_arr_v4int_uint_4 %71 + OpStore %70 %72 + %77 = OpAccessChain %_ptr_StorageBuffer__arr__arr__arr_int_uint_2_uint_3_uint_4 %dst_nested %uint_0 + %78 = OpLoad %_arr__arr__arr_int_uint_2_uint_3_uint_4 %src_nested + OpStore %77 %78 OpReturn OpFunctionEnd 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 e32aa2287b..c023ca5fd0 100644 --- a/test/tint/array/assign_to_workgroup_var.wgsl.expected.glsl +++ b/test/tint/array/assign_to_workgroup_var.wgsl.expected.glsl @@ -10,13 +10,14 @@ struct S { 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 S_1 { - ivec4 arr[4]; +layout(binding = 0) uniform src_uniform_block_ubo { + S inner; } src_uniform; -layout(binding = 1, std430) buffer S_2 { - ivec4 arr[4]; +layout(binding = 1, std430) buffer src_uniform_block_ssbo { + S inner; } src_storage; + shared ivec4 dst[4]; shared int dst_nested[4][3][2]; ivec4[4] ret_arr() { @@ -42,8 +43,8 @@ void foo(ivec4 src_param[4]) { dst = src_workgroup; S tint_symbol = ret_struct_arr(); dst = tint_symbol.arr; - dst = src_uniform.arr; - dst = src_storage.arr; + dst = src_uniform.inner.arr; + dst = src_storage.inner.arr; int src_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0))); dst_nested = src_nested; } diff --git a/test/tint/array/assign_to_workgroup_var.wgsl.expected.spvasm b/test/tint/array/assign_to_workgroup_var.wgsl.expected.spvasm index a834fb2079..85496aecaf 100644 --- a/test/tint/array/assign_to_workgroup_var.wgsl.expected.spvasm +++ b/test/tint/array/assign_to_workgroup_var.wgsl.expected.spvasm @@ -1,7 +1,7 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 65 +; Bound: 66 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 @@ -9,6 +9,8 @@ OpExecutionMode %unused_entry_point LocalSize 1 1 1 OpName %src_private "src_private" OpName %src_workgroup "src_workgroup" + OpName %src_uniform_block "src_uniform_block" + OpMemberName %src_uniform_block 0 "inner" OpName %S "S" OpMemberName %S 0 "arr" OpName %src_uniform "src_uniform" @@ -23,7 +25,8 @@ OpName %src_function "src_function" OpName %src_nested "src_nested" OpDecorate %_arr_v4int_uint_4 ArrayStride 16 - OpDecorate %S Block + OpDecorate %src_uniform_block Block + OpMemberDecorate %src_uniform_block 0 Offset 0 OpMemberDecorate %S 0 Offset 0 OpDecorate %src_uniform NonWritable OpDecorate %src_uniform DescriptorSet 0 @@ -44,10 +47,11 @@ %_ptr_Workgroup__arr_v4int_uint_4 = OpTypePointer Workgroup %_arr_v4int_uint_4 %src_workgroup = OpVariable %_ptr_Workgroup__arr_v4int_uint_4 Workgroup %S = OpTypeStruct %_arr_v4int_uint_4 -%_ptr_Uniform_S = OpTypePointer Uniform %S -%src_uniform = OpVariable %_ptr_Uniform_S Uniform -%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S -%src_storage = OpVariable %_ptr_StorageBuffer_S StorageBuffer +%src_uniform_block = OpTypeStruct %S +%_ptr_Uniform_src_uniform_block = OpTypePointer Uniform %src_uniform_block +%src_uniform = OpVariable %_ptr_Uniform_src_uniform_block Uniform +%_ptr_StorageBuffer_src_uniform_block = OpTypePointer StorageBuffer %src_uniform_block +%src_storage = OpVariable %_ptr_StorageBuffer_src_uniform_block StorageBuffer %dst = OpVariable %_ptr_Workgroup__arr_v4int_uint_4 Workgroup %uint_2 = OpConstant %uint 2 %_arr_int_uint_2 = OpTypeArray %int %uint_2 @@ -57,62 +61,62 @@ %_ptr_Workgroup__arr__arr__arr_int_uint_2_uint_3_uint_4 = OpTypePointer Workgroup %_arr__arr__arr_int_uint_2_uint_3_uint_4 %dst_nested = OpVariable %_ptr_Workgroup__arr__arr__arr_int_uint_2_uint_3_uint_4 Workgroup %void = OpTypeVoid - %24 = OpTypeFunction %void - %28 = OpTypeFunction %_arr_v4int_uint_4 - %31 = OpTypeFunction %S - %34 = OpConstantNull %S - %35 = OpTypeFunction %void %_arr_v4int_uint_4 + %25 = OpTypeFunction %void + %29 = OpTypeFunction %_arr_v4int_uint_4 + %32 = OpTypeFunction %S + %35 = OpConstantNull %S + %36 = OpTypeFunction %void %_arr_v4int_uint_4 %_ptr_Function__arr_v4int_uint_4 = OpTypePointer Function %_arr_v4int_uint_4 %int_1 = OpConstant %int 1 - %42 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1 + %43 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1 %int_2 = OpConstant %int 2 - %44 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2 + %45 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2 %int_3 = OpConstant %int 3 - %46 = OpConstantComposite %v4int %int_3 %int_3 %int_3 %int_3 - %47 = OpConstantComposite %_arr_v4int_uint_4 %42 %44 %46 %46 + %47 = OpConstantComposite %v4int %int_3 %int_3 %int_3 %int_3 + %48 = OpConstantComposite %_arr_v4int_uint_4 %43 %45 %47 %47 %uint_0 = OpConstant %uint 0 %_ptr_Uniform__arr_v4int_uint_4 = OpTypePointer Uniform %_arr_v4int_uint_4 %_ptr_StorageBuffer__arr_v4int_uint_4 = OpTypePointer StorageBuffer %_arr_v4int_uint_4 %_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 = OpTypePointer Function %_arr__arr__arr_int_uint_2_uint_3_uint_4 - %63 = OpConstantNull %_arr__arr__arr_int_uint_2_uint_3_uint_4 -%unused_entry_point = OpFunction %void None %24 - %27 = OpLabel + %64 = OpConstantNull %_arr__arr__arr_int_uint_2_uint_3_uint_4 +%unused_entry_point = OpFunction %void None %25 + %28 = OpLabel OpReturn OpFunctionEnd - %ret_arr = OpFunction %_arr_v4int_uint_4 None %28 - %30 = OpLabel + %ret_arr = OpFunction %_arr_v4int_uint_4 None %29 + %31 = OpLabel OpReturnValue %8 OpFunctionEnd -%ret_struct_arr = OpFunction %S None %31 - %33 = OpLabel - OpReturnValue %34 +%ret_struct_arr = OpFunction %S None %32 + %34 = OpLabel + OpReturnValue %35 OpFunctionEnd - %foo = OpFunction %void None %35 + %foo = OpFunction %void None %36 %src_param = OpFunctionParameter %_arr_v4int_uint_4 - %38 = OpLabel + %39 = OpLabel %src_function = OpVariable %_ptr_Function__arr_v4int_uint_4 Function %8 - %src_nested = OpVariable %_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 Function %63 - OpStore %dst %47 - OpStore %dst %src_param - %48 = OpFunctionCall %_arr_v4int_uint_4 %ret_arr + %src_nested = OpVariable %_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 Function %64 OpStore %dst %48 - OpStore %dst %8 - %49 = OpLoad %_arr_v4int_uint_4 %src_function + OpStore %dst %src_param + %49 = OpFunctionCall %_arr_v4int_uint_4 %ret_arr OpStore %dst %49 - %50 = OpLoad %_arr_v4int_uint_4 %src_private + OpStore %dst %8 + %50 = OpLoad %_arr_v4int_uint_4 %src_function OpStore %dst %50 - %51 = OpLoad %_arr_v4int_uint_4 %src_workgroup + %51 = OpLoad %_arr_v4int_uint_4 %src_private OpStore %dst %51 - %52 = OpFunctionCall %S %ret_struct_arr - %53 = OpCompositeExtract %_arr_v4int_uint_4 %52 0 - OpStore %dst %53 - %56 = OpAccessChain %_ptr_Uniform__arr_v4int_uint_4 %src_uniform %uint_0 - %57 = OpLoad %_arr_v4int_uint_4 %56 - OpStore %dst %57 - %59 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %src_storage %uint_0 - %60 = OpLoad %_arr_v4int_uint_4 %59 - OpStore %dst %60 - %64 = OpLoad %_arr__arr__arr_int_uint_2_uint_3_uint_4 %src_nested - OpStore %dst_nested %64 + %52 = OpLoad %_arr_v4int_uint_4 %src_workgroup + OpStore %dst %52 + %53 = OpFunctionCall %S %ret_struct_arr + %54 = OpCompositeExtract %_arr_v4int_uint_4 %53 0 + OpStore %dst %54 + %57 = OpAccessChain %_ptr_Uniform__arr_v4int_uint_4 %src_uniform %uint_0 %uint_0 + %58 = OpLoad %_arr_v4int_uint_4 %57 + OpStore %dst %58 + %60 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %src_storage %uint_0 %uint_0 + %61 = OpLoad %_arr_v4int_uint_4 %60 + OpStore %dst %61 + %65 = OpLoad %_arr__arr__arr_int_uint_2_uint_3_uint_4 %src_nested + OpStore %dst_nested %65 OpReturn OpFunctionEnd diff --git a/test/tint/array/strides.spvasm.expected.glsl b/test/tint/array/strides.spvasm.expected.glsl index 6d3f32973a..90c988ab4e 100644 --- a/test/tint/array/strides.spvasm.expected.glsl +++ b/test/tint/array/strides.spvasm.expected.glsl @@ -8,13 +8,10 @@ struct strided_arr_1 { strided_arr el[3][2]; }; -struct S { - strided_arr_1 a[4]; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { strided_arr_1 a[4]; } s; + void f_1() { strided_arr_1 x_19[4] = s.a; strided_arr x_24[3][2] = s.a[3].el; diff --git a/test/tint/benchmark/particles.wgsl.expected.glsl b/test/tint/benchmark/particles.wgsl.expected.glsl index 88e51566bc..4f82c9e412 100644 --- a/test/tint/benchmark/particles.wgsl.expected.glsl +++ b/test/tint/benchmark/particles.wgsl.expected.glsl @@ -7,13 +7,7 @@ layout(location = 1) in vec4 color_1; layout(location = 2) in vec2 quad_pos_1; layout(location = 0) out vec4 color_2; layout(location = 1) out vec2 quad_pos_2; -struct RenderParams { - mat4 modelViewProjectionMatrix; - vec3 right; - vec3 up; -}; - -layout(binding = 0) uniform RenderParams_1 { +layout(binding = 0) uniform RenderParams_ubo { mat4 modelViewProjectionMatrix; vec3 right; vec3 up; @@ -147,11 +141,6 @@ struct VertexOutput { vec2 quad_pos; }; -struct SimulationParams { - float deltaTime; - vec4 seed; -}; - struct Particle { vec3 position; float lifetime; @@ -159,14 +148,15 @@ struct Particle { vec3 velocity; }; -layout(binding = 0) uniform SimulationParams_1 { +layout(binding = 0) uniform SimulationParams_ubo { float deltaTime; vec4 seed; } sim_params; -layout(binding = 1, std430) buffer Particles_1 { +layout(binding = 1, std430) buffer Particles_ssbo { Particle particles[]; } data; + struct UBO { uint width; }; @@ -214,8 +204,8 @@ void main() { return; } Error parsing GLSL shader: -ERROR: 0:64: 'textureQueryLevels' : no matching overloaded function found -ERROR: 0:64: '' : compilation terminated +ERROR: 0:60: 'textureQueryLevels' : no matching overloaded function found +ERROR: 0:60: '' : compilation terminated ERROR: 2 compilation errors. No code generated. @@ -252,20 +242,18 @@ struct Particle { vec3 velocity; }; -struct UBO { - uint width; -}; - -layout(binding = 3) uniform UBO_1 { +layout(binding = 3) uniform UBO_ubo { uint width; } ubo; -layout(binding = 4, std430) buffer Buffer_1 { +layout(binding = 4, std430) buffer Buffer_ssbo { float weights[]; } buf_in; -layout(binding = 5, std430) buffer Buffer_2 { + +layout(binding = 5, std430) buffer Buffer_ssbo_1 { float weights[]; } buf_out; + uniform highp sampler2D tex_in_1; void import_level(uvec3 coord) { uint offset = (coord.x + (coord.y * ubo.width)); @@ -309,20 +297,18 @@ struct Particle { vec3 velocity; }; -struct UBO { - uint width; -}; - -layout(binding = 3) uniform UBO_1 { +layout(binding = 3) uniform UBO_ubo { uint width; } ubo; -layout(binding = 4, std430) buffer Buffer_1 { +layout(binding = 4, std430) buffer Buffer_ssbo { float weights[]; } buf_in; -layout(binding = 5, std430) buffer Buffer_2 { + +layout(binding = 5, std430) buffer Buffer_ssbo_1 { float weights[]; } buf_out; + layout(rgba8) uniform highp writeonly image2D tex_out; void export_level(uvec3 coord) { if (all(lessThan(coord.xy, uvec2(imageSize(tex_out))))) { 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 c2aca77af3..6ef27681f5 100644 --- a/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.glsl +++ b/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.glsl @@ -12,9 +12,10 @@ struct Inner { ivec4 i[4]; }; -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { Inner arr[]; } s; + void tint_symbol(uint idx) { ivec3 a = s.arr[idx].a; int b = s.arr[idx].b; 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 827ccccd27..71c6708a5c 100644 --- a/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.glsl +++ b/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.glsl @@ -12,9 +12,10 @@ struct Inner { ivec4 i[4]; }; -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { Inner arr[]; } s; + void tint_symbol(uint idx) { s.arr[idx].a = ivec3(0); s.arr[idx].b = 0; 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 b2e9f7885b..447a5fcb93 100644 --- a/test/tint/buffer/storage/static_index/read.wgsl.expected.glsl +++ b/test/tint/buffer/storage/static_index/read.wgsl.expected.glsl @@ -4,20 +4,7 @@ struct Inner { int x; }; -struct S { - ivec3 a; - int b; - uvec3 c; - uint d; - vec3 e; - float f; - mat2x3 g; - mat3x2 h; - Inner i; - Inner j[4]; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { ivec3 a; int b; uvec3 c; @@ -29,6 +16,7 @@ layout(binding = 0, std430) buffer S_1 { Inner i; Inner j[4]; } s; + void tint_symbol() { ivec3 a = s.a; int b = s.b; 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 947728e3a0..f2f9b98cd9 100644 --- a/test/tint/buffer/storage/static_index/write.wgsl.expected.glsl +++ b/test/tint/buffer/storage/static_index/write.wgsl.expected.glsl @@ -4,20 +4,7 @@ struct Inner { int x; }; -struct S { - ivec3 a; - int b; - uvec3 c; - uint d; - vec3 e; - float f; - mat2x3 g; - mat3x2 h; - Inner i; - Inner j[4]; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { ivec3 a; int b; uvec3 c; @@ -29,6 +16,7 @@ layout(binding = 0, std430) buffer S_1 { Inner i; Inner j[4]; } s; + void tint_symbol() { s.a = ivec3(0); s.b = 0; diff --git a/test/tint/buffer/storage/types/array.wgsl.expected.glsl b/test/tint/buffer/storage/types/array.wgsl.expected.glsl index 490065e638..f90230b482 100644 --- a/test/tint/buffer/storage/types/array.wgsl.expected.glsl +++ b/test/tint/buffer/storage/types/array.wgsl.expected.glsl @@ -1,15 +1,13 @@ #version 310 es -struct tint_symbol_block { - float inner[4]; -}; - -layout(binding = 0, std430) buffer tint_symbol_block_1 { +layout(binding = 0, std430) buffer tint_symbol_block_ssbo { float inner[4]; } tint_symbol; -layout(binding = 1, std430) buffer tint_symbol_block_2 { + +layout(binding = 1, std430) buffer tint_symbol_block_ssbo_1 { float inner[4]; } tint_symbol_1; + void tint_symbol_2() { tint_symbol_1.inner = tint_symbol.inner; } diff --git a/test/tint/buffer/storage/types/f32.wgsl.expected.glsl b/test/tint/buffer/storage/types/f32.wgsl.expected.glsl index 8b5a1ad2ba..7c9cd9251f 100644 --- a/test/tint/buffer/storage/types/f32.wgsl.expected.glsl +++ b/test/tint/buffer/storage/types/f32.wgsl.expected.glsl @@ -1,15 +1,13 @@ #version 310 es -struct tint_symbol_block { - float inner; -}; - -layout(binding = 0, std430) buffer tint_symbol_block_1 { +layout(binding = 0, std430) buffer tint_symbol_block_ssbo { float inner; } tint_symbol; -layout(binding = 1, std430) buffer tint_symbol_block_2 { + +layout(binding = 1, std430) buffer tint_symbol_block_ssbo_1 { float inner; } tint_symbol_1; + void tint_symbol_2() { tint_symbol_1.inner = tint_symbol.inner; } diff --git a/test/tint/buffer/storage/types/i32.wgsl.expected.glsl b/test/tint/buffer/storage/types/i32.wgsl.expected.glsl index 7d4b0e8c94..3f9cb202fc 100644 --- a/test/tint/buffer/storage/types/i32.wgsl.expected.glsl +++ b/test/tint/buffer/storage/types/i32.wgsl.expected.glsl @@ -1,15 +1,13 @@ #version 310 es -struct tint_symbol_block { - int inner; -}; - -layout(binding = 0, std430) buffer tint_symbol_block_1 { +layout(binding = 0, std430) buffer tint_symbol_block_ssbo { int inner; } tint_symbol; -layout(binding = 1, std430) buffer tint_symbol_block_2 { + +layout(binding = 1, std430) buffer tint_symbol_block_ssbo_1 { int inner; } tint_symbol_1; + void tint_symbol_2() { tint_symbol_1.inner = tint_symbol.inner; } diff --git a/test/tint/buffer/storage/types/mat2x2.wgsl.expected.glsl b/test/tint/buffer/storage/types/mat2x2.wgsl.expected.glsl index 44e0e39975..2266eb18d0 100644 --- a/test/tint/buffer/storage/types/mat2x2.wgsl.expected.glsl +++ b/test/tint/buffer/storage/types/mat2x2.wgsl.expected.glsl @@ -1,15 +1,13 @@ #version 310 es -struct tint_symbol_block { - mat2 inner; -}; - -layout(binding = 0, std430) buffer tint_symbol_block_1 { +layout(binding = 0, std430) buffer tint_symbol_block_ssbo { mat2 inner; } tint_symbol; -layout(binding = 1, std430) buffer tint_symbol_block_2 { + +layout(binding = 1, std430) buffer tint_symbol_block_ssbo_1 { mat2 inner; } tint_symbol_1; + void tint_symbol_2() { tint_symbol_1.inner = tint_symbol.inner; } diff --git a/test/tint/buffer/storage/types/mat2x3.wgsl.expected.glsl b/test/tint/buffer/storage/types/mat2x3.wgsl.expected.glsl index 81b2a719ea..8112c5d691 100644 --- a/test/tint/buffer/storage/types/mat2x3.wgsl.expected.glsl +++ b/test/tint/buffer/storage/types/mat2x3.wgsl.expected.glsl @@ -1,15 +1,13 @@ #version 310 es -struct tint_symbol_block { - mat2x3 inner; -}; - -layout(binding = 0, std430) buffer tint_symbol_block_1 { +layout(binding = 0, std430) buffer tint_symbol_block_ssbo { mat2x3 inner; } tint_symbol; -layout(binding = 1, std430) buffer tint_symbol_block_2 { + +layout(binding = 1, std430) buffer tint_symbol_block_ssbo_1 { mat2x3 inner; } tint_symbol_1; + void tint_symbol_2() { tint_symbol_1.inner = tint_symbol.inner; } diff --git a/test/tint/buffer/storage/types/mat3x2.wgsl.expected.glsl b/test/tint/buffer/storage/types/mat3x2.wgsl.expected.glsl index d2ee22149b..ce99ab0d45 100644 --- a/test/tint/buffer/storage/types/mat3x2.wgsl.expected.glsl +++ b/test/tint/buffer/storage/types/mat3x2.wgsl.expected.glsl @@ -1,15 +1,13 @@ #version 310 es -struct tint_symbol_block { - mat3x2 inner; -}; - -layout(binding = 0, std430) buffer tint_symbol_block_1 { +layout(binding = 0, std430) buffer tint_symbol_block_ssbo { mat3x2 inner; } tint_symbol; -layout(binding = 1, std430) buffer tint_symbol_block_2 { + +layout(binding = 1, std430) buffer tint_symbol_block_ssbo_1 { mat3x2 inner; } tint_symbol_1; + void tint_symbol_2() { tint_symbol_1.inner = tint_symbol.inner; } diff --git a/test/tint/buffer/storage/types/mat4x4.wgsl.expected.glsl b/test/tint/buffer/storage/types/mat4x4.wgsl.expected.glsl index 2b60247df1..b6c957aa30 100644 --- a/test/tint/buffer/storage/types/mat4x4.wgsl.expected.glsl +++ b/test/tint/buffer/storage/types/mat4x4.wgsl.expected.glsl @@ -1,15 +1,13 @@ #version 310 es -struct tint_symbol_block { - mat4 inner; -}; - -layout(binding = 0, std430) buffer tint_symbol_block_1 { +layout(binding = 0, std430) buffer tint_symbol_block_ssbo { mat4 inner; } tint_symbol; -layout(binding = 1, std430) buffer tint_symbol_block_2 { + +layout(binding = 1, std430) buffer tint_symbol_block_ssbo_1 { mat4 inner; } tint_symbol_1; + void tint_symbol_2() { tint_symbol_1.inner = tint_symbol.inner; } diff --git a/test/tint/buffer/storage/types/runtime_array.wgsl.expected.glsl b/test/tint/buffer/storage/types/runtime_array.wgsl.expected.glsl index 438385fc23..40eb01bfa0 100644 --- a/test/tint/buffer/storage/types/runtime_array.wgsl.expected.glsl +++ b/test/tint/buffer/storage/types/runtime_array.wgsl.expected.glsl @@ -4,12 +4,14 @@ struct S { float f; }; -layout(binding = 0, std430) buffer tint_symbol_block_1 { +layout(binding = 0, std430) buffer tint_symbol_block_ssbo { S inner[]; } tint_symbol; -layout(binding = 1, std430) buffer tint_symbol_block_2 { + +layout(binding = 1, std430) buffer tint_symbol_block_ssbo_1 { S inner[]; } tint_symbol_1; + void tint_symbol_2() { tint_symbol_1.inner[0] = tint_symbol.inner[0]; } diff --git a/test/tint/buffer/storage/types/struct.wgsl.expected.glsl b/test/tint/buffer/storage/types/struct.wgsl.expected.glsl index e20caabe61..d33f278f78 100644 --- a/test/tint/buffer/storage/types/struct.wgsl.expected.glsl +++ b/test/tint/buffer/storage/types/struct.wgsl.expected.glsl @@ -6,16 +6,14 @@ struct Inner { float f; }; -struct S { - Inner inner; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { Inner inner; } tint_symbol; -layout(binding = 1, std430) buffer S_2 { + +layout(binding = 1, std430) buffer S_ssbo_1 { Inner inner; } tint_symbol_1; + void tint_symbol_2() { tint_symbol_1 = tint_symbol; } @@ -26,8 +24,8 @@ void main() { return; } Error parsing GLSL shader: -ERROR: 0:18: 'assign' : cannot convert from 'layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{ global highp float f} inner}' to 'layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{ global highp float f} inner}' -ERROR: 0:18: '' : compilation terminated +ERROR: 0:16: 'assign' : cannot convert from 'layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{ global highp float f} inner}' to 'layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{ global highp float f} inner}' +ERROR: 0:16: '' : compilation terminated ERROR: 2 compilation errors. No code generated. diff --git a/test/tint/buffer/storage/types/u32.wgsl.expected.glsl b/test/tint/buffer/storage/types/u32.wgsl.expected.glsl index c239e5a543..5ee3c7c7f3 100644 --- a/test/tint/buffer/storage/types/u32.wgsl.expected.glsl +++ b/test/tint/buffer/storage/types/u32.wgsl.expected.glsl @@ -1,15 +1,13 @@ #version 310 es -struct tint_symbol_block { - uint inner; -}; - -layout(binding = 0, std430) buffer tint_symbol_block_1 { +layout(binding = 0, std430) buffer tint_symbol_block_ssbo { uint inner; } tint_symbol; -layout(binding = 1, std430) buffer tint_symbol_block_2 { + +layout(binding = 1, std430) buffer tint_symbol_block_ssbo_1 { uint inner; } tint_symbol_1; + void tint_symbol_2() { tint_symbol_1.inner = tint_symbol.inner; } diff --git a/test/tint/buffer/storage/types/vec2.wgsl.expected.glsl b/test/tint/buffer/storage/types/vec2.wgsl.expected.glsl index 65e25d0c27..078f7e6515 100644 --- a/test/tint/buffer/storage/types/vec2.wgsl.expected.glsl +++ b/test/tint/buffer/storage/types/vec2.wgsl.expected.glsl @@ -1,15 +1,13 @@ #version 310 es -struct tint_symbol_block { - ivec2 inner; -}; - -layout(binding = 0, std430) buffer tint_symbol_block_1 { +layout(binding = 0, std430) buffer tint_symbol_block_ssbo { ivec2 inner; } tint_symbol; -layout(binding = 1, std430) buffer tint_symbol_block_2 { + +layout(binding = 1, std430) buffer tint_symbol_block_ssbo_1 { ivec2 inner; } tint_symbol_1; + void tint_symbol_2() { tint_symbol_1.inner = tint_symbol.inner; } diff --git a/test/tint/buffer/storage/types/vec3.wgsl.expected.glsl b/test/tint/buffer/storage/types/vec3.wgsl.expected.glsl index 3d372558f9..899f170e23 100644 --- a/test/tint/buffer/storage/types/vec3.wgsl.expected.glsl +++ b/test/tint/buffer/storage/types/vec3.wgsl.expected.glsl @@ -1,15 +1,13 @@ #version 310 es -struct tint_symbol_block { - uvec3 inner; -}; - -layout(binding = 0, std430) buffer tint_symbol_block_1 { +layout(binding = 0, std430) buffer tint_symbol_block_ssbo { uvec3 inner; } tint_symbol; -layout(binding = 1, std430) buffer tint_symbol_block_2 { + +layout(binding = 1, std430) buffer tint_symbol_block_ssbo_1 { uvec3 inner; } tint_symbol_1; + void tint_symbol_2() { tint_symbol_1.inner = tint_symbol.inner; } diff --git a/test/tint/buffer/storage/types/vec4.wgsl.expected.glsl b/test/tint/buffer/storage/types/vec4.wgsl.expected.glsl index 4dc8ec5508..fcb4b51082 100644 --- a/test/tint/buffer/storage/types/vec4.wgsl.expected.glsl +++ b/test/tint/buffer/storage/types/vec4.wgsl.expected.glsl @@ -1,15 +1,13 @@ #version 310 es -struct tint_symbol_block { - vec4 inner; -}; - -layout(binding = 0, std430) buffer tint_symbol_block_1 { +layout(binding = 0, std430) buffer tint_symbol_block_ssbo { vec4 inner; } tint_symbol; -layout(binding = 1, std430) buffer tint_symbol_block_2 { + +layout(binding = 1, std430) buffer tint_symbol_block_ssbo_1 { vec4 inner; } tint_symbol_1; + void tint_symbol_2() { tint_symbol_1.inner = tint_symbol.inner; } 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 f9e6f8c207..ebf8edb3b5 100644 --- a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.glsl +++ b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.glsl @@ -34,11 +34,7 @@ struct S { Inner arr[8]; }; -struct S_std140 { - Inner_std140 arr[8]; -}; - -layout(binding = 0) uniform S_std140_1 { +layout(binding = 0) 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 20d54147d3..82cc9d0147 100644 --- a/test/tint/buffer/uniform/static_index/read.wgsl.expected.glsl +++ b/test/tint/buffer/uniform/static_index/read.wgsl.expected.glsl @@ -19,24 +19,7 @@ struct S { Inner l[4]; }; -struct S_std140 { - ivec3 a; - int b; - uvec3 c; - uint d; - vec3 e; - float f; - ivec2 g; - ivec2 h; - mat2x3 i; - vec2 j_0; - vec2 j_1; - vec2 j_2; - Inner k; - Inner l[4]; -}; - -layout(binding = 0) uniform S_std140_1 { +layout(binding = 0) uniform S_std140_ubo { ivec3 a; int b; uvec3 c; 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 9f698b303d..e53a2e01d3 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,11 +17,7 @@ struct Outer_std140 { Inner_std140 a[4]; }; -struct a_block { - Outer_std140 inner[4]; -}; - -layout(binding = 0) uniform a_block_1 { +layout(binding = 0) 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 38280cd474..7f11118c30 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,11 +17,7 @@ struct Outer_std140 { Inner_std140 a[4]; }; -struct a_block { - Outer_std140 inner[4]; -}; - -layout(binding = 0) uniform a_block_1 { +layout(binding = 0) 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 91beaa791c..1850c73ae9 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 @@ -13,11 +13,7 @@ struct S_std140 { int after; }; -struct u_block { - S_std140 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 b2fc7d87d6..576ddd0fee 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 @@ -13,11 +13,7 @@ struct S_std140 { int after; }; -struct u_block { - S_std140 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 7d8afca6f4..a6b76c64e1 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 @@ -13,11 +13,7 @@ struct S_std140 { int after; }; -struct u_block { - S_std140 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 6961e357dc..afca67d20d 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 @@ -13,21 +13,14 @@ struct S_std140 { int after; }; -struct u_block { - S_std140 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) uniform u_block_ubo { S_std140 inner[4]; } u; -struct s_block { - S inner[4]; -}; - -layout(binding = 1, std430) buffer s_block_1 { +layout(binding = 1, std430) buffer s_block_ssbo { S inner[4]; } s; + S conv_S(S_std140 val) { S tint_symbol = S(val.before, mat2(val.m_0, val.m_1), val.after); return tint_symbol; 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 0f49e3f7bf..af5d513251 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 @@ -13,11 +13,7 @@ struct S_std140 { int after; }; -struct u_block { - S_std140 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 77e35850a2..8aaf4c23a9 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 @@ -18,11 +18,7 @@ struct Outer_std140 { Inner_std140 a[4]; }; -struct a_block { - Outer_std140 inner[4]; -}; - -layout(binding = 0) uniform a_block_1 { +layout(binding = 0) 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 3df60e534d..47bf6baaf1 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 @@ -18,11 +18,7 @@ struct Outer_std140 { Inner_std140 a[4]; }; -struct a_block { - Outer_std140 inner[4]; -}; - -layout(binding = 0) uniform a_block_1 { +layout(binding = 0) 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 9ffd3ac080..d940c27e0b 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 @@ -14,11 +14,7 @@ struct S_std140 { int after; }; -struct u_block { - S_std140 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 04a65ebf30..8bcd005382 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 @@ -14,11 +14,7 @@ struct S_std140 { int after; }; -struct u_block { - S_std140 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 f9eeb07d15..3c89125fbd 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 @@ -14,11 +14,7 @@ struct S_std140 { int after; }; -struct u_block { - S_std140 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 3a1cb4900e..df93b2640f 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 @@ -14,21 +14,14 @@ struct S_std140 { int after; }; -struct u_block { - S_std140 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) uniform u_block_ubo { S_std140 inner[4]; } u; -struct s_block { - S inner[4]; -}; - -layout(binding = 1, std430) buffer s_block_1 { +layout(binding = 1, std430) buffer s_block_ssbo { S inner[4]; } 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); return tint_symbol; 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 1c5b65eb9c..d004b4b8e0 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 @@ -14,11 +14,7 @@ struct S_std140 { int after; }; -struct u_block { - S_std140 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 f495bbd571..1ccb8d25a2 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,11 +19,7 @@ struct Outer_std140 { Inner_std140 a[4]; }; -struct a_block { - Outer_std140 inner[4]; -}; - -layout(binding = 0) uniform a_block_1 { +layout(binding = 0) 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 c1a89f673f..5c10cfbace 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,11 +19,7 @@ struct Outer_std140 { Inner_std140 a[4]; }; -struct a_block { - Outer_std140 inner[4]; -}; - -layout(binding = 0) uniform a_block_1 { +layout(binding = 0) 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 110d8e5752..46fbeb6378 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 @@ -15,11 +15,7 @@ struct S_std140 { int after; }; -struct u_block { - S_std140 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 a73babbf70..c409f8b675 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 @@ -15,11 +15,7 @@ struct S_std140 { int after; }; -struct u_block { - S_std140 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 9bf0359b57..9696062194 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 @@ -15,11 +15,7 @@ struct S_std140 { int after; }; -struct u_block { - S_std140 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 fa43041f60..72e4c1c6f8 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 @@ -15,21 +15,14 @@ struct S_std140 { int after; }; -struct u_block { - S_std140 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) uniform u_block_ubo { S_std140 inner[4]; } u; -struct s_block { - S inner[4]; -}; - -layout(binding = 1, std430) buffer s_block_1 { +layout(binding = 1, std430) buffer s_block_ssbo { S inner[4]; } 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); return tint_symbol; 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 945cbcfd4e..5f308a198b 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 @@ -15,11 +15,7 @@ struct S_std140 { int after; }; -struct u_block { - S_std140 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 68352ce944..d07ae638ba 100644 --- a/test/tint/buffer/uniform/types/array.wgsl.expected.glsl +++ b/test/tint/buffer/uniform/types/array.wgsl.expected.glsl @@ -1,10 +1,6 @@ #version 310 es -struct u_block { - vec4 inner[4]; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 4c45bc3fc7..664b5a3490 100644 --- a/test/tint/buffer/uniform/types/f32.wgsl.expected.glsl +++ b/test/tint/buffer/uniform/types/f32.wgsl.expected.glsl @@ -1,10 +1,6 @@ #version 310 es -struct u_block { - float inner; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 7d07279ad3..69fc627f05 100644 --- a/test/tint/buffer/uniform/types/i32.wgsl.expected.glsl +++ b/test/tint/buffer/uniform/types/i32.wgsl.expected.glsl @@ -1,10 +1,6 @@ #version 310 es -struct u_block { - int inner; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 2e7ee4f111..e53fad79a1 100644 --- a/test/tint/buffer/uniform/types/mat2x2.wgsl.expected.glsl +++ b/test/tint/buffer/uniform/types/mat2x2.wgsl.expected.glsl @@ -1,10 +1,6 @@ #version 310 es -struct u_block { - mat2 inner; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 a47210b925..ce089a27dc 100644 --- a/test/tint/buffer/uniform/types/mat2x3.wgsl.expected.glsl +++ b/test/tint/buffer/uniform/types/mat2x3.wgsl.expected.glsl @@ -1,10 +1,6 @@ #version 310 es -struct u_block { - mat2x3 inner; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 2915d77d39..4bf66e37c3 100644 --- a/test/tint/buffer/uniform/types/mat3x2.wgsl.expected.glsl +++ b/test/tint/buffer/uniform/types/mat3x2.wgsl.expected.glsl @@ -1,10 +1,6 @@ #version 310 es -struct u_block { - mat3x2 inner; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 5fb106fd25..f0b2c98854 100644 --- a/test/tint/buffer/uniform/types/mat4x4.wgsl.expected.glsl +++ b/test/tint/buffer/uniform/types/mat4x4.wgsl.expected.glsl @@ -1,10 +1,6 @@ #version 310 es -struct u_block { - mat4 inner; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 e844ec6eed..708f1766c5 100644 --- a/test/tint/buffer/uniform/types/struct.wgsl.expected.glsl +++ b/test/tint/buffer/uniform/types/struct.wgsl.expected.glsl @@ -1,5 +1,3 @@ -SKIP: FAILED - #version 310 es struct Inner { @@ -10,12 +8,12 @@ struct S { Inner inner; }; -layout(binding = 0) uniform S_1 { - Inner inner; +layout(binding = 0) uniform u_block_ubo { + S inner; } u; void tint_symbol() { - S x = u; + S x = u.inner; } layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; @@ -23,10 +21,3 @@ void main() { tint_symbol(); return; } -Error parsing GLSL shader: -ERROR: 0:16: '=' : cannot convert from 'layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform structure{ global highp float f} inner}' to ' temp structure{ global structure{ global highp float f} inner}' -ERROR: 0:16: '' : compilation terminated -ERROR: 2 compilation errors. No code generated. - - - diff --git a/test/tint/buffer/uniform/types/struct.wgsl.expected.spvasm b/test/tint/buffer/uniform/types/struct.wgsl.expected.spvasm index b8d2ad8fce..9c63d49bc6 100644 --- a/test/tint/buffer/uniform/types/struct.wgsl.expected.spvasm +++ b/test/tint/buffer/uniform/types/struct.wgsl.expected.spvasm @@ -1,19 +1,22 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 11 +; Bound: 16 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 OpEntryPoint GLCompute %main "main" OpExecutionMode %main LocalSize 1 1 1 + OpName %u_block "u_block" + OpMemberName %u_block 0 "inner" OpName %S "S" OpMemberName %S 0 "inner" OpName %Inner "Inner" OpMemberName %Inner 0 "f" OpName %u "u" OpName %main "main" - OpDecorate %S Block + OpDecorate %u_block Block + OpMemberDecorate %u_block 0 Offset 0 OpMemberDecorate %S 0 Offset 0 OpMemberDecorate %Inner 0 Offset 0 OpDecorate %u NonWritable @@ -22,12 +25,17 @@ %float = OpTypeFloat 32 %Inner = OpTypeStruct %float %S = OpTypeStruct %Inner -%_ptr_Uniform_S = OpTypePointer Uniform %S - %u = OpVariable %_ptr_Uniform_S Uniform + %u_block = OpTypeStruct %S +%_ptr_Uniform_u_block = OpTypePointer Uniform %u_block + %u = OpVariable %_ptr_Uniform_u_block Uniform %void = OpTypeVoid - %6 = OpTypeFunction %void - %main = OpFunction %void None %6 - %9 = OpLabel - %10 = OpLoad %S %u + %7 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %uint_0 = OpConstant %uint 0 +%_ptr_Uniform_S = OpTypePointer Uniform %S + %main = OpFunction %void None %7 + %10 = OpLabel + %14 = OpAccessChain %_ptr_Uniform_S %u %uint_0 + %15 = OpLoad %S %14 OpReturn OpFunctionEnd diff --git a/test/tint/buffer/uniform/types/u32.wgsl.expected.glsl b/test/tint/buffer/uniform/types/u32.wgsl.expected.glsl index c3369ca720..68cf9bc601 100644 --- a/test/tint/buffer/uniform/types/u32.wgsl.expected.glsl +++ b/test/tint/buffer/uniform/types/u32.wgsl.expected.glsl @@ -1,10 +1,6 @@ #version 310 es -struct u_block { - uint inner; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 208277de66..d3a3922af1 100644 --- a/test/tint/buffer/uniform/types/vec2.wgsl.expected.glsl +++ b/test/tint/buffer/uniform/types/vec2.wgsl.expected.glsl @@ -1,10 +1,6 @@ #version 310 es -struct u_block { - ivec2 inner; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 05975ff581..473cdcdd26 100644 --- a/test/tint/buffer/uniform/types/vec3.wgsl.expected.glsl +++ b/test/tint/buffer/uniform/types/vec3.wgsl.expected.glsl @@ -1,10 +1,6 @@ #version 310 es -struct u_block { - uvec3 inner; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 93a224ef3b..20066797c2 100644 --- a/test/tint/buffer/uniform/types/vec4.wgsl.expected.glsl +++ b/test/tint/buffer/uniform/types/vec4.wgsl.expected.glsl @@ -1,10 +1,6 @@ #version 310 es -struct u_block { - vec4 inner; -}; - -layout(binding = 0) uniform u_block_1 { +layout(binding = 0) 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 5793189668..685ab0375b 100644 --- a/test/tint/bug/chromium/1273230.wgsl.expected.glsl +++ b/test/tint/bug/chromium/1273230.wgsl.expected.glsl @@ -1,30 +1,6 @@ #version 310 es -struct Uniforms { - uint numTriangles; - uint gridSize; - uint puuuuuuuuuuuuuuuuad1; - uint pad2; - vec3 bbMin; - vec3 bbMax; -}; - -struct Dbg { - uint offsetCounter; - uint pad0; - uint pad1; - uint pad2; - uint value0; - uint value1; - uint value2; - uint value3; - float value_f32_0; - float value_f32_1; - float value_f32_2; - float value_f32_3; -}; - -layout(binding = 0) uniform Uniforms_1 { +layout(binding = 0) uniform Uniforms_ubo { uint numTriangles; uint gridSize; uint puuuuuuuuuuuuuuuuad1; @@ -33,19 +9,23 @@ layout(binding = 0) uniform Uniforms_1 { vec3 bbMax; } uniforms; -layout(binding = 10, std430) buffer U32s_1 { +layout(binding = 10, std430) buffer U32s_ssbo { uint values[]; } indices; -layout(binding = 11, std430) buffer F32s_1 { + +layout(binding = 11, std430) buffer F32s_ssbo { float values[]; } positions; -layout(binding = 20, std430) buffer AU32s_1 { + +layout(binding = 20, std430) buffer AU32s_ssbo { uint values[]; } counters; -layout(binding = 21, std430) buffer AI32s_1 { + +layout(binding = 21, std430) buffer AI32s_ssbo { int values[]; } LUT; -layout(binding = 50, std430) buffer Dbg_1 { + +layout(binding = 50, std430) buffer Dbg_ssbo { uint offsetCounter; uint pad0; uint pad1; @@ -59,6 +39,7 @@ layout(binding = 50, std430) buffer Dbg_1 { float value_f32_2; float value_f32_3; } dbg; + vec3 toVoxelPos(vec3 position) { vec3 bbMin = vec3(uniforms.bbMin.x, uniforms.bbMin.y, uniforms.bbMin.z); vec3 bbMax = vec3(uniforms.bbMax.x, uniforms.bbMax.y, uniforms.bbMax.z); diff --git a/test/tint/bug/chromium/1290107.wgsl.expected.glsl b/test/tint/bug/chromium/1290107.wgsl.expected.glsl index 4073388472..7c5b1d367b 100644 --- a/test/tint/bug/chromium/1290107.wgsl.expected.glsl +++ b/test/tint/bug/chromium/1290107.wgsl.expected.glsl @@ -4,9 +4,10 @@ struct S { float f; }; -layout(binding = 0, std430) buffer arr_block_1 { +layout(binding = 0, std430) buffer arr_block_ssbo { S inner[]; } arr; + void tint_symbol() { uint len = uint(arr.inner.length()); } diff --git a/test/tint/bug/dawn/947.wgsl.expected.glsl b/test/tint/bug/dawn/947.wgsl.expected.glsl index ce20459b0a..1eb72211e1 100644 --- a/test/tint/bug/dawn/947.wgsl.expected.glsl +++ b/test/tint/bug/dawn/947.wgsl.expected.glsl @@ -13,12 +13,7 @@ bug/dawn/947.wgsl:55:33 note: reading from user-defined input 'texcoord' may res #version 310 es layout(location = 0) out vec2 texcoords_1; -struct Uniforms { - vec2 u_scale; - vec2 u_offset; -}; - -layout(binding = 0) uniform Uniforms_1 { +layout(binding = 0) 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 c1318a7e83..e7bad69788 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,10 +1,6 @@ #version 310 es -struct UBO { - int dynamic_idx; -}; - -layout(binding = 0) uniform UBO_1 { +layout(binding = 0) uniform UBO_ubo { int dynamic_idx; } ubo; @@ -12,13 +8,10 @@ struct S { int data[64]; }; -struct Result { - int tint_symbol; -}; - -layout(binding = 1, std430) buffer Result_1 { +layout(binding = 1, std430) buffer Result_ssbo { int tint_symbol; } result; + void f() { S s = S(int[64](0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); result.tint_symbol = s.data[ubo.dynamic_idx]; 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 f0795b3f10..8ed17e0d52 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,10 +1,6 @@ #version 310 es -struct UBO { - int dynamic_idx; -}; - -layout(binding = 0) uniform UBO_1 { +layout(binding = 0) uniform UBO_ubo { int dynamic_idx; } ubo; @@ -12,13 +8,10 @@ struct S { int data[64]; }; -struct Result { - int tint_symbol; -}; - -layout(binding = 1, std430) buffer Result_1 { +layout(binding = 1, std430) buffer Result_ssbo { int tint_symbol; } result; + S s = S(int[64](0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); void f() { result.tint_symbol = s.data[ubo.dynamic_idx]; 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 549058c877..68fb6499f8 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,27 +1,17 @@ #version 310 es -struct UBO { - int dynamic_idx; -}; - -layout(binding = 0) uniform UBO_1 { +layout(binding = 0) uniform UBO_ubo { int dynamic_idx; } ubo; -struct Result { - int tint_symbol; -}; - -layout(binding = 2, std430) buffer Result_1 { +layout(binding = 2, std430) buffer Result_ssbo { int tint_symbol; } result; -struct SSBO { - int data[4]; -}; -layout(binding = 1, std430) buffer SSBO_1 { +layout(binding = 1, std430) buffer SSBO_ssbo { int data[4]; } ssbo; + void f() { result.tint_symbol = ssbo.data[ubo.dynamic_idx]; } 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 641aa10b91..e980b5d8f7 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,22 +1,14 @@ #version 310 es -struct UBO { - ivec4 data[4]; - int dynamic_idx; -}; - -layout(binding = 0) uniform UBO_1 { +layout(binding = 0) uniform UBO_ubo { ivec4 data[4]; int dynamic_idx; } ubo; -struct Result { - int tint_symbol; -}; - -layout(binding = 2, std430) buffer Result_1 { +layout(binding = 2, std430) buffer Result_ssbo { int tint_symbol; } result; + void f() { result.tint_symbol = ubo.data[ubo.dynamic_idx].x; } 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 6f0710e4d4..c98cbdf305 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,10 +1,6 @@ #version 310 es -struct UBO { - int dynamic_idx; -}; - -layout(binding = 0) uniform UBO_1 { +layout(binding = 0) uniform UBO_ubo { int dynamic_idx; } ubo; @@ -12,13 +8,10 @@ struct S { int data[64]; }; -struct Result { - int tint_symbol; -}; - -layout(binding = 1, std430) buffer Result_1 { +layout(binding = 1, std430) buffer Result_ssbo { int tint_symbol; } result; + shared S s; void f(uint local_invocation_index) { { 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 a2b99f21cf..1798e8b60a 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,10 +1,6 @@ #version 310 es -struct UBO { - int dynamic_idx; -}; - -layout(binding = 0) uniform UBO_1 { +layout(binding = 0) uniform UBO_ubo { int dynamic_idx; } ubo; @@ -12,13 +8,10 @@ struct S { int data[64]; }; -struct Result { - int tint_symbol; -}; - -layout(binding = 1, std430) buffer Result_1 { +layout(binding = 1, std430) buffer Result_ssbo { int tint_symbol; } result; + void f() { S s = S(int[64](0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); s.data[ubo.dynamic_idx] = 1; 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 a2dd31174c..a5ca9c710c 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,10 +1,6 @@ #version 310 es -struct UBO { - int dynamic_idx; -}; - -layout(binding = 0) uniform UBO_1 { +layout(binding = 0) uniform UBO_ubo { int dynamic_idx; } ubo; @@ -12,13 +8,10 @@ struct S { int data[64]; }; -struct Result { - int tint_symbol; -}; - -layout(binding = 1, std430) buffer Result_1 { +layout(binding = 1, std430) buffer Result_ssbo { int tint_symbol; } result; + void x(inout S p) { p.data[ubo.dynamic_idx] = 1; } 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 23f401b26b..f5737c7a3c 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,10 +1,6 @@ #version 310 es -struct UBO { - int dynamic_idx; -}; - -layout(binding = 0) uniform UBO_1 { +layout(binding = 0) uniform UBO_ubo { int dynamic_idx; } ubo; @@ -12,13 +8,10 @@ struct S { int data[64]; }; -struct Result { - int tint_symbol; -}; - -layout(binding = 1, std430) buffer Result_1 { +layout(binding = 1, std430) buffer Result_ssbo { int tint_symbol; } result; + S s = S(int[64](0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); void f() { s.data[ubo.dynamic_idx] = 1; 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 3044061117..6ecdef3f43 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,10 +1,6 @@ #version 310 es -struct UBO { - int dynamic_idx; -}; - -layout(binding = 0) uniform UBO_1 { +layout(binding = 0) uniform UBO_ubo { int dynamic_idx; } ubo; @@ -12,13 +8,10 @@ struct S { int data[64]; }; -struct Result { - int tint_symbol; -}; - -layout(binding = 1, std430) buffer Result_1 { +layout(binding = 1, std430) buffer Result_ssbo { int tint_symbol; } result; + S s = S(int[64](0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); void x(inout S p) { p.data[ubo.dynamic_idx] = 1; 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 306a76ecc7..8fc82a26ff 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,27 +1,17 @@ #version 310 es -struct UBO { - int dynamic_idx; -}; - -layout(binding = 0) uniform UBO_1 { +layout(binding = 0) uniform UBO_ubo { int dynamic_idx; } ubo; -struct Result { - int tint_symbol; -}; - -layout(binding = 2, std430) buffer Result_1 { +layout(binding = 2, std430) buffer Result_ssbo { int tint_symbol; } result; -struct SSBO { - int data[4]; -}; -layout(binding = 1, std430) buffer SSBO_1 { +layout(binding = 1, std430) buffer SSBO_ssbo { int data[4]; } ssbo; + void f() { ssbo.data[ubo.dynamic_idx] = 1; result.tint_symbol = ssbo.data[3]; 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 5571c8274a..11cf2013dc 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,10 +1,6 @@ #version 310 es -struct UBO { - int dynamic_idx; -}; - -layout(binding = 0) uniform UBO_1 { +layout(binding = 0) uniform UBO_ubo { int dynamic_idx; } ubo; @@ -12,13 +8,10 @@ struct S { int data[64]; }; -struct Result { - int tint_symbol; -}; - -layout(binding = 1, std430) buffer Result_1 { +layout(binding = 1, std430) buffer Result_ssbo { int tint_symbol; } result; + shared S s; void f(uint local_invocation_index) { { 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 dcce86f924..af6d54473a 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 @@ -1,9 +1,5 @@ #version 310 es -struct Simulation { - uint i; -}; - struct Particle { vec3 position[8]; float lifetime; @@ -11,10 +7,11 @@ struct Particle { vec3 velocity; }; -layout(binding = 3, std430) buffer Particles_1 { +layout(binding = 3, std430) buffer Particles_ssbo { Particle p[]; } particles; -layout(binding = 4) uniform Simulation_1 { + +layout(binding = 4) uniform Simulation_ubo { uint i; } sim; 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 efc5916f17..719abc4468 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,11 +1,6 @@ #version 310 es -struct Uniforms { - uint i; - uint j; -}; - -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; uint j; } uniforms; 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 3c4ef9e1eb..d3300f2582 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,11 +1,6 @@ #version 310 es -struct Uniforms { - uint i; - uint j; -}; - -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; uint j; } uniforms; 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 e2f093e168..daf05d32a1 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,11 +1,6 @@ #version 310 es -struct Uniforms { - uint i; - uint j; -}; - -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; uint j; } uniforms; 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 8e13a9f3fb..dfeccecfd4 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,11 +1,6 @@ #version 310 es -struct Uniforms { - uint i; - uint j; -}; - -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; uint j; } uniforms; 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 127b0a1b69..647fc8675f 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,11 +1,6 @@ #version 310 es -struct Uniforms { - uint i; - uint j; -}; - -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; uint j; } uniforms; 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 e3018099eb..c0f23a7b70 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,11 +1,6 @@ #version 310 es -struct Uniforms { - uint i; - uint j; -}; - -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; uint j; } uniforms; 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 e2f093e168..daf05d32a1 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,11 +1,6 @@ #version 310 es -struct Uniforms { - uint i; - uint j; -}; - -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; uint j; } uniforms; 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 59c7f97bc8..309d081d63 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,11 +1,6 @@ #version 310 es -struct Uniforms { - uint i; - uint j; -}; - -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; uint j; } uniforms; diff --git a/test/tint/bug/tint/1046.wgsl.expected.glsl b/test/tint/bug/tint/1046.wgsl.expected.glsl index 25caf1977f..a65f34438a 100644 --- a/test/tint/bug/tint/1046.wgsl.expected.glsl +++ b/test/tint/bug/tint/1046.wgsl.expected.glsl @@ -10,15 +10,7 @@ struct PointLight { vec4 position; }; -struct Uniforms { - mat4 worldView; - mat4 proj; - uint numPointLights; - uint color_source; - vec4 color; -}; - -layout(binding = 0) uniform Uniforms_1 { +layout(binding = 0) uniform Uniforms_ubo { mat4 worldView; mat4 proj; uint numPointLights; @@ -26,9 +18,10 @@ layout(binding = 0) uniform Uniforms_1 { vec4 color; } uniforms; -layout(binding = 1, std430) buffer PointLights_1 { +layout(binding = 1, std430) buffer PointLights_ssbo { PointLight values[]; } pointLights; + struct FragmentInput { vec4 position; vec4 view_position; diff --git a/test/tint/bug/tint/1061.spvasm.expected.glsl b/test/tint/bug/tint/1061.spvasm.expected.glsl index 57d9959419..edeb86cb73 100644 --- a/test/tint/bug/tint/1061.spvasm.expected.glsl +++ b/test/tint/bug/tint/1061.spvasm.expected.glsl @@ -2,11 +2,7 @@ precision mediump float; layout(location = 0) out vec4 x_GLF_color_1_1; -struct buf0 { - vec4 ref; -}; - -layout(binding = 0) uniform buf0_1 { +layout(binding = 0) 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 20c3aba743..6084c129d9 100644 --- a/test/tint/bug/tint/1088.spvasm.expected.glsl +++ b/test/tint/bug/tint/1088.spvasm.expected.glsl @@ -8,15 +8,8 @@ struct strided_arr { float el; }; -struct LeftOver { - mat4 worldViewProjection; - float time; - mat4 test2[2]; - strided_arr test[4]; -}; - vec3 position = vec3(0.0f, 0.0f, 0.0f); -layout(binding = 2) uniform LeftOver_1 { +layout(binding = 2) uniform LeftOver_ubo { mat4 worldViewProjection; float time; mat4 test2[2]; diff --git a/test/tint/bug/tint/1113.wgsl.expected.glsl b/test/tint/bug/tint/1113.wgsl.expected.glsl index 43d7029be8..c077619d30 100644 --- a/test/tint/bug/tint/1113.wgsl.expected.glsl +++ b/test/tint/bug/tint/1113.wgsl.expected.glsl @@ -1,30 +1,6 @@ #version 310 es -struct Uniforms { - uint numTriangles; - uint gridSize; - uint pad1; - uint pad2; - vec3 bbMin; - vec3 bbMax; -}; - -struct Dbg { - uint offsetCounter; - uint pad0; - uint pad1; - uint pad2; - uint value0; - uint value1; - uint value2; - uint value3; - float value_f32_0; - float value_f32_1; - float value_f32_2; - float value_f32_3; -}; - -layout(binding = 0) uniform Uniforms_1 { +layout(binding = 0) uniform Uniforms_ubo { uint numTriangles; uint gridSize; uint pad1; @@ -33,19 +9,23 @@ layout(binding = 0) uniform Uniforms_1 { vec3 bbMax; } uniforms; -layout(binding = 10, std430) buffer U32s_1 { +layout(binding = 10, std430) buffer U32s_ssbo { uint values[]; } indices; -layout(binding = 11, std430) buffer F32s_1 { + +layout(binding = 11, std430) buffer F32s_ssbo { float values[]; } positions; -layout(binding = 20, std430) buffer AU32s_1 { + +layout(binding = 20, std430) buffer AU32s_ssbo { uint values[]; } counters; -layout(binding = 21, std430) buffer AI32s_1 { + +layout(binding = 21, std430) buffer AI32s_ssbo { int values[]; } LUT; -layout(binding = 50, std430) buffer Dbg_1 { + +layout(binding = 50, std430) buffer Dbg_ssbo { uint offsetCounter; uint pad0; uint pad1; @@ -59,6 +39,7 @@ layout(binding = 50, std430) buffer Dbg_1 { float value_f32_2; float value_f32_3; } dbg; + vec3 toVoxelPos(vec3 position) { vec3 bbMin = vec3(uniforms.bbMin.x, uniforms.bbMin.y, uniforms.bbMin.z); vec3 bbMax = vec3(uniforms.bbMax.x, uniforms.bbMax.y, uniforms.bbMax.z); @@ -121,31 +102,7 @@ void main() { } #version 310 es -struct Uniforms { - uint numTriangles; - uint gridSize; - uint pad1; - uint pad2; - vec3 bbMin; - vec3 bbMax; -}; - -struct Dbg { - uint offsetCounter; - uint pad0; - uint pad1; - uint pad2; - uint value0; - uint value1; - uint value2; - uint value3; - float value_f32_0; - float value_f32_1; - float value_f32_2; - float value_f32_3; -}; - -layout(binding = 0) uniform Uniforms_1 { +layout(binding = 0) uniform Uniforms_ubo { uint numTriangles; uint gridSize; uint pad1; @@ -154,19 +111,23 @@ layout(binding = 0) uniform Uniforms_1 { vec3 bbMax; } uniforms; -layout(binding = 10, std430) buffer U32s_1 { +layout(binding = 10, std430) buffer U32s_ssbo { uint values[]; } indices; -layout(binding = 11, std430) buffer F32s_1 { + +layout(binding = 11, std430) buffer F32s_ssbo { float values[]; } positions; -layout(binding = 20, std430) buffer AU32s_1 { + +layout(binding = 20, std430) buffer AU32s_ssbo { uint values[]; } counters; -layout(binding = 21, std430) buffer AI32s_1 { + +layout(binding = 21, std430) buffer AI32s_ssbo { int values[]; } LUT; -layout(binding = 50, std430) buffer Dbg_1 { + +layout(binding = 50, std430) buffer Dbg_ssbo { uint offsetCounter; uint pad0; uint pad1; @@ -180,6 +141,7 @@ layout(binding = 50, std430) buffer Dbg_1 { float value_f32_2; float value_f32_3; } dbg; + void doIgnore() { uint g42 = uniforms.numTriangles; uint kj6 = dbg.value1; @@ -212,31 +174,7 @@ void main() { } #version 310 es -struct Uniforms { - uint numTriangles; - uint gridSize; - uint pad1; - uint pad2; - vec3 bbMin; - vec3 bbMax; -}; - -struct Dbg { - uint offsetCounter; - uint pad0; - uint pad1; - uint pad2; - uint value0; - uint value1; - uint value2; - uint value3; - float value_f32_0; - float value_f32_1; - float value_f32_2; - float value_f32_3; -}; - -layout(binding = 0) uniform Uniforms_1 { +layout(binding = 0) uniform Uniforms_ubo { uint numTriangles; uint gridSize; uint pad1; @@ -245,19 +183,23 @@ layout(binding = 0) uniform Uniforms_1 { vec3 bbMax; } uniforms; -layout(binding = 10, std430) buffer U32s_1 { +layout(binding = 10, std430) buffer U32s_ssbo { uint values[]; } indices; -layout(binding = 11, std430) buffer F32s_1 { + +layout(binding = 11, std430) buffer F32s_ssbo { float values[]; } positions; -layout(binding = 20, std430) buffer AU32s_1 { + +layout(binding = 20, std430) buffer AU32s_ssbo { uint values[]; } counters; -layout(binding = 21, std430) buffer AI32s_1 { + +layout(binding = 21, std430) buffer AI32s_ssbo { int values[]; } LUT; -layout(binding = 50, std430) buffer Dbg_1 { + +layout(binding = 50, std430) buffer Dbg_ssbo { uint offsetCounter; uint pad0; uint pad1; @@ -271,6 +213,7 @@ layout(binding = 50, std430) buffer Dbg_1 { float value_f32_2; float value_f32_3; } dbg; + vec3 toVoxelPos(vec3 position) { vec3 bbMin = vec3(uniforms.bbMin.x, uniforms.bbMin.y, uniforms.bbMin.z); vec3 bbMax = vec3(uniforms.bbMax.x, uniforms.bbMax.y, uniforms.bbMax.z); diff --git a/test/tint/bug/tint/1118.wgsl.expected.glsl b/test/tint/bug/tint/1118.wgsl.expected.glsl index a39c375bcb..a6952110fd 100644 --- a/test/tint/bug/tint/1118.wgsl.expected.glsl +++ b/test/tint/bug/tint/1118.wgsl.expected.glsl @@ -16,29 +16,13 @@ precision mediump float; layout(location = 2) in float fClipDistance3_param_1; layout(location = 3) in float fClipDistance4_param_1; layout(location = 0) out vec4 glFragColor_1_1; -struct Scene { - vec4 vEyePosition; -}; - -struct Material { - vec4 vDiffuseColor; - vec3 vAmbientColor; - float placeholder; - vec3 vEmissiveColor; - float placeholder2; -}; - -struct Mesh { - float visibility; -}; - float fClipDistance3 = 0.0f; float fClipDistance4 = 0.0f; -layout(binding = 0) uniform Scene_1 { +layout(binding = 0) uniform Scene_ubo { vec4 vEyePosition; } x_29; -layout(binding = 1) uniform Material_1 { +layout(binding = 1) uniform Material_ubo { vec4 vDiffuseColor; vec3 vAmbientColor; float placeholder; @@ -46,7 +30,7 @@ layout(binding = 1) uniform Material_1 { float placeholder2; } x_49; -layout(binding = 2) uniform Mesh_1 { +layout(binding = 2) uniform Mesh_ubo { float visibility; } x_137; diff --git a/test/tint/bug/tint/1121.wgsl.expected.glsl b/test/tint/bug/tint/1121.wgsl.expected.glsl index da9bf0f620..e509937fd3 100644 --- a/test/tint/bug/tint/1121.wgsl.expected.glsl +++ b/test/tint/bug/tint/1121.wgsl.expected.glsl @@ -6,31 +6,20 @@ struct LightData { float radius; }; -layout(binding = 0, std430) buffer LightsBuffer_1 { +layout(binding = 0, std430) buffer LightsBuffer_ssbo { LightData lights[]; } lightsBuffer; + struct TileLightIdData { uint count; uint lightId[64]; }; -struct Tiles { - TileLightIdData data[4]; -}; - -layout(binding = 0, std430) buffer Tiles_1 { +layout(binding = 0, std430) buffer Tiles_ssbo { TileLightIdData data[4]; } tileLightId; -struct Config { - uint numLights; - uint numTiles; - uint tileCountX; - uint tileCountY; - uint numTileLightSlot; - uint tileSize; -}; -layout(binding = 0) uniform Config_1 { +layout(binding = 0) uniform Config_ubo { uint numLights; uint numTiles; uint tileCountX; @@ -39,15 +28,7 @@ layout(binding = 0) uniform Config_1 { uint tileSize; } config; -struct Uniforms { - vec4 tint_symbol; - vec4 tint_symbol_1; - mat4 viewMatrix; - mat4 projectionMatrix; - vec4 fullScreenSize; -}; - -layout(binding = 0) uniform Uniforms_1 { +layout(binding = 0) uniform Uniforms_ubo { vec4 tint_symbol; vec4 tint_symbol_1; mat4 viewMatrix; diff --git a/test/tint/bug/tint/1136.wgsl.expected.glsl b/test/tint/bug/tint/1136.wgsl.expected.glsl index 38b94eeead..958228b037 100644 --- a/test/tint/bug/tint/1136.wgsl.expected.glsl +++ b/test/tint/bug/tint/1136.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct Buffer { - uint data; -}; - -layout(binding = 0, std430) buffer Buffer_1 { +layout(binding = 0, std430) buffer Buffer_ssbo { uint data; } tint_symbol; + void tint_symbol_1() { tint_symbol.data = (tint_symbol.data + 1u); } diff --git a/test/tint/bug/tint/1385.wgsl.expected.glsl b/test/tint/bug/tint/1385.wgsl.expected.glsl index caa638681f..b4f293a648 100644 --- a/test/tint/bug/tint/1385.wgsl.expected.glsl +++ b/test/tint/bug/tint/1385.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 1, std430) buffer data_block_1 { +layout(binding = 1, std430) buffer data_block_ssbo { int inner[]; } data; + int foo() { return data.inner[0]; } diff --git a/test/tint/bug/tint/1520.spvasm.expected.glsl b/test/tint/bug/tint/1520.spvasm.expected.glsl index 468864c04f..0e08ab8ad2 100644 --- a/test/tint/bug/tint/1520.spvasm.expected.glsl +++ b/test/tint/bug/tint/1520.spvasm.expected.glsl @@ -3,14 +3,7 @@ precision mediump float; layout(location = 0) in vec4 vcolor_S0_param_1; layout(location = 0) out vec4 sk_FragColor_1_1; -struct UniformBuffer { - float unknownInput_S1_c0; - vec4 ucolorRed_S1_c0; - vec4 ucolorGreen_S1_c0; - mat3 umatrix_S1; -}; - -layout(binding = 0) uniform UniformBuffer_1 { +layout(binding = 0) uniform UniformBuffer_ubo { float unknownInput_S1_c0; vec4 ucolorRed_S1_c0; vec4 ucolorGreen_S1_c0; diff --git a/test/tint/bug/tint/1573.wgsl.expected.glsl b/test/tint/bug/tint/1573.wgsl.expected.glsl index 013839ef12..55803e2858 100644 --- a/test/tint/bug/tint/1573.wgsl.expected.glsl +++ b/test/tint/bug/tint/1573.wgsl.expected.glsl @@ -6,13 +6,10 @@ struct atomic_compare_exchange_resultu32 { }; -struct a_block { - uint inner; -}; - -layout(binding = 0, std430) buffer a_block_1 { +layout(binding = 0, std430) buffer a_block_ssbo { uint inner; } a; + void tint_symbol() { uint value = 42u; atomic_compare_exchange_resultu32 atomic_compare_result; diff --git a/test/tint/bug/tint/1574.wgsl.expected.glsl b/test/tint/bug/tint/1574.wgsl.expected.glsl index bf711e7891..3c839bf32a 100644 --- a/test/tint/bug/tint/1574.wgsl.expected.glsl +++ b/test/tint/bug/tint/1574.wgsl.expected.glsl @@ -11,20 +11,14 @@ struct atomic_compare_exchange_resulti32 { }; -struct a_u32_block { - uint inner; -}; - -layout(binding = 0, std430) buffer a_u32_block_1 { +layout(binding = 0, std430) buffer a_u32_block_ssbo { uint inner; } a_u32; -struct a_i32_block { - int inner; -}; -layout(binding = 1, std430) buffer a_i32_block_1 { +layout(binding = 1, std430) buffer a_i32_block_ssbo { int inner; } a_i32; + shared uint b_u32; shared int b_i32; void tint_symbol(uint local_invocation_index) { diff --git a/test/tint/bug/tint/221.wgsl.expected.glsl b/test/tint/bug/tint/221.wgsl.expected.glsl index eddc7479af..65779b74ac 100644 --- a/test/tint/bug/tint/221.wgsl.expected.glsl +++ b/test/tint/bug/tint/221.wgsl.expected.glsl @@ -1,14 +1,10 @@ #version 310 es -struct Buf { - uint count; - uint data[50]; -}; - -layout(binding = 0, std430) buffer Buf_1 { +layout(binding = 0, std430) buffer Buf_ssbo { uint count; uint data[50]; } b; + void tint_symbol() { uint i = 0u; while (true) { diff --git a/test/tint/bug/tint/294.wgsl.expected.glsl b/test/tint/bug/tint/294.wgsl.expected.glsl index 023a18087c..8bfaa2e57b 100644 --- a/test/tint/bug/tint/294.wgsl.expected.glsl +++ b/test/tint/bug/tint/294.wgsl.expected.glsl @@ -9,6 +9,7 @@ struct Light { vec3 colour; }; -layout(binding = 1, std430) buffer Lights_1 { +layout(binding = 1, std430) buffer Lights_ssbo { Light light[]; } lights; + diff --git a/test/tint/bug/tint/369.wgsl.expected.glsl b/test/tint/bug/tint/369.wgsl.expected.glsl index aa195e8fc7..0a45971659 100644 --- a/test/tint/bug/tint/369.wgsl.expected.glsl +++ b/test/tint/bug/tint/369.wgsl.expected.glsl @@ -4,19 +4,11 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - mat2 m; -}; - -struct S_std140 { - vec2 m_0; - vec2 m_1; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { mat2 m; } SSBO; -layout(binding = 0) uniform S_std140_1 { + +layout(binding = 0) 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 e89b9eea1b..836967695b 100644 --- a/test/tint/bug/tint/403.wgsl.expected.glsl +++ b/test/tint/bug/tint/403.wgsl.expected.glsl @@ -4,26 +4,16 @@ struct vertexUniformBuffer1 { mat2 transform1; }; -struct vertexUniformBuffer1_std140 { - vec2 transform1_0; - vec2 transform1_1; -}; - struct vertexUniformBuffer2 { mat2 transform2; }; -struct vertexUniformBuffer2_std140 { - vec2 transform2_0; - vec2 transform2_1; -}; - -layout(binding = 0) uniform vertexUniformBuffer1_std140_1 { +layout(binding = 0) uniform vertexUniformBuffer1_std140_ubo { vec2 transform1_0; vec2 transform1_1; } x_20; -layout(binding = 0) uniform vertexUniformBuffer2_std140_1 { +layout(binding = 0) uniform vertexUniformBuffer2_std140_ubo { vec2 transform2_0; vec2 transform2_1; } x_26; diff --git a/test/tint/bug/tint/492.wgsl.expected.glsl b/test/tint/bug/tint/492.wgsl.expected.glsl index 74c958edd5..1e8e23f783 100644 --- a/test/tint/bug/tint/492.wgsl.expected.glsl +++ b/test/tint/bug/tint/492.wgsl.expected.glsl @@ -1,12 +1,9 @@ #version 310 es -struct S { - int a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a; } buf; + void tint_symbol() { buf.a = 12; } diff --git a/test/tint/bug/tint/534.wgsl.expected.glsl b/test/tint/bug/tint/534.wgsl.expected.glsl index cf35895643..7c556c5b9f 100644 --- a/test/tint/bug/tint/534.wgsl.expected.glsl +++ b/test/tint/bug/tint/534.wgsl.expected.glsl @@ -1,16 +1,10 @@ #version 310 es -struct Uniforms { - uint dstTextureFlipY; - uint isFloat16; - uint isRGB10A2Unorm; - uint channelCount; -}; - -layout(binding = 2, std430) buffer OutputBuf_1 { +layout(binding = 2, std430) buffer OutputBuf_ssbo { uint result[]; } tint_symbol; -layout(binding = 3) uniform Uniforms_1 { + +layout(binding = 3) 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 b6c9722d88..eeeef6750d 100644 --- a/test/tint/bug/tint/744.wgsl.expected.glsl +++ b/test/tint/bug/tint/744.wgsl.expected.glsl @@ -1,21 +1,18 @@ #version 310 es -struct Uniforms { - uvec2 aShape; - uvec2 bShape; - uvec2 outShape; -}; - -layout(binding = 0, std430) buffer Matrix_1 { +layout(binding = 0, std430) buffer Matrix_ssbo { uint numbers[]; } firstMatrix; -layout(binding = 1, std430) buffer Matrix_2 { + +layout(binding = 1, std430) buffer Matrix_ssbo_1 { uint numbers[]; } secondMatrix; -layout(binding = 2, std430) buffer Matrix_3 { + +layout(binding = 2, std430) buffer Matrix_ssbo_2 { uint numbers[]; } resultMatrix; -layout(binding = 3) uniform Uniforms_1 { + +layout(binding = 3) uniform Uniforms_ubo { uvec2 aShape; uvec2 bShape; uvec2 outShape; diff --git a/test/tint/bug/tint/749.spvasm.expected.glsl b/test/tint/bug/tint/749.spvasm.expected.glsl index ea9ce91b46..7f580c1ef1 100644 --- a/test/tint/bug/tint/749.spvasm.expected.glsl +++ b/test/tint/bug/tint/749.spvasm.expected.glsl @@ -6,13 +6,9 @@ struct QuicksortObject { int numbers[10]; }; -struct buf0 { - vec2 resolution; -}; - 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_1 { +layout(binding = 0) uniform buf0_ubo { vec2 resolution; } x_188; diff --git a/test/tint/bug/tint/757.wgsl.expected.glsl b/test/tint/bug/tint/757.wgsl.expected.glsl index cd7ba225f5..f8fe064541 100644 --- a/test/tint/bug/tint/757.wgsl.expected.glsl +++ b/test/tint/bug/tint/757.wgsl.expected.glsl @@ -4,9 +4,10 @@ struct Constants { int level; }; -layout(binding = 3, std430) buffer Result_1 { +layout(binding = 3, std430) buffer Result_ssbo { float values[]; } result; + uniform highp sampler2DArray myTexture_1; void tint_symbol(uvec3 GlobalInvocationID) { uint flatIndex = (((4u * GlobalInvocationID.z) + (2u * GlobalInvocationID.y)) + GlobalInvocationID.x); diff --git a/test/tint/bug/tint/827.wgsl.expected.glsl b/test/tint/bug/tint/827.wgsl.expected.glsl index 4098e5520a..43f26e2683 100644 --- a/test/tint/bug/tint/827.wgsl.expected.glsl +++ b/test/tint/bug/tint/827.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 1, std430) buffer Result_1 { +layout(binding = 1, std430) buffer Result_ssbo { float values[]; } result; + uniform highp sampler2D tex_1; void tint_symbol(uvec3 GlobalInvocationId) { result.values[((GlobalInvocationId.y * 128u) + GlobalInvocationId.x)] = texelFetch(tex_1, ivec2(int(GlobalInvocationId.x), int(GlobalInvocationId.y)), 0).x; diff --git a/test/tint/bug/tint/870.spvasm.expected.glsl b/test/tint/bug/tint/870.spvasm.expected.glsl index ed30b13508..fc79f0fb3c 100644 --- a/test/tint/bug/tint/870.spvasm.expected.glsl +++ b/test/tint/bug/tint/870.spvasm.expected.glsl @@ -8,13 +8,10 @@ struct sspp962805860buildInformationS { int orientation[6]; }; -struct x_B4_BuildInformation { - sspp962805860buildInformationS passthru; -}; - -layout(binding = 2, std430) buffer x_B4_BuildInformation_1 { +layout(binding = 2, std430) buffer x_B4_BuildInformation_ssbo { sspp962805860buildInformationS passthru; } sspp962805860buildInformation; + void main_1() { int orientation[6] = int[6](0, 0, 0, 0, 0, 0); int x_23[6] = sspp962805860buildInformation.passthru.orientation; diff --git a/test/tint/bug/tint/913.wgsl.expected.glsl b/test/tint/bug/tint/913.wgsl.expected.glsl index bd770ef843..01a54d0e6d 100644 --- a/test/tint/bug/tint/913.wgsl.expected.glsl +++ b/test/tint/bug/tint/913.wgsl.expected.glsl @@ -1,17 +1,10 @@ #version 310 es -struct Uniforms { - uint dstTextureFlipY; - uint channelCount; - uvec2 srcCopyOrigin; - uvec2 dstCopyOrigin; - uvec2 copySize; -}; - -layout(binding = 2, std430) buffer OutputBuf_1 { +layout(binding = 2, std430) buffer OutputBuf_ssbo { uint result[]; } tint_symbol; -layout(binding = 3) uniform Uniforms_1 { + +layout(binding = 3) 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 25b3ff30a2..284ace81b3 100644 --- a/test/tint/bug/tint/914.wgsl.expected.glsl +++ b/test/tint/bug/tint/914.wgsl.expected.glsl @@ -1,21 +1,18 @@ #version 310 es -struct Uniforms { - uint dimAOuter; - uint dimInner; - uint dimBOuter; -}; - -layout(binding = 0, std430) buffer Matrix_1 { +layout(binding = 0, std430) buffer Matrix_ssbo { float numbers[]; } firstMatrix; -layout(binding = 1, std430) buffer Matrix_2 { + +layout(binding = 1, std430) buffer Matrix_ssbo_1 { float numbers[]; } secondMatrix; -layout(binding = 2, std430) buffer Matrix_3 { + +layout(binding = 2, std430) buffer Matrix_ssbo_2 { float numbers[]; } resultMatrix; -layout(binding = 3) uniform Uniforms_1 { + +layout(binding = 3) uniform Uniforms_ubo { uint dimAOuter; uint dimInner; uint dimBOuter; diff --git a/test/tint/bug/tint/922.wgsl.expected.glsl b/test/tint/bug/tint/922.wgsl.expected.glsl index eaefb02bd1..d88d88758c 100644 --- a/test/tint/bug/tint/922.wgsl.expected.glsl +++ b/test/tint/bug/tint/922.wgsl.expected.glsl @@ -25,35 +25,22 @@ struct Mat4x2_ { vec4 my; }; -struct ub_SceneParams { - Mat4x4_ u_Projection; -}; - -struct ub_MaterialParams { - Mat4x2_ u_TexMtx[1]; - vec4 u_Misc0_; -}; - -struct ub_PacketParams { - Mat4x3_ u_PosMtx[32]; -}; - struct VertexOutput { vec4 v_Color; vec2 v_TexCoord; vec4 member; }; -layout(binding = 0) uniform ub_SceneParams_1 { +layout(binding = 0) uniform ub_SceneParams_ubo { Mat4x4_ u_Projection; } global; -layout(binding = 1) uniform ub_MaterialParams_1 { +layout(binding = 1) uniform ub_MaterialParams_ubo { Mat4x2_ u_TexMtx[1]; vec4 u_Misc0_; } global1; -layout(binding = 2) uniform ub_PacketParams_1 { +layout(binding = 2) uniform ub_PacketParams_ubo { Mat4x3_ u_PosMtx[32]; } global2; diff --git a/test/tint/bug/tint/926.wgsl.expected.glsl b/test/tint/bug/tint/926.wgsl.expected.glsl index 7e80241796..1171d66e02 100644 --- a/test/tint/bug/tint/926.wgsl.expected.glsl +++ b/test/tint/bug/tint/926.wgsl.expected.glsl @@ -1,12 +1,9 @@ #version 310 es -struct DrawIndirectArgs { - uint vertexCount; -}; - -layout(binding = 5, std430) buffer DrawIndirectArgs_1 { +layout(binding = 5, std430) buffer DrawIndirectArgs_ssbo { uint vertexCount; } drawOut; + uint cubeVerts = 0u; void computeMain(uvec3 global_id) { uint firstVertex = atomicAdd(drawOut.vertexCount, cubeVerts); diff --git a/test/tint/bug/tint/942.wgsl.expected.glsl b/test/tint/bug/tint/942.wgsl.expected.glsl index d194f13112..f577d034ad 100644 --- a/test/tint/bug/tint/942.wgsl.expected.glsl +++ b/test/tint/bug/tint/942.wgsl.expected.glsl @@ -1,21 +1,12 @@ #version 310 es -struct Params { - uint filterDim; - uint blockDim; -}; - -layout(binding = 1) uniform Params_1 { +layout(binding = 1) uniform Params_ubo { uint filterDim; uint blockDim; } params; layout(rgba8) uniform highp writeonly image2D outputTex; -struct Flip { - uint value; -}; - -layout(binding = 3) uniform Flip_1 { +layout(binding = 3) uniform Flip_ubo { uint value; } flip; diff --git a/test/tint/bug/tint/943.spvasm.expected.glsl b/test/tint/bug/tint/943.spvasm.expected.glsl index 2f05a683c0..59b4da0623 100644 --- a/test/tint/bug/tint/943.spvasm.expected.glsl +++ b/test/tint/bug/tint/943.spvasm.expected.glsl @@ -3,16 +3,8 @@ note: 'workgroupBarrier' must only be called from uniform control flow note: reading from module-scope private variable 'dimInner_1' may result in a non-uniform value #version 310 es -struct Uniforms { - float NAN; - ivec3 aShape; - ivec3 bShape; - ivec3 outShape; - ivec2 outShapeStrides; -}; - int dimAOuter_1 = 0; -layout(binding = 3) uniform Uniforms_1 { +layout(binding = 3) uniform Uniforms_ubo { float NAN; ivec3 aShape; ivec3 bShape; @@ -22,20 +14,23 @@ layout(binding = 3) uniform Uniforms_1 { int dimInner_1 = 0; int dimBOuter_1 = 0; -layout(binding = 0, std430) buffer ssbOut_1 { +layout(binding = 0, std430) buffer ssbOut_ssbo { float result[]; } x_54; + uvec3 tint_symbol = uvec3(0u, 0u, 0u); uvec3 tint_symbol_1 = uvec3(0u, 0u, 0u); shared float mm_Asub[64][64]; shared float mm_Bsub[64][1]; -layout(binding = 1, std430) buffer ssbA_1 { +layout(binding = 1, std430) buffer ssbA_ssbo { float A[]; } x_165; + int batch = 0; -layout(binding = 2, std430) buffer ssbB_1 { +layout(binding = 2, std430) buffer ssbB_ssbo { float B[]; } x_185; + bool coordsInBounds_vi2_vi2_(inout ivec2 coord, inout ivec2 shape) { bool x_87 = false; bool x_88_phi = false; diff --git a/test/tint/bug/tint/948.wgsl.expected.glsl b/test/tint/bug/tint/948.wgsl.expected.glsl index bdeba4be67..50e686325d 100644 --- a/test/tint/bug/tint/948.wgsl.expected.glsl +++ b/test/tint/bug/tint/948.wgsl.expected.glsl @@ -25,19 +25,7 @@ layout(location = 3) in vec2 stageUnits_1_param_1; layout(location = 0) in vec3 vPosition_param_1; layout(location = 1) in vec2 vUV_param_1; layout(location = 0) out vec4 glFragColor_1_1; -struct LeftOver { - float time; - uint padding; - mat4 worldViewProjection; - vec2 outputSize; - vec2 stageSize; - vec2 spriteMapSize; - float stageScale; - float spriteCount; - vec3 colorMul; -}; - -layout(binding = 9) uniform LeftOver_1 { +layout(binding = 9) uniform LeftOver_ubo { float time; uint padding; mat4 worldViewProjection; diff --git a/test/tint/bug/tint/949.wgsl.expected.glsl b/test/tint/bug/tint/949.wgsl.expected.glsl index 8cac3069cf..3372f6748e 100644 --- a/test/tint/bug/tint/949.wgsl.expected.glsl +++ b/test/tint/bug/tint/949.wgsl.expected.glsl @@ -23,32 +23,10 @@ struct lightingInfo { vec3 specular; }; -struct LeftOver { - mat4 u_World; - mat4 u_ViewProjection; - float u_bumpStrength; - uint padding; - vec3 u_cameraPosition; - float u_parallaxScale; - float textureInfoName; - uint padding_1; - vec2 tangentSpaceParameter0; -}; - -struct Light0 { - vec4 vLightData; - vec4 vLightDiffuse; - vec4 vLightSpecular; - vec3 vLightGround; - uint padding_2; - vec4 shadowsInfo; - vec2 depthValues; -}; - 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_1 { +layout(binding = 6) uniform LeftOver_ubo { mat4 u_World; mat4 u_ViewProjection; float u_bumpStrength; @@ -64,7 +42,7 @@ vec4 v_output1 = vec4(0.0f, 0.0f, 0.0f, 0.0f); 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_1 { +layout(binding = 5) uniform Light0_ubo { vec4 vLightData; vec4 vLightDiffuse; vec4 vLightSpecular; diff --git a/test/tint/bug/tint/951.spvasm.expected.glsl b/test/tint/bug/tint/951.spvasm.expected.glsl index 865294ef11..4711f56384 100644 --- a/test/tint/bug/tint/951.spvasm.expected.glsl +++ b/test/tint/bug/tint/951.spvasm.expected.glsl @@ -1,21 +1,15 @@ #version 310 es -struct Uniforms { - float NAN; - int aShape; - int outShape; - int outShapeStrides; - int size; -}; - -layout(binding = 0, std430) buffer ssbOut_1 { +layout(binding = 0, std430) buffer ssbOut_ssbo { float result[]; } x_16; -layout(binding = 1, std430) buffer ssbA_1 { + +layout(binding = 1, std430) buffer ssbA_ssbo { float A[]; } x_20; + uvec3 tint_symbol = uvec3(0u, 0u, 0u); -layout(binding = 2) uniform Uniforms_1 { +layout(binding = 2) uniform Uniforms_ubo { float NAN; int aShape; int outShape; diff --git a/test/tint/bug/tint/959.wgsl.expected.glsl b/test/tint/bug/tint/959.wgsl.expected.glsl index 7538459860..a461051acc 100644 --- a/test/tint/bug/tint/959.wgsl.expected.glsl +++ b/test/tint/bug/tint/959.wgsl.expected.glsl @@ -1,63 +1,67 @@ #version 310 es precision mediump float; -struct S { - float a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { float a; } b0; -layout(binding = 0, std430) buffer S_2 { + +layout(binding = 0, std430) buffer S_ssbo_1 { float a; } b1; -layout(binding = 0, std430) buffer S_3 { + +layout(binding = 0, std430) buffer S_ssbo_2 { float a; } b2; -layout(binding = 0, std430) buffer S_4 { + +layout(binding = 0, std430) buffer S_ssbo_3 { float a; } b3; -layout(binding = 0, std430) buffer S_5 { + +layout(binding = 0, std430) buffer S_ssbo_4 { float a; } b4; -layout(binding = 0, std430) buffer S_6 { + +layout(binding = 0, std430) buffer S_ssbo_5 { float a; } b5; -layout(binding = 0, std430) buffer S_7 { + +layout(binding = 0, std430) buffer S_ssbo_6 { float a; } b6; -layout(binding = 0, std430) buffer S_8 { + +layout(binding = 0, std430) buffer S_ssbo_7 { float a; } b7; -layout(binding = 1) uniform S_9 { + +layout(binding = 1) uniform S_ubo { float a; } b8; -layout(binding = 1) uniform S_10 { +layout(binding = 1) uniform S_ubo_1 { float a; } b9; -layout(binding = 1) uniform S_11 { +layout(binding = 1) uniform S_ubo_2 { float a; } b10; -layout(binding = 1) uniform S_12 { +layout(binding = 1) uniform S_ubo_3 { float a; } b11; -layout(binding = 1) uniform S_13 { +layout(binding = 1) uniform S_ubo_4 { float a; } b12; -layout(binding = 1) uniform S_14 { +layout(binding = 1) uniform S_ubo_5 { float a; } b13; -layout(binding = 1) uniform S_15 { +layout(binding = 1) uniform S_ubo_6 { float a; } b14; -layout(binding = 1) uniform S_16 { +layout(binding = 1) uniform S_ubo_7 { float a; } b15; diff --git a/test/tint/bug/tint/977.spvasm.expected.glsl b/test/tint/bug/tint/977.spvasm.expected.glsl index b784f3e2fe..8715d9e67e 100644 --- a/test/tint/bug/tint/977.spvasm.expected.glsl +++ b/test/tint/bug/tint/977.spvasm.expected.glsl @@ -7,9 +7,10 @@ struct Uniforms { }; uvec3 tint_symbol = uvec3(0u, 0u, 0u); -layout(binding = 2, std430) buffer ResultMatrix_1 { +layout(binding = 2, std430) buffer ResultMatrix_ssbo { float numbers[]; } resultMatrix; + float binaryOperation_f1_f1_(inout float a, inout float b) { float x_26 = 0.0f; float x_13 = b; diff --git a/test/tint/bug/tint/980.wgsl.expected.glsl b/test/tint/bug/tint/980.wgsl.expected.glsl index 215481c289..cfe795c6bc 100644 --- a/test/tint/bug/tint/980.wgsl.expected.glsl +++ b/test/tint/bug/tint/980.wgsl.expected.glsl @@ -6,15 +6,11 @@ vec3 Bad(uint index, vec3 rd) { return normalize(normal); } -struct S { - vec3 v; - uint i; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { vec3 v; uint i; } io; + void tint_symbol(uint idx) { vec3 tint_symbol_1 = Bad(io.i, io.v); io.v = tint_symbol_1; diff --git a/test/tint/bug/tint/993.wgsl.expected.glsl b/test/tint/bug/tint/993.wgsl.expected.glsl index 2e4ad53108..bd15be7af7 100644 --- a/test/tint/bug/tint/993.wgsl.expected.glsl +++ b/test/tint/bug/tint/993.wgsl.expected.glsl @@ -1,27 +1,17 @@ #version 310 es -struct Constants { - uint zero; -}; - -layout(binding = 0) uniform Constants_1 { +layout(binding = 0) uniform Constants_ubo { uint zero; } constants; -struct Result { - uint value; -}; - -layout(binding = 1, std430) buffer Result_1 { +layout(binding = 1, std430) buffer Result_ssbo { uint value; } result; -struct TestData { - int data[3]; -}; -layout(binding = 0, std430) buffer TestData_1 { +layout(binding = 0, std430) buffer TestData_ssbo { int data[3]; } s; + int runTest() { return atomicOr(s.data[(0u + uint(constants.zero))], 0); } diff --git a/test/tint/bug/tint/998.wgsl.expected.glsl b/test/tint/bug/tint/998.wgsl.expected.glsl index 226cf72365..30dd9b8546 100644 --- a/test/tint/bug/tint/998.wgsl.expected.glsl +++ b/test/tint/bug/tint/998.wgsl.expected.glsl @@ -1,10 +1,6 @@ #version 310 es -struct Constants { - uint zero; -}; - -layout(binding = 0) uniform Constants_1 { +layout(binding = 0) uniform Constants_ubo { uint zero; } constants; diff --git a/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.glsl b/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.glsl index 7d17e02250..c67fc4973a 100644 --- a/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.glsl +++ b/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a[]; } G; + void tint_symbol() { uint l1 = uint(G.a.length()); } diff --git a/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.glsl b/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.glsl index c7ac2b79d0..b5587e7a07 100644 --- a/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.glsl +++ b/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer G_block_1 { +layout(binding = 0, std430) buffer G_block_ssbo { int inner[]; } G; + void tint_symbol() { uint l1 = uint(G.inner.length()); } diff --git a/test/tint/builtins/arrayLength/deprecated.wgsl.expected.glsl b/test/tint/builtins/arrayLength/deprecated.wgsl.expected.glsl index b6e9fe6ea8..3b29a21105 100644 --- a/test/tint/builtins/arrayLength/deprecated.wgsl.expected.glsl +++ b/test/tint/builtins/arrayLength/deprecated.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a[]; } G; + void tint_symbol() { uint l1 = uint(G.a.length()); uint l2 = uint(G.a.length()); diff --git a/test/tint/builtins/arrayLength/simple.wgsl.expected.glsl b/test/tint/builtins/arrayLength/simple.wgsl.expected.glsl index 7d17e02250..c67fc4973a 100644 --- a/test/tint/builtins/arrayLength/simple.wgsl.expected.glsl +++ b/test/tint/builtins/arrayLength/simple.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a[]; } G; + void tint_symbol() { uint l1 = uint(G.a.length()); } diff --git a/test/tint/builtins/arrayLength/simple_no_struct.wgsl.expected.glsl b/test/tint/builtins/arrayLength/simple_no_struct.wgsl.expected.glsl index c7ac2b79d0..b5587e7a07 100644 --- a/test/tint/builtins/arrayLength/simple_no_struct.wgsl.expected.glsl +++ b/test/tint/builtins/arrayLength/simple_no_struct.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer G_block_1 { +layout(binding = 0, std430) buffer G_block_ssbo { int inner[]; } G; + void tint_symbol() { uint l1 = uint(G.inner.length()); } diff --git a/test/tint/builtins/arrayLength/via_let.wgsl.expected.glsl b/test/tint/builtins/arrayLength/via_let.wgsl.expected.glsl index 7d17e02250..c67fc4973a 100644 --- a/test/tint/builtins/arrayLength/via_let.wgsl.expected.glsl +++ b/test/tint/builtins/arrayLength/via_let.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a[]; } G; + void tint_symbol() { uint l1 = uint(G.a.length()); } diff --git a/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.glsl b/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.glsl index 7d17e02250..c67fc4973a 100644 --- a/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.glsl +++ b/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a[]; } G; + void tint_symbol() { uint l1 = uint(G.a.length()); } diff --git a/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.glsl b/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.glsl index c7ac2b79d0..b5587e7a07 100644 --- a/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.glsl +++ b/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer G_block_1 { +layout(binding = 0, std430) buffer G_block_ssbo { int inner[]; } G; + void tint_symbol() { uint l1 = uint(G.inner.length()); } diff --git a/test/tint/builtins/arrayLength/via_let_no_struct.wgsl.expected.glsl b/test/tint/builtins/arrayLength/via_let_no_struct.wgsl.expected.glsl index c7ac2b79d0..b5587e7a07 100644 --- a/test/tint/builtins/arrayLength/via_let_no_struct.wgsl.expected.glsl +++ b/test/tint/builtins/arrayLength/via_let_no_struct.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer G_block_1 { +layout(binding = 0, std430) buffer G_block_ssbo { int inner[]; } G; + void tint_symbol() { uint l1 = uint(G.inner.length()); } diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicAdd/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicAdd/storage_i32.spvasm.expected.glsl index 875dc0857f..ca2a7f9e69 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicAdd/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicAdd/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int res = 0; int x_9 = atomicAdd(sb_rw.arg_0, 1); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int res = 0; int x_9 = atomicAdd(sb_rw.arg_0, 1); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicAdd/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicAdd/storage_u32.spvasm.expected.glsl index 48a073514d..7ffe8487a6 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicAdd/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicAdd/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint res = 0u; uint x_9 = atomicAdd(sb_rw.arg_0, 1u); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint res = 0u; uint x_9 = atomicAdd(sb_rw.arg_0, 1u); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicAnd/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicAnd/storage_i32.spvasm.expected.glsl index 28adfe0175..20ff9c8e68 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicAnd/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicAnd/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAnd_152966() { int res = 0; int x_9 = atomicAnd(sb_rw.arg_0, 1); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAnd_152966() { int res = 0; int x_9 = atomicAnd(sb_rw.arg_0, 1); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicAnd/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicAnd/storage_u32.spvasm.expected.glsl index 6d879c1d3a..362308c8bb 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicAnd/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicAnd/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAnd_85a8d9() { uint res = 0u; uint x_9 = atomicAnd(sb_rw.arg_0, 1u); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAnd_85a8d9() { uint res = 0u; uint x_9 = atomicAnd(sb_rw.arg_0, 1u); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/storage_i32.spvasm.expected.glsl index b46c227b77..f26f67a30f 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/storage_i32.spvasm.expected.glsl @@ -7,10 +7,6 @@ struct atomic_compare_exchange_resulti32 { }; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; @@ -20,9 +16,10 @@ struct x__atomic_compare_exchange_resulti32 { bool exchanged; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicCompareExchangeWeak_1bd40a() { x__atomic_compare_exchange_resulti32 res = x__atomic_compare_exchange_resulti32(0, false); atomic_compare_exchange_resulti32 atomic_compare_result; @@ -57,10 +54,6 @@ struct atomic_compare_exchange_resulti32 { }; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; @@ -70,9 +63,10 @@ struct x__atomic_compare_exchange_resulti32 { bool exchanged; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicCompareExchangeWeak_1bd40a() { x__atomic_compare_exchange_resulti32 res = x__atomic_compare_exchange_resulti32(0, false); atomic_compare_exchange_resulti32 atomic_compare_result; diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/storage_u32.spvasm.expected.glsl index 385735d724..79a81acf97 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicCompareExchangeWeak/storage_u32.spvasm.expected.glsl @@ -7,10 +7,6 @@ struct atomic_compare_exchange_resultu32 { }; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; @@ -20,9 +16,10 @@ struct x__atomic_compare_exchange_resultu32 { bool exchanged; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicCompareExchangeWeak_63d8e6() { x__atomic_compare_exchange_resultu32 res = x__atomic_compare_exchange_resultu32(0u, false); atomic_compare_exchange_resultu32 atomic_compare_result; @@ -57,10 +54,6 @@ struct atomic_compare_exchange_resultu32 { }; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; @@ -70,9 +63,10 @@ struct x__atomic_compare_exchange_resultu32 { bool exchanged; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicCompareExchangeWeak_63d8e6() { x__atomic_compare_exchange_resultu32 res = x__atomic_compare_exchange_resultu32(0u, false); atomic_compare_exchange_resultu32 atomic_compare_result; diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicExchange/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicExchange/storage_i32.spvasm.expected.glsl index 4fdae2725f..cb759e766a 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicExchange/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicExchange/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicExchange_f2e22f() { int res = 0; int x_9 = atomicExchange(sb_rw.arg_0, 1); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicExchange_f2e22f() { int res = 0; int x_9 = atomicExchange(sb_rw.arg_0, 1); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicExchange/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicExchange/storage_u32.spvasm.expected.glsl index 57f02915fa..ae7c7a45c8 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicExchange/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicExchange/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicExchange_d59712() { uint res = 0u; uint x_9 = atomicExchange(sb_rw.arg_0, 1u); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicExchange_d59712() { uint res = 0u; uint x_9 = atomicExchange(sb_rw.arg_0, 1u); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicLoad/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicLoad/storage_i32.spvasm.expected.glsl index d034197209..c5f15b176e 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicLoad/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicLoad/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicLoad_0806ad() { int res = 0; int x_9 = atomicOr(sb_rw.arg_0, 0); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicLoad_0806ad() { int res = 0; int x_9 = atomicOr(sb_rw.arg_0, 0); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicLoad/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicLoad/storage_u32.spvasm.expected.glsl index cebe232998..8bddccedeb 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicLoad/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicLoad/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicLoad_fe6cc3() { uint res = 0u; uint x_9 = atomicOr(sb_rw.arg_0, 0u); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicLoad_fe6cc3() { uint res = 0u; uint x_9 = atomicOr(sb_rw.arg_0, 0u); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicMax/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicMax/storage_i32.spvasm.expected.glsl index 63418486d6..388ccf7a97 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicMax/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicMax/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicMax_92aa72() { int res = 0; int x_9 = atomicMax(sb_rw.arg_0, 1); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicMax_92aa72() { int res = 0; int x_9 = atomicMax(sb_rw.arg_0, 1); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicMax/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicMax/storage_u32.spvasm.expected.glsl index 08dd962ca5..9cdec378f7 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicMax/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicMax/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicMax_51b9be() { uint res = 0u; uint x_9 = atomicMax(sb_rw.arg_0, 1u); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicMax_51b9be() { uint res = 0u; uint x_9 = atomicMax(sb_rw.arg_0, 1u); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicMin/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicMin/storage_i32.spvasm.expected.glsl index 021d201cf7..5aad3bee68 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicMin/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicMin/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicMin_8e38dc() { int res = 0; int x_9 = atomicMin(sb_rw.arg_0, 1); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicMin_8e38dc() { int res = 0; int x_9 = atomicMin(sb_rw.arg_0, 1); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicMin/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicMin/storage_u32.spvasm.expected.glsl index 66cb35135d..90d76b8596 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicMin/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicMin/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicMin_c67a74() { uint res = 0u; uint x_9 = atomicMin(sb_rw.arg_0, 1u); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicMin_c67a74() { uint res = 0u; uint x_9 = atomicMin(sb_rw.arg_0, 1u); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicOr/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicOr/storage_i32.spvasm.expected.glsl index b9557e323c..2874145ce7 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicOr/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicOr/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicOr_8d96a0() { int res = 0; int x_9 = atomicOr(sb_rw.arg_0, 1); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicOr_8d96a0() { int res = 0; int x_9 = atomicOr(sb_rw.arg_0, 1); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicOr/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicOr/storage_u32.spvasm.expected.glsl index 5ad5f61f9f..dafd141847 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicOr/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicOr/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicOr_5e95d4() { uint res = 0u; uint x_9 = atomicOr(sb_rw.arg_0, 1u); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicOr_5e95d4() { uint res = 0u; uint x_9 = atomicOr(sb_rw.arg_0, 1u); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicStore/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicStore/storage_i32.spvasm.expected.glsl index 24fc51ed53..f8778d9b59 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicStore/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicStore/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicStore_d1e9a6() { atomicExchange(sb_rw.arg_0, 1); return; @@ -32,17 +29,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicStore_d1e9a6() { atomicExchange(sb_rw.arg_0, 1); return; diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicStore/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicStore/storage_u32.spvasm.expected.glsl index e9c81a233d..588fac670c 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicStore/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicStore/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicStore_cdc29e() { atomicExchange(sb_rw.arg_0, 1u); return; @@ -32,17 +29,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicStore_cdc29e() { atomicExchange(sb_rw.arg_0, 1u); return; diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicSub/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicSub/storage_i32.spvasm.expected.glsl index 8f573dffe3..c3538ae0cd 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicSub/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicSub/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicSub_051100() { int res = 0; int x_9 = atomicAdd(sb_rw.arg_0, 1); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicSub_051100() { int res = 0; int x_9 = atomicAdd(sb_rw.arg_0, 1); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicSub/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicSub/storage_u32.spvasm.expected.glsl index e462c21374..b2eccbc241 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicSub/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicSub/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicSub_15bfc9() { uint res = 0u; uint x_9 = atomicAdd(sb_rw.arg_0, 1u); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicSub_15bfc9() { uint res = 0u; uint x_9 = atomicAdd(sb_rw.arg_0, 1u); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicXor/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicXor/storage_i32.spvasm.expected.glsl index cc05c2842d..1c83583f41 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicXor/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicXor/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicXor_c1b78c() { int res = 0; int x_9 = atomicXor(sb_rw.arg_0, 1); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicXor_c1b78c() { int res = 0; int x_9 = atomicXor(sb_rw.arg_0, 1); diff --git a/test/tint/builtins/atomics/from_gen/literal/atomicXor/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/atomicXor/storage_u32.spvasm.expected.glsl index 2893791023..09295d7e70 100644 --- a/test/tint/builtins/atomics/from_gen/literal/atomicXor/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/atomicXor/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicXor_54510e() { uint res = 0u; uint x_9 = atomicXor(sb_rw.arg_0, 1u); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicXor_54510e() { uint res = 0u; uint x_9 = atomicXor(sb_rw.arg_0, 1u); diff --git a/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/storage_i32.spvasm.expected.glsl index 875dc0857f..ca2a7f9e69 100644 --- a/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int res = 0; int x_9 = atomicAdd(sb_rw.arg_0, 1); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int res = 0; int x_9 = atomicAdd(sb_rw.arg_0, 1); diff --git a/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/storage_u32.spvasm.expected.glsl index 48a073514d..7ffe8487a6 100644 --- a/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/spvAtomicDecrement/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint res = 0u; uint x_9 = atomicAdd(sb_rw.arg_0, 1u); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint res = 0u; uint x_9 = atomicAdd(sb_rw.arg_0, 1u); diff --git a/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/storage_i32.spvasm.expected.glsl index 875dc0857f..ca2a7f9e69 100644 --- a/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int res = 0; int x_9 = atomicAdd(sb_rw.arg_0, 1); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int res = 0; int x_9 = atomicAdd(sb_rw.arg_0, 1); diff --git a/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/storage_u32.spvasm.expected.glsl index 48a073514d..7ffe8487a6 100644 --- a/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/literal/spvAtomicIncrement/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint res = 0u; uint x_9 = atomicAdd(sb_rw.arg_0, 1u); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint res = 0u; uint x_9 = atomicAdd(sb_rw.arg_0, 1u); diff --git a/test/tint/builtins/atomics/from_gen/var/atomicAdd/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicAdd/storage_i32.spvasm.expected.glsl index bd9f7f8bc3..d0daed9d1c 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicAdd/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicAdd/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int arg_1 = 0; int res = 0; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int arg_1 = 0; int res = 0; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicAdd/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicAdd/storage_u32.spvasm.expected.glsl index 5c1a1b00f9..7e082b78bf 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicAdd/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicAdd/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint arg_1 = 0u; uint res = 0u; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint arg_1 = 0u; uint res = 0u; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicAnd/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicAnd/storage_i32.spvasm.expected.glsl index ea9ff84284..f27eaef5d1 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicAnd/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicAnd/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAnd_152966() { int arg_1 = 0; int res = 0; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAnd_152966() { int arg_1 = 0; int res = 0; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicAnd/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicAnd/storage_u32.spvasm.expected.glsl index e3abb2a2af..1d3eb24686 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicAnd/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicAnd/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAnd_85a8d9() { uint arg_1 = 0u; uint res = 0u; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAnd_85a8d9() { uint arg_1 = 0u; uint res = 0u; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/storage_i32.spvasm.expected.glsl index 286017ba33..b19348c465 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/storage_i32.spvasm.expected.glsl @@ -7,10 +7,6 @@ struct atomic_compare_exchange_resulti32 { }; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; @@ -20,9 +16,10 @@ struct x__atomic_compare_exchange_resulti32 { bool exchanged; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicCompareExchangeWeak_1bd40a() { int arg_1 = 0; int arg_2 = 0; @@ -62,10 +59,6 @@ struct atomic_compare_exchange_resulti32 { }; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; @@ -75,9 +68,10 @@ struct x__atomic_compare_exchange_resulti32 { bool exchanged; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicCompareExchangeWeak_1bd40a() { int arg_1 = 0; int arg_2 = 0; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/storage_u32.spvasm.expected.glsl index ec3e6e1996..43fa00c9f8 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicCompareExchangeWeak/storage_u32.spvasm.expected.glsl @@ -7,10 +7,6 @@ struct atomic_compare_exchange_resultu32 { }; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; @@ -20,9 +16,10 @@ struct x__atomic_compare_exchange_resultu32 { bool exchanged; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicCompareExchangeWeak_63d8e6() { uint arg_1 = 0u; uint arg_2 = 0u; @@ -62,10 +59,6 @@ struct atomic_compare_exchange_resultu32 { }; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; @@ -75,9 +68,10 @@ struct x__atomic_compare_exchange_resultu32 { bool exchanged; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicCompareExchangeWeak_63d8e6() { uint arg_1 = 0u; uint arg_2 = 0u; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicExchange/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicExchange/storage_i32.spvasm.expected.glsl index 284be713fc..e70784d7b6 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicExchange/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicExchange/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicExchange_f2e22f() { int arg_1 = 0; int res = 0; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicExchange_f2e22f() { int arg_1 = 0; int res = 0; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicExchange/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicExchange/storage_u32.spvasm.expected.glsl index edc360d54d..e949e6884a 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicExchange/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicExchange/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicExchange_d59712() { uint arg_1 = 0u; uint res = 0u; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicExchange_d59712() { uint arg_1 = 0u; uint res = 0u; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicLoad/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicLoad/storage_i32.spvasm.expected.glsl index d034197209..c5f15b176e 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicLoad/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicLoad/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicLoad_0806ad() { int res = 0; int x_9 = atomicOr(sb_rw.arg_0, 0); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicLoad_0806ad() { int res = 0; int x_9 = atomicOr(sb_rw.arg_0, 0); diff --git a/test/tint/builtins/atomics/from_gen/var/atomicLoad/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicLoad/storage_u32.spvasm.expected.glsl index cebe232998..8bddccedeb 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicLoad/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicLoad/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicLoad_fe6cc3() { uint res = 0u; uint x_9 = atomicOr(sb_rw.arg_0, 0u); @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicLoad_fe6cc3() { uint res = 0u; uint x_9 = atomicOr(sb_rw.arg_0, 0u); diff --git a/test/tint/builtins/atomics/from_gen/var/atomicMax/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicMax/storage_i32.spvasm.expected.glsl index d458f056ad..32e30cd7f2 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicMax/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicMax/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicMax_92aa72() { int arg_1 = 0; int res = 0; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicMax_92aa72() { int arg_1 = 0; int res = 0; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicMax/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicMax/storage_u32.spvasm.expected.glsl index e5f7f89955..680684b6e8 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicMax/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicMax/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicMax_51b9be() { uint arg_1 = 0u; uint res = 0u; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicMax_51b9be() { uint arg_1 = 0u; uint res = 0u; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicMin/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicMin/storage_i32.spvasm.expected.glsl index e233a685b8..e982a9b525 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicMin/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicMin/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicMin_8e38dc() { int arg_1 = 0; int res = 0; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicMin_8e38dc() { int arg_1 = 0; int res = 0; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicMin/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicMin/storage_u32.spvasm.expected.glsl index 06e8d89512..f3397bbef2 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicMin/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicMin/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicMin_c67a74() { uint arg_1 = 0u; uint res = 0u; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicMin_c67a74() { uint arg_1 = 0u; uint res = 0u; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicOr/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicOr/storage_i32.spvasm.expected.glsl index dd172741ef..0e9f1553e2 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicOr/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicOr/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicOr_8d96a0() { int arg_1 = 0; int res = 0; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicOr_8d96a0() { int arg_1 = 0; int res = 0; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicOr/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicOr/storage_u32.spvasm.expected.glsl index ba78059d7a..b918b888b0 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicOr/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicOr/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicOr_5e95d4() { uint arg_1 = 0u; uint res = 0u; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicOr_5e95d4() { uint arg_1 = 0u; uint res = 0u; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicStore/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicStore/storage_i32.spvasm.expected.glsl index cf63c29f5c..3e9839eb08 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicStore/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicStore/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicStore_d1e9a6() { int arg_1 = 0; arg_1 = 1; @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicStore_d1e9a6() { int arg_1 = 0; arg_1 = 1; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicStore/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicStore/storage_u32.spvasm.expected.glsl index 7a8d693ac8..7628fb4a67 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicStore/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicStore/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicStore_cdc29e() { uint arg_1 = 0u; arg_1 = 1u; @@ -34,17 +31,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicStore_cdc29e() { uint arg_1 = 0u; arg_1 = 1u; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicSub/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicSub/storage_i32.spvasm.expected.glsl index fcc4155037..c6aa9c3c27 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicSub/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicSub/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicSub_051100() { int arg_1 = 0; int res = 0; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicSub_051100() { int arg_1 = 0; int res = 0; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicSub/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicSub/storage_u32.spvasm.expected.glsl index f91b7f880f..c5f6b9ecc3 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicSub/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicSub/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicSub_15bfc9() { uint arg_1 = 0u; uint res = 0u; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicSub_15bfc9() { uint arg_1 = 0u; uint res = 0u; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicXor/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicXor/storage_i32.spvasm.expected.glsl index 4953346784..71a8526b73 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicXor/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicXor/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicXor_c1b78c() { int arg_1 = 0; int res = 0; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicXor_c1b78c() { int arg_1 = 0; int res = 0; diff --git a/test/tint/builtins/atomics/from_gen/var/atomicXor/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/atomicXor/storage_u32.spvasm.expected.glsl index c382bffbcf..c03bbbbf7f 100644 --- a/test/tint/builtins/atomics/from_gen/var/atomicXor/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/atomicXor/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicXor_54510e() { uint arg_1 = 0u; uint res = 0u; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicXor_54510e() { uint arg_1 = 0u; uint res = 0u; diff --git a/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/storage_i32.spvasm.expected.glsl index 167e99cff9..9d593d46f9 100644 --- a/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int arg_1 = 0; int res = 0; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int arg_1 = 0; int res = 0; diff --git a/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/storage_u32.spvasm.expected.glsl index d9e05156d9..baaa2cc917 100644 --- a/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/spvAtomicDecrement/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint arg_1 = 0u; uint res = 0u; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint arg_1 = 0u; uint res = 0u; diff --git a/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/storage_i32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/storage_i32.spvasm.expected.glsl index 167e99cff9..9d593d46f9 100644 --- a/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/storage_i32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/storage_i32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int arg_1 = 0; int res = 0; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - int arg_0; -}; - struct SB_RW { int arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int arg_1 = 0; int res = 0; diff --git a/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/storage_u32.spvasm.expected.glsl b/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/storage_u32.spvasm.expected.glsl index d9e05156d9..baaa2cc917 100644 --- a/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/storage_u32.spvasm.expected.glsl +++ b/test/tint/builtins/atomics/from_gen/var/spvAtomicIncrement/storage_u32.spvasm.expected.glsl @@ -1,17 +1,14 @@ #version 310 es precision mediump float; -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint arg_1 = 0u; uint res = 0u; @@ -36,17 +33,14 @@ void main() { } #version 310 es -struct SB_RW_atomic { - uint arg_0; -}; - struct SB_RW { uint arg_0; }; -layout(binding = 0, std430) buffer SB_RW_atomic_1 { +layout(binding = 0, std430) buffer SB_RW_atomic_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint arg_1 = 0u; uint res = 0u; diff --git a/test/tint/builtins/gen/literal/arrayLength/1588cd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/arrayLength/1588cd.wgsl.expected.glsl index a143e1835e..4f59c4b7d7 100644 --- a/test/tint/builtins/gen/literal/arrayLength/1588cd.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/arrayLength/1588cd.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { int arg_0[]; } sb_ro; + void arrayLength_1588cd() { uint res = uint(sb_ro.arg_0.length()); } @@ -23,9 +24,10 @@ void main() { #version 310 es precision mediump float; -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { int arg_0[]; } sb_ro; + void arrayLength_1588cd() { uint res = uint(sb_ro.arg_0.length()); } @@ -40,9 +42,10 @@ void main() { } #version 310 es -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { int arg_0[]; } sb_ro; + void arrayLength_1588cd() { uint res = uint(sb_ro.arg_0.length()); } diff --git a/test/tint/builtins/gen/literal/arrayLength/61b1c7.wgsl.expected.glsl b/test/tint/builtins/gen/literal/arrayLength/61b1c7.wgsl.expected.glsl index 46667de5c6..d22edc1efb 100644 --- a/test/tint/builtins/gen/literal/arrayLength/61b1c7.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/arrayLength/61b1c7.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0[]; } sb_rw; + void arrayLength_61b1c7() { uint res = uint(sb_rw.arg_0.length()); } @@ -23,9 +24,10 @@ void main() { #version 310 es precision mediump float; -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0[]; } sb_rw; + void arrayLength_61b1c7() { uint res = uint(sb_rw.arg_0.length()); } @@ -40,9 +42,10 @@ void main() { } #version 310 es -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0[]; } sb_rw; + void arrayLength_61b1c7() { uint res = uint(sb_rw.arg_0.length()); } diff --git a/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.glsl index 233c92b7db..51547d98d2 100644 --- a/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.glsl @@ -1,17 +1,17 @@ SKIP: FAILED -gen/literal/arrayLength/8421b9.wgsl:26:10 error: using f16 types in 'storage' storage class is not implemented yet +builtins/gen/literal/arrayLength/8421b9.wgsl:26:10 error: using f16 types in 'storage' storage class is not implemented yet arg_0: array, ^^^^^^^^^^ -gen/literal/arrayLength/8421b9.wgsl:25:1 note: see layout of struct: +builtins/gen/literal/arrayLength/8421b9.wgsl:25:1 note: see layout of struct: /* align(2) size(2) */ struct SB_RO { /* offset(0) align(2) size(2) */ arg_0 : array; /* */ }; struct SB_RO { ^^^^^^ -gen/literal/arrayLength/8421b9.wgsl:28:42 note: see declaration of variable +builtins/gen/literal/arrayLength/8421b9.wgsl:28:42 note: see declaration of variable @group(0) @binding(1) var sb_ro : SB_RO; ^^^^^ diff --git a/test/tint/builtins/gen/literal/arrayLength/a0f5ca.wgsl.expected.glsl b/test/tint/builtins/gen/literal/arrayLength/a0f5ca.wgsl.expected.glsl index 44aaf23ebf..d7e4539472 100644 --- a/test/tint/builtins/gen/literal/arrayLength/a0f5ca.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/arrayLength/a0f5ca.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { float arg_0[]; } sb_ro; + void arrayLength_a0f5ca() { uint res = uint(sb_ro.arg_0.length()); } @@ -23,9 +24,10 @@ void main() { #version 310 es precision mediump float; -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { float arg_0[]; } sb_ro; + void arrayLength_a0f5ca() { uint res = uint(sb_ro.arg_0.length()); } @@ -40,9 +42,10 @@ void main() { } #version 310 es -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { float arg_0[]; } sb_ro; + void arrayLength_a0f5ca() { uint res = uint(sb_ro.arg_0.length()); } diff --git a/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.glsl index e0a52531af..ba9a68b49b 100644 --- a/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.glsl @@ -1,17 +1,17 @@ SKIP: FAILED -gen/literal/arrayLength/cbd6b5.wgsl:26:10 error: using f16 types in 'storage' storage class is not implemented yet +builtins/gen/literal/arrayLength/cbd6b5.wgsl:26:10 error: using f16 types in 'storage' storage class is not implemented yet arg_0: array, ^^^^^^^^^^ -gen/literal/arrayLength/cbd6b5.wgsl:25:1 note: see layout of struct: +builtins/gen/literal/arrayLength/cbd6b5.wgsl:25:1 note: see layout of struct: /* align(2) size(2) */ struct SB_RW { /* offset(0) align(2) size(2) */ arg_0 : array; /* */ }; struct SB_RW { ^^^^^^ -gen/literal/arrayLength/cbd6b5.wgsl:28:48 note: see declaration of variable +builtins/gen/literal/arrayLength/cbd6b5.wgsl:28:48 note: see declaration of variable @group(0) @binding(0) var sb_rw : SB_RW; ^^^^^ diff --git a/test/tint/builtins/gen/literal/arrayLength/cdd123.wgsl.expected.glsl b/test/tint/builtins/gen/literal/arrayLength/cdd123.wgsl.expected.glsl index dac4336dee..5d417ac143 100644 --- a/test/tint/builtins/gen/literal/arrayLength/cdd123.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/arrayLength/cdd123.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { float arg_0[]; } sb_rw; + void arrayLength_cdd123() { uint res = uint(sb_rw.arg_0.length()); } @@ -23,9 +24,10 @@ void main() { #version 310 es precision mediump float; -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { float arg_0[]; } sb_rw; + void arrayLength_cdd123() { uint res = uint(sb_rw.arg_0.length()); } @@ -40,9 +42,10 @@ void main() { } #version 310 es -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { float arg_0[]; } sb_rw; + void arrayLength_cdd123() { uint res = uint(sb_rw.arg_0.length()); } diff --git a/test/tint/builtins/gen/literal/arrayLength/cfca0a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/arrayLength/cfca0a.wgsl.expected.glsl index e159befc7e..a605e06309 100644 --- a/test/tint/builtins/gen/literal/arrayLength/cfca0a.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/arrayLength/cfca0a.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { uint arg_0[]; } sb_ro; + void arrayLength_cfca0a() { uint res = uint(sb_ro.arg_0.length()); } @@ -23,9 +24,10 @@ void main() { #version 310 es precision mediump float; -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { uint arg_0[]; } sb_ro; + void arrayLength_cfca0a() { uint res = uint(sb_ro.arg_0.length()); } @@ -40,9 +42,10 @@ void main() { } #version 310 es -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { uint arg_0[]; } sb_ro; + void arrayLength_cfca0a() { uint res = uint(sb_ro.arg_0.length()); } diff --git a/test/tint/builtins/gen/literal/arrayLength/eb510f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/arrayLength/eb510f.wgsl.expected.glsl index a11f1aa674..51f60def9b 100644 --- a/test/tint/builtins/gen/literal/arrayLength/eb510f.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/arrayLength/eb510f.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0[]; } sb_rw; + void arrayLength_eb510f() { uint res = uint(sb_rw.arg_0.length()); } @@ -23,9 +24,10 @@ void main() { #version 310 es precision mediump float; -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0[]; } sb_rw; + void arrayLength_eb510f() { uint res = uint(sb_rw.arg_0.length()); } @@ -40,9 +42,10 @@ void main() { } #version 310 es -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0[]; } sb_rw; + void arrayLength_eb510f() { uint res = uint(sb_rw.arg_0.length()); } diff --git a/test/tint/builtins/gen/literal/atomicAdd/8a199a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicAdd/8a199a.wgsl.expected.glsl index c2e7cdb490..17d00401e9 100644 --- a/test/tint/builtins/gen/literal/atomicAdd/8a199a.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicAdd/8a199a.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint res = atomicAdd(sb_rw.arg_0, 1u); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint res = atomicAdd(sb_rw.arg_0, 1u); } diff --git a/test/tint/builtins/gen/literal/atomicAdd/d32fe4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicAdd/d32fe4.wgsl.expected.glsl index a9a2c734e2..494e26cb56 100644 --- a/test/tint/builtins/gen/literal/atomicAdd/d32fe4.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicAdd/d32fe4.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int res = atomicAdd(sb_rw.arg_0, 1); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int res = atomicAdd(sb_rw.arg_0, 1); } diff --git a/test/tint/builtins/gen/literal/atomicAnd/152966.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicAnd/152966.wgsl.expected.glsl index 08154780c7..d1d9eeedc5 100644 --- a/test/tint/builtins/gen/literal/atomicAnd/152966.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicAnd/152966.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicAnd_152966() { int res = atomicAnd(sb_rw.arg_0, 1); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicAnd_152966() { int res = atomicAnd(sb_rw.arg_0, 1); } diff --git a/test/tint/builtins/gen/literal/atomicAnd/85a8d9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicAnd/85a8d9.wgsl.expected.glsl index 3363b8b057..4a93dfbc49 100644 --- a/test/tint/builtins/gen/literal/atomicAnd/85a8d9.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicAnd/85a8d9.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicAnd_85a8d9() { uint res = atomicAnd(sb_rw.arg_0, 1u); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicAnd_85a8d9() { uint res = atomicAnd(sb_rw.arg_0, 1u); } diff --git a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/1bd40a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/1bd40a.wgsl.expected.glsl index 001110fd65..6823d69449 100644 --- a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/1bd40a.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/1bd40a.wgsl.expected.glsl @@ -7,13 +7,10 @@ struct atomic_compare_exchange_resulti32 { }; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicCompareExchangeWeak_1bd40a() { atomic_compare_exchange_resulti32 atomic_compare_result; atomic_compare_result.old_value = atomicCompSwap(sb_rw.arg_0, 1, 1); @@ -37,13 +34,10 @@ struct atomic_compare_exchange_resulti32 { }; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicCompareExchangeWeak_1bd40a() { atomic_compare_exchange_resulti32 atomic_compare_result; atomic_compare_result.old_value = atomicCompSwap(sb_rw.arg_0, 1, 1); diff --git a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/63d8e6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/63d8e6.wgsl.expected.glsl index e5738b7cb4..e27f02e291 100644 --- a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/63d8e6.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/63d8e6.wgsl.expected.glsl @@ -7,13 +7,10 @@ struct atomic_compare_exchange_resultu32 { }; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicCompareExchangeWeak_63d8e6() { atomic_compare_exchange_resultu32 atomic_compare_result; atomic_compare_result.old_value = atomicCompSwap(sb_rw.arg_0, 1u, 1u); @@ -37,13 +34,10 @@ struct atomic_compare_exchange_resultu32 { }; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicCompareExchangeWeak_63d8e6() { atomic_compare_exchange_resultu32 atomic_compare_result; atomic_compare_result.old_value = atomicCompSwap(sb_rw.arg_0, 1u, 1u); diff --git a/test/tint/builtins/gen/literal/atomicExchange/d59712.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicExchange/d59712.wgsl.expected.glsl index 03b98912f1..12b23de8be 100644 --- a/test/tint/builtins/gen/literal/atomicExchange/d59712.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicExchange/d59712.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicExchange_d59712() { uint res = atomicExchange(sb_rw.arg_0, 1u); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicExchange_d59712() { uint res = atomicExchange(sb_rw.arg_0, 1u); } diff --git a/test/tint/builtins/gen/literal/atomicExchange/f2e22f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicExchange/f2e22f.wgsl.expected.glsl index d1f33c74c7..c9131e2257 100644 --- a/test/tint/builtins/gen/literal/atomicExchange/f2e22f.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicExchange/f2e22f.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicExchange_f2e22f() { int res = atomicExchange(sb_rw.arg_0, 1); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicExchange_f2e22f() { int res = atomicExchange(sb_rw.arg_0, 1); } diff --git a/test/tint/builtins/gen/literal/atomicLoad/0806ad.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicLoad/0806ad.wgsl.expected.glsl index 38a8c929f0..64291f3d3b 100644 --- a/test/tint/builtins/gen/literal/atomicLoad/0806ad.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicLoad/0806ad.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicLoad_0806ad() { int res = atomicOr(sb_rw.arg_0, 0); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicLoad_0806ad() { int res = atomicOr(sb_rw.arg_0, 0); } diff --git a/test/tint/builtins/gen/literal/atomicLoad/fe6cc3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicLoad/fe6cc3.wgsl.expected.glsl index b4bd0d8472..f17c51888b 100644 --- a/test/tint/builtins/gen/literal/atomicLoad/fe6cc3.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicLoad/fe6cc3.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicLoad_fe6cc3() { uint res = atomicOr(sb_rw.arg_0, 0u); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicLoad_fe6cc3() { uint res = atomicOr(sb_rw.arg_0, 0u); } diff --git a/test/tint/builtins/gen/literal/atomicMax/51b9be.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicMax/51b9be.wgsl.expected.glsl index 98f34a94fd..3f16d51e66 100644 --- a/test/tint/builtins/gen/literal/atomicMax/51b9be.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicMax/51b9be.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicMax_51b9be() { uint res = atomicMax(sb_rw.arg_0, 1u); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicMax_51b9be() { uint res = atomicMax(sb_rw.arg_0, 1u); } diff --git a/test/tint/builtins/gen/literal/atomicMax/92aa72.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicMax/92aa72.wgsl.expected.glsl index 9f6d0858bc..1b3e247fcc 100644 --- a/test/tint/builtins/gen/literal/atomicMax/92aa72.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicMax/92aa72.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicMax_92aa72() { int res = atomicMax(sb_rw.arg_0, 1); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicMax_92aa72() { int res = atomicMax(sb_rw.arg_0, 1); } diff --git a/test/tint/builtins/gen/literal/atomicMin/8e38dc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicMin/8e38dc.wgsl.expected.glsl index e2d3c72cb0..ea043dd1b3 100644 --- a/test/tint/builtins/gen/literal/atomicMin/8e38dc.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicMin/8e38dc.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicMin_8e38dc() { int res = atomicMin(sb_rw.arg_0, 1); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicMin_8e38dc() { int res = atomicMin(sb_rw.arg_0, 1); } diff --git a/test/tint/builtins/gen/literal/atomicMin/c67a74.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicMin/c67a74.wgsl.expected.glsl index 6e3098e4f7..588b83fcd1 100644 --- a/test/tint/builtins/gen/literal/atomicMin/c67a74.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicMin/c67a74.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicMin_c67a74() { uint res = atomicMin(sb_rw.arg_0, 1u); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicMin_c67a74() { uint res = atomicMin(sb_rw.arg_0, 1u); } diff --git a/test/tint/builtins/gen/literal/atomicOr/5e95d4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicOr/5e95d4.wgsl.expected.glsl index 4ee4deaa24..7bc55f0b93 100644 --- a/test/tint/builtins/gen/literal/atomicOr/5e95d4.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicOr/5e95d4.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicOr_5e95d4() { uint res = atomicOr(sb_rw.arg_0, 1u); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicOr_5e95d4() { uint res = atomicOr(sb_rw.arg_0, 1u); } diff --git a/test/tint/builtins/gen/literal/atomicOr/8d96a0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicOr/8d96a0.wgsl.expected.glsl index d5d42c474e..baad60df00 100644 --- a/test/tint/builtins/gen/literal/atomicOr/8d96a0.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicOr/8d96a0.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicOr_8d96a0() { int res = atomicOr(sb_rw.arg_0, 1); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicOr_8d96a0() { int res = atomicOr(sb_rw.arg_0, 1); } diff --git a/test/tint/builtins/gen/literal/atomicStore/cdc29e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicStore/cdc29e.wgsl.expected.glsl index 7d8d0f58d2..f1b5526fb7 100644 --- a/test/tint/builtins/gen/literal/atomicStore/cdc29e.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicStore/cdc29e.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicStore_cdc29e() { atomicExchange(sb_rw.arg_0, 1u); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicStore_cdc29e() { atomicExchange(sb_rw.arg_0, 1u); } diff --git a/test/tint/builtins/gen/literal/atomicStore/d1e9a6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicStore/d1e9a6.wgsl.expected.glsl index 128188090f..95dc6eacc6 100644 --- a/test/tint/builtins/gen/literal/atomicStore/d1e9a6.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicStore/d1e9a6.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicStore_d1e9a6() { atomicExchange(sb_rw.arg_0, 1); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicStore_d1e9a6() { atomicExchange(sb_rw.arg_0, 1); } diff --git a/test/tint/builtins/gen/literal/atomicSub/051100.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicSub/051100.wgsl.expected.glsl index 07573d2a8b..1969c4857c 100644 --- a/test/tint/builtins/gen/literal/atomicSub/051100.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicSub/051100.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicSub_051100() { int res = atomicAdd(sb_rw.arg_0, 1); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicSub_051100() { int res = atomicAdd(sb_rw.arg_0, 1); } diff --git a/test/tint/builtins/gen/literal/atomicSub/15bfc9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicSub/15bfc9.wgsl.expected.glsl index 24aa578df8..9881ff1806 100644 --- a/test/tint/builtins/gen/literal/atomicSub/15bfc9.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicSub/15bfc9.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicSub_15bfc9() { uint res = atomicAdd(sb_rw.arg_0, 1u); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicSub_15bfc9() { uint res = atomicAdd(sb_rw.arg_0, 1u); } diff --git a/test/tint/builtins/gen/literal/atomicXor/54510e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicXor/54510e.wgsl.expected.glsl index e04552e7a7..a69ee2d96f 100644 --- a/test/tint/builtins/gen/literal/atomicXor/54510e.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicXor/54510e.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicXor_54510e() { uint res = atomicXor(sb_rw.arg_0, 1u); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicXor_54510e() { uint res = atomicXor(sb_rw.arg_0, 1u); } diff --git a/test/tint/builtins/gen/literal/atomicXor/c1b78c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atomicXor/c1b78c.wgsl.expected.glsl index 0ebd9e74ab..4f11212d3b 100644 --- a/test/tint/builtins/gen/literal/atomicXor/c1b78c.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atomicXor/c1b78c.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicXor_c1b78c() { int res = atomicXor(sb_rw.arg_0, 1); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicXor_c1b78c() { int res = atomicXor(sb_rw.arg_0, 1); } 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 47564aef5d..f610169663 100644 --- a/test/tint/builtins/gen/literal/textureDimensions/ba1481.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/textureDimensions/ba1481.wgsl.expected.glsl @@ -11,16 +11,7 @@ struct GammaTransferParams { uint padding; }; -struct ExternalTextureParams { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; -}; - -layout(binding = 2) uniform ExternalTextureParams_1 { +layout(binding = 2) uniform ExternalTextureParams_ubo { uint numPlanes; uint doYuvToRgbConversionOnly; mat3x4 yuvToRgbConversionMatrix; @@ -61,16 +52,7 @@ struct GammaTransferParams { uint padding; }; -struct ExternalTextureParams { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; -}; - -layout(binding = 2) uniform ExternalTextureParams_1 { +layout(binding = 2) uniform ExternalTextureParams_ubo { uint numPlanes; uint doYuvToRgbConversionOnly; mat3x4 yuvToRgbConversionMatrix; @@ -105,16 +87,7 @@ struct GammaTransferParams { uint padding; }; -struct ExternalTextureParams { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; -}; - -layout(binding = 2) uniform ExternalTextureParams_1 { +layout(binding = 2) 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 4305443d10..2d9af35db2 100644 --- a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl @@ -1,5 +1,3 @@ -SKIP: FAILED - #version 310 es struct GammaTransferParams { @@ -22,13 +20,8 @@ struct ExternalTextureParams { mat3 gamutConversionMatrix; }; -layout(binding = 2) uniform ExternalTextureParams_1 { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; +layout(binding = 2) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; } ext_tex_params; vec3 gammaCorrection(vec3 v, GammaTransferParams params) { @@ -56,7 +49,7 @@ vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, ive uniform highp sampler2D arg_0_1; uniform highp sampler2D ext_tex_plane_1_1; void textureLoad_8acf41() { - vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, ivec2(0), ext_tex_params); + vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, ivec2(0), ext_tex_params.inner); } vec4 vertex_main() { @@ -72,14 +65,6 @@ void main() { gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); return; } -Error parsing GLSL shader: -ERROR: 0:57: 'textureLoadExternal' : no matching overloaded function found -ERROR: 0:57: '=' : cannot convert from ' const float' to ' temp highp 4-component vector of float' -ERROR: 0:57: '' : compilation terminated -ERROR: 3 compilation errors. No code generated. - - - #version 310 es precision mediump float; @@ -103,13 +88,8 @@ struct ExternalTextureParams { mat3 gamutConversionMatrix; }; -layout(binding = 2) uniform ExternalTextureParams_1 { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; +layout(binding = 2) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; } ext_tex_params; vec3 gammaCorrection(vec3 v, GammaTransferParams params) { @@ -137,7 +117,7 @@ vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, ive uniform highp sampler2D arg_0_1; uniform highp sampler2D ext_tex_plane_1_1; void textureLoad_8acf41() { - vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, ivec2(0), ext_tex_params); + vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, ivec2(0), ext_tex_params.inner); } void fragment_main() { @@ -148,14 +128,6 @@ void main() { fragment_main(); return; } -Error parsing GLSL shader: -ERROR: 0:58: 'textureLoadExternal' : no matching overloaded function found -ERROR: 0:58: '=' : cannot convert from ' const float' to ' temp mediump 4-component vector of float' -ERROR: 0:58: '' : compilation terminated -ERROR: 3 compilation errors. No code generated. - - - #version 310 es struct GammaTransferParams { @@ -178,13 +150,8 @@ struct ExternalTextureParams { mat3 gamutConversionMatrix; }; -layout(binding = 2) uniform ExternalTextureParams_1 { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; +layout(binding = 2) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; } ext_tex_params; vec3 gammaCorrection(vec3 v, GammaTransferParams params) { @@ -212,7 +179,7 @@ vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, ive uniform highp sampler2D arg_0_1; uniform highp sampler2D ext_tex_plane_1_1; void textureLoad_8acf41() { - vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, ivec2(0), ext_tex_params); + vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, ivec2(0), ext_tex_params.inner); } void compute_main() { @@ -224,11 +191,3 @@ void main() { compute_main(); return; } -Error parsing GLSL shader: -ERROR: 0:57: 'textureLoadExternal' : no matching overloaded function found -ERROR: 0:57: '=' : cannot convert from ' const float' to ' temp highp 4-component vector of float' -ERROR: 0:57: '' : compilation terminated -ERROR: 3 compilation errors. No code generated. - - - diff --git a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.spvasm index 01d87629f7..6eba59e22f 100644 --- a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.spvasm @@ -1,10 +1,10 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 134 +; Bound: 138 ; Schema: 0 OpCapability Shader - %27 = OpExtInstImport "GLSL.std.450" + %28 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -14,6 +14,8 @@ OpName %value "value" OpName %vertex_point_size "vertex_point_size" OpName %ext_tex_plane_1 "ext_tex_plane_1" + OpName %ext_tex_params_block "ext_tex_params_block" + OpMemberName %ext_tex_params_block 0 "inner" OpName %ExternalTextureParams "ExternalTextureParams" OpMemberName %ExternalTextureParams 0 "numPlanes" OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly" @@ -51,7 +53,8 @@ OpDecorate %vertex_point_size BuiltIn PointSize OpDecorate %ext_tex_plane_1 DescriptorSet 1 OpDecorate %ext_tex_plane_1 Binding 1 - OpDecorate %ExternalTextureParams Block + OpDecorate %ext_tex_params_block Block + OpMemberDecorate %ext_tex_params_block 0 Offset 0 OpMemberDecorate %ExternalTextureParams 0 Offset 0 OpMemberDecorate %ExternalTextureParams 1 Offset 4 OpMemberDecorate %ExternalTextureParams 2 Offset 16 @@ -92,147 +95,151 @@ %v3float = OpTypeVector %float 3 %mat3v3float = OpTypeMatrix %v3float 3 %ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float -%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams -%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform +%ext_tex_params_block = OpTypeStruct %ExternalTextureParams +%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block +%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant - %21 = OpTypeFunction %v3float %v3float %GammaTransferParams + %22 = OpTypeFunction %v3float %v3float %GammaTransferParams %bool = OpTypeBool %v3bool = OpTypeVector %bool 3 %_ptr_Function_v3float = OpTypePointer Function %v3float - %41 = OpConstantNull %v3float + %42 = OpConstantNull %v3float %int = OpTypeInt 32 1 %v2int = OpTypeVector %int 2 - %61 = OpTypeFunction %v4float %11 %11 %v2int %ExternalTextureParams + %62 = OpTypeFunction %v4float %11 %11 %v2int %ExternalTextureParams %uint_1 = OpConstant %uint 1 - %78 = OpConstantNull %int + %79 = OpConstantNull %int %v2float = OpTypeVector %float 2 %float_1 = OpConstant %float 1 - %92 = OpConstantNull %uint + %93 = OpConstantNull %uint %void = OpTypeVoid - %110 = OpTypeFunction %void - %117 = OpConstantNull %v2int + %111 = OpTypeFunction %void + %118 = OpConstantNull %v2int + %uint_0 = OpConstant %uint 0 +%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams %_ptr_Function_v4float = OpTypePointer Function %v4float - %121 = OpTypeFunction %v4float -%gammaCorrection = OpFunction %v3float None %21 + %125 = OpTypeFunction %v4float +%gammaCorrection = OpFunction %v3float None %22 %v = OpFunctionParameter %v3float %params = OpFunctionParameter %GammaTransferParams - %25 = OpLabel - %39 = OpVariable %_ptr_Function_v3float Function %41 - %51 = OpVariable %_ptr_Function_v3float Function %41 - %57 = OpVariable %_ptr_Function_v3float Function %41 - %26 = OpExtInst %v3float %27 FAbs %v - %28 = OpCompositeExtract %float %params 4 - %29 = OpCompositeConstruct %v3float %28 %28 %28 - %30 = OpFOrdLessThan %v3bool %26 %29 - %33 = OpExtInst %v3float %27 FSign %v - %34 = OpCompositeExtract %float %params 3 - %35 = OpExtInst %v3float %27 FAbs %v - %36 = OpVectorTimesScalar %v3float %35 %34 - %37 = OpCompositeExtract %float %params 6 - %42 = OpCompositeConstruct %v3float %37 %37 %37 - %38 = OpFAdd %v3float %36 %42 - %43 = OpFMul %v3float %33 %38 - %44 = OpExtInst %v3float %27 FSign %v - %46 = OpCompositeExtract %float %params 1 - %47 = OpExtInst %v3float %27 FAbs %v - %48 = OpVectorTimesScalar %v3float %47 %46 - %49 = OpCompositeExtract %float %params 2 - %52 = OpCompositeConstruct %v3float %49 %49 %49 - %50 = OpFAdd %v3float %48 %52 - %53 = OpCompositeExtract %float %params 0 - %54 = OpCompositeConstruct %v3float %53 %53 %53 - %45 = OpExtInst %v3float %27 Pow %50 %54 - %55 = OpCompositeExtract %float %params 5 - %58 = OpCompositeConstruct %v3float %55 %55 %55 - %56 = OpFAdd %v3float %45 %58 - %59 = OpFMul %v3float %44 %56 - %60 = OpSelect %v3float %30 %43 %59 - OpReturnValue %60 + %26 = OpLabel + %40 = OpVariable %_ptr_Function_v3float Function %42 + %52 = OpVariable %_ptr_Function_v3float Function %42 + %58 = OpVariable %_ptr_Function_v3float Function %42 + %27 = OpExtInst %v3float %28 FAbs %v + %29 = OpCompositeExtract %float %params 4 + %30 = OpCompositeConstruct %v3float %29 %29 %29 + %31 = OpFOrdLessThan %v3bool %27 %30 + %34 = OpExtInst %v3float %28 FSign %v + %35 = OpCompositeExtract %float %params 3 + %36 = OpExtInst %v3float %28 FAbs %v + %37 = OpVectorTimesScalar %v3float %36 %35 + %38 = OpCompositeExtract %float %params 6 + %43 = OpCompositeConstruct %v3float %38 %38 %38 + %39 = OpFAdd %v3float %37 %43 + %44 = OpFMul %v3float %34 %39 + %45 = OpExtInst %v3float %28 FSign %v + %47 = OpCompositeExtract %float %params 1 + %48 = OpExtInst %v3float %28 FAbs %v + %49 = OpVectorTimesScalar %v3float %48 %47 + %50 = OpCompositeExtract %float %params 2 + %53 = OpCompositeConstruct %v3float %50 %50 %50 + %51 = OpFAdd %v3float %49 %53 + %54 = OpCompositeExtract %float %params 0 + %55 = OpCompositeConstruct %v3float %54 %54 %54 + %46 = OpExtInst %v3float %28 Pow %51 %55 + %56 = OpCompositeExtract %float %params 5 + %59 = OpCompositeConstruct %v3float %56 %56 %56 + %57 = OpFAdd %v3float %46 %59 + %60 = OpFMul %v3float %45 %57 + %61 = OpSelect %v3float %31 %44 %60 + OpReturnValue %61 OpFunctionEnd -%textureLoadExternal = OpFunction %v4float None %61 +%textureLoadExternal = OpFunction %v4float None %62 %plane0 = OpFunctionParameter %11 %plane1 = OpFunctionParameter %11 %coord = OpFunctionParameter %v2int %params_0 = OpFunctionParameter %ExternalTextureParams - %69 = OpLabel - %color = OpVariable %_ptr_Function_v3float Function %41 - %71 = OpCompositeExtract %uint %params_0 0 - %73 = OpIEqual %bool %71 %uint_1 - OpSelectionMerge %74 None - OpBranchConditional %73 %75 %76 - %75 = OpLabel - %77 = OpImageFetch %v4float %plane0 %coord Lod %78 - %79 = OpVectorShuffle %v3float %77 %77 0 1 2 - OpStore %color %79 - OpBranch %74 + %70 = OpLabel + %color = OpVariable %_ptr_Function_v3float Function %42 + %72 = OpCompositeExtract %uint %params_0 0 + %74 = OpIEqual %bool %72 %uint_1 + OpSelectionMerge %75 None + OpBranchConditional %74 %76 %77 %76 = OpLabel - %80 = OpImageFetch %v4float %plane0 %coord Lod %78 - %81 = OpCompositeExtract %float %80 0 - %82 = OpImageFetch %v4float %plane1 %coord Lod %78 - %84 = OpVectorShuffle %v2float %82 %82 0 1 - %85 = OpCompositeExtract %float %84 0 - %86 = OpCompositeExtract %float %84 1 - %88 = OpCompositeConstruct %v4float %81 %85 %86 %float_1 - %89 = OpCompositeExtract %mat3v4float %params_0 2 - %90 = OpVectorTimesMatrix %v3float %88 %89 - OpStore %color %90 - OpBranch %74 - %74 = OpLabel - %91 = OpCompositeExtract %uint %params_0 1 - %93 = OpIEqual %bool %91 %92 - OpSelectionMerge %94 None - OpBranchConditional %93 %95 %94 - %95 = OpLabel - %97 = OpLoad %v3float %color - %98 = OpCompositeExtract %GammaTransferParams %params_0 3 - %96 = OpFunctionCall %v3float %gammaCorrection %97 %98 - OpStore %color %96 - %99 = OpCompositeExtract %mat3v3float %params_0 5 - %100 = OpLoad %v3float %color - %101 = OpMatrixTimesVector %v3float %99 %100 - OpStore %color %101 - %103 = OpLoad %v3float %color - %104 = OpCompositeExtract %GammaTransferParams %params_0 4 - %102 = OpFunctionCall %v3float %gammaCorrection %103 %104 + %78 = OpImageFetch %v4float %plane0 %coord Lod %79 + %80 = OpVectorShuffle %v3float %78 %78 0 1 2 + OpStore %color %80 + OpBranch %75 + %77 = OpLabel + %81 = OpImageFetch %v4float %plane0 %coord Lod %79 + %82 = OpCompositeExtract %float %81 0 + %83 = OpImageFetch %v4float %plane1 %coord Lod %79 + %85 = OpVectorShuffle %v2float %83 %83 0 1 + %86 = OpCompositeExtract %float %85 0 + %87 = OpCompositeExtract %float %85 1 + %89 = OpCompositeConstruct %v4float %82 %86 %87 %float_1 + %90 = OpCompositeExtract %mat3v4float %params_0 2 + %91 = OpVectorTimesMatrix %v3float %89 %90 + OpStore %color %91 + OpBranch %75 + %75 = OpLabel + %92 = OpCompositeExtract %uint %params_0 1 + %94 = OpIEqual %bool %92 %93 + OpSelectionMerge %95 None + OpBranchConditional %94 %96 %95 + %96 = OpLabel + %98 = OpLoad %v3float %color + %99 = OpCompositeExtract %GammaTransferParams %params_0 3 + %97 = OpFunctionCall %v3float %gammaCorrection %98 %99 + OpStore %color %97 + %100 = OpCompositeExtract %mat3v3float %params_0 5 + %101 = OpLoad %v3float %color + %102 = OpMatrixTimesVector %v3float %100 %101 OpStore %color %102 - OpBranch %94 - %94 = OpLabel - %105 = OpLoad %v3float %color - %106 = OpCompositeExtract %float %105 0 - %107 = OpCompositeExtract %float %105 1 - %108 = OpCompositeExtract %float %105 2 - %109 = OpCompositeConstruct %v4float %106 %107 %108 %float_1 - OpReturnValue %109 + %104 = OpLoad %v3float %color + %105 = OpCompositeExtract %GammaTransferParams %params_0 4 + %103 = OpFunctionCall %v3float %gammaCorrection %104 %105 + OpStore %color %103 + OpBranch %95 + %95 = OpLabel + %106 = OpLoad %v3float %color + %107 = OpCompositeExtract %float %106 0 + %108 = OpCompositeExtract %float %106 1 + %109 = OpCompositeExtract %float %106 2 + %110 = OpCompositeConstruct %v4float %107 %108 %109 %float_1 + OpReturnValue %110 OpFunctionEnd -%textureLoad_8acf41 = OpFunction %void None %110 - %113 = OpLabel +%textureLoad_8acf41 = OpFunction %void None %111 + %114 = OpLabel %res = OpVariable %_ptr_Function_v4float Function %5 - %115 = OpLoad %11 %arg_0 - %116 = OpLoad %11 %ext_tex_plane_1 - %118 = OpLoad %ExternalTextureParams %ext_tex_params - %114 = OpFunctionCall %v4float %textureLoadExternal %115 %116 %117 %118 - OpStore %res %114 + %116 = OpLoad %11 %arg_0 + %117 = OpLoad %11 %ext_tex_plane_1 + %121 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0 + %122 = OpLoad %ExternalTextureParams %121 + %115 = OpFunctionCall %v4float %textureLoadExternal %116 %117 %118 %122 + OpStore %res %115 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %121 - %123 = OpLabel - %124 = OpFunctionCall %void %textureLoad_8acf41 +%vertex_main_inner = OpFunction %v4float None %125 + %127 = OpLabel + %128 = OpFunctionCall %void %textureLoad_8acf41 OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %110 - %126 = OpLabel - %127 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %127 +%vertex_main = OpFunction %void None %111 + %130 = OpLabel + %131 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %131 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %110 - %129 = OpLabel - %130 = OpFunctionCall %void %textureLoad_8acf41 +%fragment_main = OpFunction %void None %111 + %133 = OpLabel + %134 = OpFunctionCall %void %textureLoad_8acf41 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %110 - %132 = OpLabel - %133 = OpFunctionCall %void %textureLoad_8acf41 +%compute_main = OpFunction %void None %111 + %136 = OpLabel + %137 = OpFunctionCall %void %textureLoad_8acf41 OpReturn OpFunctionEnd 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 68b71f1fb9..63c387fe10 100644 --- a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.glsl @@ -1,5 +1,3 @@ -SKIP: FAILED - #version 310 es struct GammaTransferParams { @@ -22,13 +20,8 @@ struct ExternalTextureParams { mat3 gamutConversionMatrix; }; -layout(binding = 3) uniform ExternalTextureParams_1 { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; +layout(binding = 3) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; } ext_tex_params; vec3 gammaCorrection(vec3 v, GammaTransferParams params) { @@ -57,7 +50,7 @@ vec4 textureSampleExternal(highp sampler2D plane0_smp, highp sampler2D plane1_sm uniform highp sampler2D arg_0_arg_1; uniform highp sampler2D ext_tex_plane_1_arg_1; void textureSampleLevel_979816() { - vec4 res = textureSampleExternal(arg_0_arg_1, ext_tex_plane_1_arg_1, vec2(0.0f), ext_tex_params); + vec4 res = textureSampleExternal(arg_0_arg_1, ext_tex_plane_1_arg_1, vec2(0.0f), ext_tex_params.inner); } vec4 vertex_main() { @@ -73,14 +66,6 @@ void main() { gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); return; } -Error parsing GLSL shader: -ERROR: 0:58: 'textureSampleExternal' : no matching overloaded function found -ERROR: 0:58: '=' : cannot convert from ' const float' to ' temp highp 4-component vector of float' -ERROR: 0:58: '' : compilation terminated -ERROR: 3 compilation errors. No code generated. - - - #version 310 es precision mediump float; @@ -104,13 +89,8 @@ struct ExternalTextureParams { mat3 gamutConversionMatrix; }; -layout(binding = 3) uniform ExternalTextureParams_1 { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; +layout(binding = 3) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; } ext_tex_params; vec3 gammaCorrection(vec3 v, GammaTransferParams params) { @@ -139,7 +119,7 @@ vec4 textureSampleExternal(highp sampler2D plane0_smp, highp sampler2D plane1_sm uniform highp sampler2D arg_0_arg_1; uniform highp sampler2D ext_tex_plane_1_arg_1; void textureSampleLevel_979816() { - vec4 res = textureSampleExternal(arg_0_arg_1, ext_tex_plane_1_arg_1, vec2(0.0f), ext_tex_params); + vec4 res = textureSampleExternal(arg_0_arg_1, ext_tex_plane_1_arg_1, vec2(0.0f), ext_tex_params.inner); } void fragment_main() { @@ -150,14 +130,6 @@ void main() { fragment_main(); return; } -Error parsing GLSL shader: -ERROR: 0:59: 'textureSampleExternal' : no matching overloaded function found -ERROR: 0:59: '=' : cannot convert from ' const float' to ' temp mediump 4-component vector of float' -ERROR: 0:59: '' : compilation terminated -ERROR: 3 compilation errors. No code generated. - - - #version 310 es struct GammaTransferParams { @@ -180,13 +152,8 @@ struct ExternalTextureParams { mat3 gamutConversionMatrix; }; -layout(binding = 3) uniform ExternalTextureParams_1 { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; +layout(binding = 3) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; } ext_tex_params; vec3 gammaCorrection(vec3 v, GammaTransferParams params) { @@ -215,7 +182,7 @@ vec4 textureSampleExternal(highp sampler2D plane0_smp, highp sampler2D plane1_sm uniform highp sampler2D arg_0_arg_1; uniform highp sampler2D ext_tex_plane_1_arg_1; void textureSampleLevel_979816() { - vec4 res = textureSampleExternal(arg_0_arg_1, ext_tex_plane_1_arg_1, vec2(0.0f), ext_tex_params); + vec4 res = textureSampleExternal(arg_0_arg_1, ext_tex_plane_1_arg_1, vec2(0.0f), ext_tex_params.inner); } void compute_main() { @@ -227,11 +194,3 @@ void main() { compute_main(); return; } -Error parsing GLSL shader: -ERROR: 0:58: 'textureSampleExternal' : no matching overloaded function found -ERROR: 0:58: '=' : cannot convert from ' const float' to ' temp highp 4-component vector of float' -ERROR: 0:58: '' : compilation terminated -ERROR: 3 compilation errors. No code generated. - - - diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.spvasm index 444e4c2c9e..acb3f03441 100644 --- a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.spvasm @@ -1,10 +1,10 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 140 +; Bound: 144 ; Schema: 0 OpCapability Shader - %30 = OpExtInstImport "GLSL.std.450" + %31 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -14,6 +14,8 @@ OpName %value "value" OpName %vertex_point_size "vertex_point_size" OpName %ext_tex_plane_1 "ext_tex_plane_1" + OpName %ext_tex_params_block "ext_tex_params_block" + OpMemberName %ext_tex_params_block 0 "inner" OpName %ExternalTextureParams "ExternalTextureParams" OpMemberName %ExternalTextureParams 0 "numPlanes" OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly" @@ -53,7 +55,8 @@ OpDecorate %vertex_point_size BuiltIn PointSize OpDecorate %ext_tex_plane_1 DescriptorSet 1 OpDecorate %ext_tex_plane_1 Binding 2 - OpDecorate %ExternalTextureParams Block + OpDecorate %ext_tex_params_block Block + OpMemberDecorate %ext_tex_params_block 0 Offset 0 OpMemberDecorate %ExternalTextureParams 0 Offset 0 OpMemberDecorate %ExternalTextureParams 1 Offset 4 OpMemberDecorate %ExternalTextureParams 2 Offset 16 @@ -96,153 +99,157 @@ %v3float = OpTypeVector %float 3 %mat3v3float = OpTypeMatrix %v3float 3 %ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float -%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams -%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform +%ext_tex_params_block = OpTypeStruct %ExternalTextureParams +%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block +%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant - %23 = OpTypeSampler -%_ptr_UniformConstant_23 = OpTypePointer UniformConstant %23 - %arg_1 = OpVariable %_ptr_UniformConstant_23 UniformConstant - %24 = OpTypeFunction %v3float %v3float %GammaTransferParams + %24 = OpTypeSampler +%_ptr_UniformConstant_24 = OpTypePointer UniformConstant %24 + %arg_1 = OpVariable %_ptr_UniformConstant_24 UniformConstant + %25 = OpTypeFunction %v3float %v3float %GammaTransferParams %bool = OpTypeBool %v3bool = OpTypeVector %bool 3 %_ptr_Function_v3float = OpTypePointer Function %v3float - %44 = OpConstantNull %v3float + %45 = OpConstantNull %v3float %v2float = OpTypeVector %float 2 - %64 = OpTypeFunction %v4float %11 %11 %23 %v2float %ExternalTextureParams + %65 = OpTypeFunction %v4float %11 %11 %24 %v2float %ExternalTextureParams %uint_1 = OpConstant %uint 1 - %81 = OpTypeSampledImage %11 + %82 = OpTypeSampledImage %11 %float_1 = OpConstant %float 1 - %97 = OpConstantNull %uint + %98 = OpConstantNull %uint %void = OpTypeVoid - %115 = OpTypeFunction %void - %123 = OpConstantNull %v2float + %116 = OpTypeFunction %void + %124 = OpConstantNull %v2float + %uint_0 = OpConstant %uint 0 +%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams %_ptr_Function_v4float = OpTypePointer Function %v4float - %127 = OpTypeFunction %v4float -%gammaCorrection = OpFunction %v3float None %24 + %131 = OpTypeFunction %v4float +%gammaCorrection = OpFunction %v3float None %25 %v = OpFunctionParameter %v3float %params = OpFunctionParameter %GammaTransferParams - %28 = OpLabel - %42 = OpVariable %_ptr_Function_v3float Function %44 - %54 = OpVariable %_ptr_Function_v3float Function %44 - %60 = OpVariable %_ptr_Function_v3float Function %44 - %29 = OpExtInst %v3float %30 FAbs %v - %31 = OpCompositeExtract %float %params 4 - %32 = OpCompositeConstruct %v3float %31 %31 %31 - %33 = OpFOrdLessThan %v3bool %29 %32 - %36 = OpExtInst %v3float %30 FSign %v - %37 = OpCompositeExtract %float %params 3 - %38 = OpExtInst %v3float %30 FAbs %v - %39 = OpVectorTimesScalar %v3float %38 %37 - %40 = OpCompositeExtract %float %params 6 - %45 = OpCompositeConstruct %v3float %40 %40 %40 - %41 = OpFAdd %v3float %39 %45 - %46 = OpFMul %v3float %36 %41 - %47 = OpExtInst %v3float %30 FSign %v - %49 = OpCompositeExtract %float %params 1 - %50 = OpExtInst %v3float %30 FAbs %v - %51 = OpVectorTimesScalar %v3float %50 %49 - %52 = OpCompositeExtract %float %params 2 - %55 = OpCompositeConstruct %v3float %52 %52 %52 - %53 = OpFAdd %v3float %51 %55 - %56 = OpCompositeExtract %float %params 0 - %57 = OpCompositeConstruct %v3float %56 %56 %56 - %48 = OpExtInst %v3float %30 Pow %53 %57 - %58 = OpCompositeExtract %float %params 5 - %61 = OpCompositeConstruct %v3float %58 %58 %58 - %59 = OpFAdd %v3float %48 %61 - %62 = OpFMul %v3float %47 %59 - %63 = OpSelect %v3float %33 %46 %62 - OpReturnValue %63 + %29 = OpLabel + %43 = OpVariable %_ptr_Function_v3float Function %45 + %55 = OpVariable %_ptr_Function_v3float Function %45 + %61 = OpVariable %_ptr_Function_v3float Function %45 + %30 = OpExtInst %v3float %31 FAbs %v + %32 = OpCompositeExtract %float %params 4 + %33 = OpCompositeConstruct %v3float %32 %32 %32 + %34 = OpFOrdLessThan %v3bool %30 %33 + %37 = OpExtInst %v3float %31 FSign %v + %38 = OpCompositeExtract %float %params 3 + %39 = OpExtInst %v3float %31 FAbs %v + %40 = OpVectorTimesScalar %v3float %39 %38 + %41 = OpCompositeExtract %float %params 6 + %46 = OpCompositeConstruct %v3float %41 %41 %41 + %42 = OpFAdd %v3float %40 %46 + %47 = OpFMul %v3float %37 %42 + %48 = OpExtInst %v3float %31 FSign %v + %50 = OpCompositeExtract %float %params 1 + %51 = OpExtInst %v3float %31 FAbs %v + %52 = OpVectorTimesScalar %v3float %51 %50 + %53 = OpCompositeExtract %float %params 2 + %56 = OpCompositeConstruct %v3float %53 %53 %53 + %54 = OpFAdd %v3float %52 %56 + %57 = OpCompositeExtract %float %params 0 + %58 = OpCompositeConstruct %v3float %57 %57 %57 + %49 = OpExtInst %v3float %31 Pow %54 %58 + %59 = OpCompositeExtract %float %params 5 + %62 = OpCompositeConstruct %v3float %59 %59 %59 + %60 = OpFAdd %v3float %49 %62 + %63 = OpFMul %v3float %48 %60 + %64 = OpSelect %v3float %34 %47 %63 + OpReturnValue %64 OpFunctionEnd -%textureSampleExternal = OpFunction %v4float None %64 +%textureSampleExternal = OpFunction %v4float None %65 %plane0 = OpFunctionParameter %11 %plane1 = OpFunctionParameter %11 - %smp = OpFunctionParameter %23 + %smp = OpFunctionParameter %24 %coord = OpFunctionParameter %v2float %params_0 = OpFunctionParameter %ExternalTextureParams - %72 = OpLabel - %color = OpVariable %_ptr_Function_v3float Function %44 - %74 = OpCompositeExtract %uint %params_0 0 - %76 = OpIEqual %bool %74 %uint_1 - OpSelectionMerge %77 None - OpBranchConditional %76 %78 %79 - %78 = OpLabel - %82 = OpSampledImage %81 %plane0 %smp - %80 = OpImageSampleExplicitLod %v4float %82 %coord Lod %8 - %83 = OpVectorShuffle %v3float %80 %80 0 1 2 - OpStore %color %83 - OpBranch %77 + %73 = OpLabel + %color = OpVariable %_ptr_Function_v3float Function %45 + %75 = OpCompositeExtract %uint %params_0 0 + %77 = OpIEqual %bool %75 %uint_1 + OpSelectionMerge %78 None + OpBranchConditional %77 %79 %80 %79 = OpLabel - %85 = OpSampledImage %81 %plane0 %smp - %84 = OpImageSampleExplicitLod %v4float %85 %coord Lod %8 - %86 = OpCompositeExtract %float %84 0 - %88 = OpSampledImage %81 %plane1 %smp - %87 = OpImageSampleExplicitLod %v4float %88 %coord Lod %8 - %89 = OpVectorShuffle %v2float %87 %87 0 1 - %90 = OpCompositeExtract %float %89 0 - %91 = OpCompositeExtract %float %89 1 - %93 = OpCompositeConstruct %v4float %86 %90 %91 %float_1 - %94 = OpCompositeExtract %mat3v4float %params_0 2 - %95 = OpVectorTimesMatrix %v3float %93 %94 - OpStore %color %95 - OpBranch %77 - %77 = OpLabel - %96 = OpCompositeExtract %uint %params_0 1 - %98 = OpIEqual %bool %96 %97 - OpSelectionMerge %99 None - OpBranchConditional %98 %100 %99 - %100 = OpLabel - %102 = OpLoad %v3float %color - %103 = OpCompositeExtract %GammaTransferParams %params_0 3 - %101 = OpFunctionCall %v3float %gammaCorrection %102 %103 - OpStore %color %101 - %104 = OpCompositeExtract %mat3v3float %params_0 5 - %105 = OpLoad %v3float %color - %106 = OpMatrixTimesVector %v3float %104 %105 - OpStore %color %106 - %108 = OpLoad %v3float %color - %109 = OpCompositeExtract %GammaTransferParams %params_0 4 - %107 = OpFunctionCall %v3float %gammaCorrection %108 %109 + %83 = OpSampledImage %82 %plane0 %smp + %81 = OpImageSampleExplicitLod %v4float %83 %coord Lod %8 + %84 = OpVectorShuffle %v3float %81 %81 0 1 2 + OpStore %color %84 + OpBranch %78 + %80 = OpLabel + %86 = OpSampledImage %82 %plane0 %smp + %85 = OpImageSampleExplicitLod %v4float %86 %coord Lod %8 + %87 = OpCompositeExtract %float %85 0 + %89 = OpSampledImage %82 %plane1 %smp + %88 = OpImageSampleExplicitLod %v4float %89 %coord Lod %8 + %90 = OpVectorShuffle %v2float %88 %88 0 1 + %91 = OpCompositeExtract %float %90 0 + %92 = OpCompositeExtract %float %90 1 + %94 = OpCompositeConstruct %v4float %87 %91 %92 %float_1 + %95 = OpCompositeExtract %mat3v4float %params_0 2 + %96 = OpVectorTimesMatrix %v3float %94 %95 + OpStore %color %96 + OpBranch %78 + %78 = OpLabel + %97 = OpCompositeExtract %uint %params_0 1 + %99 = OpIEqual %bool %97 %98 + OpSelectionMerge %100 None + OpBranchConditional %99 %101 %100 + %101 = OpLabel + %103 = OpLoad %v3float %color + %104 = OpCompositeExtract %GammaTransferParams %params_0 3 + %102 = OpFunctionCall %v3float %gammaCorrection %103 %104 + OpStore %color %102 + %105 = OpCompositeExtract %mat3v3float %params_0 5 + %106 = OpLoad %v3float %color + %107 = OpMatrixTimesVector %v3float %105 %106 OpStore %color %107 - OpBranch %99 - %99 = OpLabel - %110 = OpLoad %v3float %color - %111 = OpCompositeExtract %float %110 0 - %112 = OpCompositeExtract %float %110 1 - %113 = OpCompositeExtract %float %110 2 - %114 = OpCompositeConstruct %v4float %111 %112 %113 %float_1 - OpReturnValue %114 + %109 = OpLoad %v3float %color + %110 = OpCompositeExtract %GammaTransferParams %params_0 4 + %108 = OpFunctionCall %v3float %gammaCorrection %109 %110 + OpStore %color %108 + OpBranch %100 + %100 = OpLabel + %111 = OpLoad %v3float %color + %112 = OpCompositeExtract %float %111 0 + %113 = OpCompositeExtract %float %111 1 + %114 = OpCompositeExtract %float %111 2 + %115 = OpCompositeConstruct %v4float %112 %113 %114 %float_1 + OpReturnValue %115 OpFunctionEnd -%textureSampleLevel_979816 = OpFunction %void None %115 - %118 = OpLabel +%textureSampleLevel_979816 = OpFunction %void None %116 + %119 = OpLabel %res = OpVariable %_ptr_Function_v4float Function %5 - %120 = OpLoad %11 %arg_0 - %121 = OpLoad %11 %ext_tex_plane_1 - %122 = OpLoad %23 %arg_1 - %124 = OpLoad %ExternalTextureParams %ext_tex_params - %119 = OpFunctionCall %v4float %textureSampleExternal %120 %121 %122 %123 %124 - OpStore %res %119 + %121 = OpLoad %11 %arg_0 + %122 = OpLoad %11 %ext_tex_plane_1 + %123 = OpLoad %24 %arg_1 + %127 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0 + %128 = OpLoad %ExternalTextureParams %127 + %120 = OpFunctionCall %v4float %textureSampleExternal %121 %122 %123 %124 %128 + OpStore %res %120 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %127 - %129 = OpLabel - %130 = OpFunctionCall %void %textureSampleLevel_979816 +%vertex_main_inner = OpFunction %v4float None %131 + %133 = OpLabel + %134 = OpFunctionCall %void %textureSampleLevel_979816 OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %115 - %132 = OpLabel - %133 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %133 +%vertex_main = OpFunction %void None %116 + %136 = OpLabel + %137 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %137 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %115 - %135 = OpLabel - %136 = OpFunctionCall %void %textureSampleLevel_979816 +%fragment_main = OpFunction %void None %116 + %139 = OpLabel + %140 = OpFunctionCall %void %textureSampleLevel_979816 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %115 - %138 = OpLabel - %139 = OpFunctionCall %void %textureSampleLevel_979816 +%compute_main = OpFunction %void None %116 + %142 = OpLabel + %143 = OpFunctionCall %void %textureSampleLevel_979816 OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/var/arrayLength/1588cd.wgsl.expected.glsl b/test/tint/builtins/gen/var/arrayLength/1588cd.wgsl.expected.glsl index a143e1835e..4f59c4b7d7 100644 --- a/test/tint/builtins/gen/var/arrayLength/1588cd.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/arrayLength/1588cd.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { int arg_0[]; } sb_ro; + void arrayLength_1588cd() { uint res = uint(sb_ro.arg_0.length()); } @@ -23,9 +24,10 @@ void main() { #version 310 es precision mediump float; -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { int arg_0[]; } sb_ro; + void arrayLength_1588cd() { uint res = uint(sb_ro.arg_0.length()); } @@ -40,9 +42,10 @@ void main() { } #version 310 es -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { int arg_0[]; } sb_ro; + void arrayLength_1588cd() { uint res = uint(sb_ro.arg_0.length()); } diff --git a/test/tint/builtins/gen/var/arrayLength/61b1c7.wgsl.expected.glsl b/test/tint/builtins/gen/var/arrayLength/61b1c7.wgsl.expected.glsl index 46667de5c6..d22edc1efb 100644 --- a/test/tint/builtins/gen/var/arrayLength/61b1c7.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/arrayLength/61b1c7.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0[]; } sb_rw; + void arrayLength_61b1c7() { uint res = uint(sb_rw.arg_0.length()); } @@ -23,9 +24,10 @@ void main() { #version 310 es precision mediump float; -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0[]; } sb_rw; + void arrayLength_61b1c7() { uint res = uint(sb_rw.arg_0.length()); } @@ -40,9 +42,10 @@ void main() { } #version 310 es -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0[]; } sb_rw; + void arrayLength_61b1c7() { uint res = uint(sb_rw.arg_0.length()); } diff --git a/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.glsl b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.glsl index 58ecc49e88..c34cb64bfa 100644 --- a/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.glsl @@ -1,17 +1,17 @@ SKIP: FAILED -gen/var/arrayLength/8421b9.wgsl:26:10 error: using f16 types in 'storage' storage class is not implemented yet +builtins/gen/var/arrayLength/8421b9.wgsl:26:10 error: using f16 types in 'storage' storage class is not implemented yet arg_0: array, ^^^^^^^^^^ -gen/var/arrayLength/8421b9.wgsl:25:1 note: see layout of struct: +builtins/gen/var/arrayLength/8421b9.wgsl:25:1 note: see layout of struct: /* align(2) size(2) */ struct SB_RO { /* offset(0) align(2) size(2) */ arg_0 : array; /* */ }; struct SB_RO { ^^^^^^ -gen/var/arrayLength/8421b9.wgsl:28:42 note: see declaration of variable +builtins/gen/var/arrayLength/8421b9.wgsl:28:42 note: see declaration of variable @group(0) @binding(1) var sb_ro : SB_RO; ^^^^^ diff --git a/test/tint/builtins/gen/var/arrayLength/a0f5ca.wgsl.expected.glsl b/test/tint/builtins/gen/var/arrayLength/a0f5ca.wgsl.expected.glsl index 44aaf23ebf..d7e4539472 100644 --- a/test/tint/builtins/gen/var/arrayLength/a0f5ca.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/arrayLength/a0f5ca.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { float arg_0[]; } sb_ro; + void arrayLength_a0f5ca() { uint res = uint(sb_ro.arg_0.length()); } @@ -23,9 +24,10 @@ void main() { #version 310 es precision mediump float; -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { float arg_0[]; } sb_ro; + void arrayLength_a0f5ca() { uint res = uint(sb_ro.arg_0.length()); } @@ -40,9 +42,10 @@ void main() { } #version 310 es -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { float arg_0[]; } sb_ro; + void arrayLength_a0f5ca() { uint res = uint(sb_ro.arg_0.length()); } diff --git a/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.glsl b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.glsl index 07baca0c0d..2819fce155 100644 --- a/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.glsl @@ -1,17 +1,17 @@ SKIP: FAILED -gen/var/arrayLength/cbd6b5.wgsl:26:10 error: using f16 types in 'storage' storage class is not implemented yet +builtins/gen/var/arrayLength/cbd6b5.wgsl:26:10 error: using f16 types in 'storage' storage class is not implemented yet arg_0: array, ^^^^^^^^^^ -gen/var/arrayLength/cbd6b5.wgsl:25:1 note: see layout of struct: +builtins/gen/var/arrayLength/cbd6b5.wgsl:25:1 note: see layout of struct: /* align(2) size(2) */ struct SB_RW { /* offset(0) align(2) size(2) */ arg_0 : array; /* */ }; struct SB_RW { ^^^^^^ -gen/var/arrayLength/cbd6b5.wgsl:28:48 note: see declaration of variable +builtins/gen/var/arrayLength/cbd6b5.wgsl:28:48 note: see declaration of variable @group(0) @binding(0) var sb_rw : SB_RW; ^^^^^ diff --git a/test/tint/builtins/gen/var/arrayLength/cdd123.wgsl.expected.glsl b/test/tint/builtins/gen/var/arrayLength/cdd123.wgsl.expected.glsl index dac4336dee..5d417ac143 100644 --- a/test/tint/builtins/gen/var/arrayLength/cdd123.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/arrayLength/cdd123.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { float arg_0[]; } sb_rw; + void arrayLength_cdd123() { uint res = uint(sb_rw.arg_0.length()); } @@ -23,9 +24,10 @@ void main() { #version 310 es precision mediump float; -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { float arg_0[]; } sb_rw; + void arrayLength_cdd123() { uint res = uint(sb_rw.arg_0.length()); } @@ -40,9 +42,10 @@ void main() { } #version 310 es -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { float arg_0[]; } sb_rw; + void arrayLength_cdd123() { uint res = uint(sb_rw.arg_0.length()); } diff --git a/test/tint/builtins/gen/var/arrayLength/cfca0a.wgsl.expected.glsl b/test/tint/builtins/gen/var/arrayLength/cfca0a.wgsl.expected.glsl index e159befc7e..a605e06309 100644 --- a/test/tint/builtins/gen/var/arrayLength/cfca0a.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/arrayLength/cfca0a.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { uint arg_0[]; } sb_ro; + void arrayLength_cfca0a() { uint res = uint(sb_ro.arg_0.length()); } @@ -23,9 +24,10 @@ void main() { #version 310 es precision mediump float; -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { uint arg_0[]; } sb_ro; + void arrayLength_cfca0a() { uint res = uint(sb_ro.arg_0.length()); } @@ -40,9 +42,10 @@ void main() { } #version 310 es -layout(binding = 1, std430) buffer SB_RO_1 { +layout(binding = 1, std430) buffer SB_RO_ssbo { uint arg_0[]; } sb_ro; + void arrayLength_cfca0a() { uint res = uint(sb_ro.arg_0.length()); } diff --git a/test/tint/builtins/gen/var/arrayLength/eb510f.wgsl.expected.glsl b/test/tint/builtins/gen/var/arrayLength/eb510f.wgsl.expected.glsl index a11f1aa674..51f60def9b 100644 --- a/test/tint/builtins/gen/var/arrayLength/eb510f.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/arrayLength/eb510f.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0[]; } sb_rw; + void arrayLength_eb510f() { uint res = uint(sb_rw.arg_0.length()); } @@ -23,9 +24,10 @@ void main() { #version 310 es precision mediump float; -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0[]; } sb_rw; + void arrayLength_eb510f() { uint res = uint(sb_rw.arg_0.length()); } @@ -40,9 +42,10 @@ void main() { } #version 310 es -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0[]; } sb_rw; + void arrayLength_eb510f() { uint res = uint(sb_rw.arg_0.length()); } diff --git a/test/tint/builtins/gen/var/atomicAdd/8a199a.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicAdd/8a199a.wgsl.expected.glsl index b4e7e25b56..1d00210884 100644 --- a/test/tint/builtins/gen/var/atomicAdd/8a199a.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicAdd/8a199a.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint arg_1 = 1u; uint res = atomicAdd(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicAdd_8a199a() { uint arg_1 = 1u; uint res = atomicAdd(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicAdd/d32fe4.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicAdd/d32fe4.wgsl.expected.glsl index c589612d2b..35d22b2def 100644 --- a/test/tint/builtins/gen/var/atomicAdd/d32fe4.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicAdd/d32fe4.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int arg_1 = 1; int res = atomicAdd(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicAdd_d32fe4() { int arg_1 = 1; int res = atomicAdd(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicAnd/152966.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicAnd/152966.wgsl.expected.glsl index 3e8c40f3ce..79b77f1072 100644 --- a/test/tint/builtins/gen/var/atomicAnd/152966.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicAnd/152966.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicAnd_152966() { int arg_1 = 1; int res = atomicAnd(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicAnd_152966() { int arg_1 = 1; int res = atomicAnd(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicAnd/85a8d9.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicAnd/85a8d9.wgsl.expected.glsl index 6d6dd70164..66ed6093c5 100644 --- a/test/tint/builtins/gen/var/atomicAnd/85a8d9.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicAnd/85a8d9.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicAnd_85a8d9() { uint arg_1 = 1u; uint res = atomicAnd(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicAnd_85a8d9() { uint arg_1 = 1u; uint res = atomicAnd(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/1bd40a.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/1bd40a.wgsl.expected.glsl index cae561bc0a..ff8a3b2de1 100644 --- a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/1bd40a.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/1bd40a.wgsl.expected.glsl @@ -7,13 +7,10 @@ struct atomic_compare_exchange_resulti32 { }; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicCompareExchangeWeak_1bd40a() { int arg_1 = 1; int arg_2 = 1; @@ -39,13 +36,10 @@ struct atomic_compare_exchange_resulti32 { }; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicCompareExchangeWeak_1bd40a() { int arg_1 = 1; int arg_2 = 1; diff --git a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/63d8e6.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/63d8e6.wgsl.expected.glsl index a30b533d18..d976990e04 100644 --- a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/63d8e6.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/63d8e6.wgsl.expected.glsl @@ -7,13 +7,10 @@ struct atomic_compare_exchange_resultu32 { }; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicCompareExchangeWeak_63d8e6() { uint arg_1 = 1u; uint arg_2 = 1u; @@ -39,13 +36,10 @@ struct atomic_compare_exchange_resultu32 { }; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicCompareExchangeWeak_63d8e6() { uint arg_1 = 1u; uint arg_2 = 1u; diff --git a/test/tint/builtins/gen/var/atomicExchange/d59712.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicExchange/d59712.wgsl.expected.glsl index 36903e217d..96a02b87d5 100644 --- a/test/tint/builtins/gen/var/atomicExchange/d59712.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicExchange/d59712.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicExchange_d59712() { uint arg_1 = 1u; uint res = atomicExchange(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicExchange_d59712() { uint arg_1 = 1u; uint res = atomicExchange(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicExchange/f2e22f.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicExchange/f2e22f.wgsl.expected.glsl index c74e310d92..b4dcaadaf3 100644 --- a/test/tint/builtins/gen/var/atomicExchange/f2e22f.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicExchange/f2e22f.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicExchange_f2e22f() { int arg_1 = 1; int res = atomicExchange(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicExchange_f2e22f() { int arg_1 = 1; int res = atomicExchange(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicLoad/0806ad.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicLoad/0806ad.wgsl.expected.glsl index 38a8c929f0..64291f3d3b 100644 --- a/test/tint/builtins/gen/var/atomicLoad/0806ad.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicLoad/0806ad.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicLoad_0806ad() { int res = atomicOr(sb_rw.arg_0, 0); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicLoad_0806ad() { int res = atomicOr(sb_rw.arg_0, 0); } diff --git a/test/tint/builtins/gen/var/atomicLoad/fe6cc3.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicLoad/fe6cc3.wgsl.expected.glsl index b4bd0d8472..f17c51888b 100644 --- a/test/tint/builtins/gen/var/atomicLoad/fe6cc3.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicLoad/fe6cc3.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicLoad_fe6cc3() { uint res = atomicOr(sb_rw.arg_0, 0u); } @@ -22,13 +19,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicLoad_fe6cc3() { uint res = atomicOr(sb_rw.arg_0, 0u); } diff --git a/test/tint/builtins/gen/var/atomicMax/51b9be.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicMax/51b9be.wgsl.expected.glsl index 947c35ceaf..6a0431feca 100644 --- a/test/tint/builtins/gen/var/atomicMax/51b9be.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicMax/51b9be.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicMax_51b9be() { uint arg_1 = 1u; uint res = atomicMax(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicMax_51b9be() { uint arg_1 = 1u; uint res = atomicMax(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicMax/92aa72.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicMax/92aa72.wgsl.expected.glsl index 326e6edf3b..43570a4060 100644 --- a/test/tint/builtins/gen/var/atomicMax/92aa72.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicMax/92aa72.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicMax_92aa72() { int arg_1 = 1; int res = atomicMax(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicMax_92aa72() { int arg_1 = 1; int res = atomicMax(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicMin/8e38dc.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicMin/8e38dc.wgsl.expected.glsl index 215a335101..2ed6f591e7 100644 --- a/test/tint/builtins/gen/var/atomicMin/8e38dc.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicMin/8e38dc.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicMin_8e38dc() { int arg_1 = 1; int res = atomicMin(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicMin_8e38dc() { int arg_1 = 1; int res = atomicMin(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicMin/c67a74.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicMin/c67a74.wgsl.expected.glsl index 4d5b79bf23..8324f1589a 100644 --- a/test/tint/builtins/gen/var/atomicMin/c67a74.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicMin/c67a74.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicMin_c67a74() { uint arg_1 = 1u; uint res = atomicMin(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicMin_c67a74() { uint arg_1 = 1u; uint res = atomicMin(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicOr/5e95d4.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicOr/5e95d4.wgsl.expected.glsl index ddd41fedb0..65ecce1760 100644 --- a/test/tint/builtins/gen/var/atomicOr/5e95d4.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicOr/5e95d4.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicOr_5e95d4() { uint arg_1 = 1u; uint res = atomicOr(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicOr_5e95d4() { uint arg_1 = 1u; uint res = atomicOr(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicOr/8d96a0.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicOr/8d96a0.wgsl.expected.glsl index 237e6b0b54..dcb69859d6 100644 --- a/test/tint/builtins/gen/var/atomicOr/8d96a0.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicOr/8d96a0.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicOr_8d96a0() { int arg_1 = 1; int res = atomicOr(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicOr_8d96a0() { int arg_1 = 1; int res = atomicOr(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicStore/cdc29e.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicStore/cdc29e.wgsl.expected.glsl index 22fd7a19f1..d9e75bf294 100644 --- a/test/tint/builtins/gen/var/atomicStore/cdc29e.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicStore/cdc29e.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicStore_cdc29e() { uint arg_1 = 1u; atomicExchange(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicStore_cdc29e() { uint arg_1 = 1u; atomicExchange(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicStore/d1e9a6.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicStore/d1e9a6.wgsl.expected.glsl index f5e52e4b19..e4c98e069f 100644 --- a/test/tint/builtins/gen/var/atomicStore/d1e9a6.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicStore/d1e9a6.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicStore_d1e9a6() { int arg_1 = 1; atomicExchange(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicStore_d1e9a6() { int arg_1 = 1; atomicExchange(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicSub/051100.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicSub/051100.wgsl.expected.glsl index 25f8eba74f..6ea56f6aac 100644 --- a/test/tint/builtins/gen/var/atomicSub/051100.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicSub/051100.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicSub_051100() { int arg_1 = 1; int res = atomicAdd(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicSub_051100() { int arg_1 = 1; int res = atomicAdd(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicSub/15bfc9.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicSub/15bfc9.wgsl.expected.glsl index c21f8f7cd7..e5d348c1f9 100644 --- a/test/tint/builtins/gen/var/atomicSub/15bfc9.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicSub/15bfc9.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicSub_15bfc9() { uint arg_1 = 1u; uint res = atomicAdd(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicSub_15bfc9() { uint arg_1 = 1u; uint res = atomicAdd(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicXor/54510e.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicXor/54510e.wgsl.expected.glsl index 7ac44209ed..9ac7f7a2b5 100644 --- a/test/tint/builtins/gen/var/atomicXor/54510e.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicXor/54510e.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicXor_54510e() { uint arg_1 = 1u; uint res = atomicXor(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - uint arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { uint arg_0; } sb_rw; + void atomicXor_54510e() { uint arg_1 = 1u; uint res = atomicXor(sb_rw.arg_0, arg_1); diff --git a/test/tint/builtins/gen/var/atomicXor/c1b78c.wgsl.expected.glsl b/test/tint/builtins/gen/var/atomicXor/c1b78c.wgsl.expected.glsl index 3f8236cd0a..113781d877 100644 --- a/test/tint/builtins/gen/var/atomicXor/c1b78c.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/atomicXor/c1b78c.wgsl.expected.glsl @@ -1,13 +1,10 @@ #version 310 es precision mediump float; -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicXor_c1b78c() { int arg_1 = 1; int res = atomicXor(sb_rw.arg_0, arg_1); @@ -23,13 +20,10 @@ void main() { } #version 310 es -struct SB_RW { - int arg_0; -}; - -layout(binding = 0, std430) buffer SB_RW_1 { +layout(binding = 0, std430) buffer SB_RW_ssbo { int arg_0; } sb_rw; + void atomicXor_c1b78c() { int arg_1 = 1; int res = atomicXor(sb_rw.arg_0, arg_1); 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 47564aef5d..f610169663 100644 --- a/test/tint/builtins/gen/var/textureDimensions/ba1481.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/textureDimensions/ba1481.wgsl.expected.glsl @@ -11,16 +11,7 @@ struct GammaTransferParams { uint padding; }; -struct ExternalTextureParams { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; -}; - -layout(binding = 2) uniform ExternalTextureParams_1 { +layout(binding = 2) uniform ExternalTextureParams_ubo { uint numPlanes; uint doYuvToRgbConversionOnly; mat3x4 yuvToRgbConversionMatrix; @@ -61,16 +52,7 @@ struct GammaTransferParams { uint padding; }; -struct ExternalTextureParams { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; -}; - -layout(binding = 2) uniform ExternalTextureParams_1 { +layout(binding = 2) uniform ExternalTextureParams_ubo { uint numPlanes; uint doYuvToRgbConversionOnly; mat3x4 yuvToRgbConversionMatrix; @@ -105,16 +87,7 @@ struct GammaTransferParams { uint padding; }; -struct ExternalTextureParams { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; -}; - -layout(binding = 2) uniform ExternalTextureParams_1 { +layout(binding = 2) 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 2a7cc09141..0debae11b3 100644 --- a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl @@ -1,5 +1,3 @@ -SKIP: FAILED - #version 310 es struct GammaTransferParams { @@ -22,13 +20,8 @@ struct ExternalTextureParams { mat3 gamutConversionMatrix; }; -layout(binding = 2) uniform ExternalTextureParams_1 { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; +layout(binding = 2) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; } ext_tex_params; vec3 gammaCorrection(vec3 v, GammaTransferParams params) { @@ -57,7 +50,7 @@ uniform highp sampler2D arg_0_1; uniform highp sampler2D ext_tex_plane_1_1; void textureLoad_8acf41() { ivec2 arg_1 = ivec2(0); - vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, ext_tex_params); + vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, ext_tex_params.inner); } vec4 vertex_main() { @@ -73,14 +66,6 @@ void main() { gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); return; } -Error parsing GLSL shader: -ERROR: 0:58: 'textureLoadExternal' : no matching overloaded function found -ERROR: 0:58: '=' : cannot convert from ' const float' to ' temp highp 4-component vector of float' -ERROR: 0:58: '' : compilation terminated -ERROR: 3 compilation errors. No code generated. - - - #version 310 es precision mediump float; @@ -104,13 +89,8 @@ struct ExternalTextureParams { mat3 gamutConversionMatrix; }; -layout(binding = 2) uniform ExternalTextureParams_1 { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; +layout(binding = 2) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; } ext_tex_params; vec3 gammaCorrection(vec3 v, GammaTransferParams params) { @@ -139,7 +119,7 @@ uniform highp sampler2D arg_0_1; uniform highp sampler2D ext_tex_plane_1_1; void textureLoad_8acf41() { ivec2 arg_1 = ivec2(0); - vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, ext_tex_params); + vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, ext_tex_params.inner); } void fragment_main() { @@ -150,14 +130,6 @@ void main() { fragment_main(); return; } -Error parsing GLSL shader: -ERROR: 0:59: 'textureLoadExternal' : no matching overloaded function found -ERROR: 0:59: '=' : cannot convert from ' const float' to ' temp mediump 4-component vector of float' -ERROR: 0:59: '' : compilation terminated -ERROR: 3 compilation errors. No code generated. - - - #version 310 es struct GammaTransferParams { @@ -180,13 +152,8 @@ struct ExternalTextureParams { mat3 gamutConversionMatrix; }; -layout(binding = 2) uniform ExternalTextureParams_1 { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; +layout(binding = 2) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; } ext_tex_params; vec3 gammaCorrection(vec3 v, GammaTransferParams params) { @@ -215,7 +182,7 @@ uniform highp sampler2D arg_0_1; uniform highp sampler2D ext_tex_plane_1_1; void textureLoad_8acf41() { ivec2 arg_1 = ivec2(0); - vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, ext_tex_params); + vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, ext_tex_params.inner); } void compute_main() { @@ -227,11 +194,3 @@ void main() { compute_main(); return; } -Error parsing GLSL shader: -ERROR: 0:58: 'textureLoadExternal' : no matching overloaded function found -ERROR: 0:58: '=' : cannot convert from ' const float' to ' temp highp 4-component vector of float' -ERROR: 0:58: '' : compilation terminated -ERROR: 3 compilation errors. No code generated. - - - diff --git a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.spvasm index c70c6b140a..350a2017c5 100644 --- a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.spvasm @@ -1,10 +1,10 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 137 +; Bound: 141 ; Schema: 0 OpCapability Shader - %27 = OpExtInstImport "GLSL.std.450" + %28 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -14,6 +14,8 @@ OpName %value "value" OpName %vertex_point_size "vertex_point_size" OpName %ext_tex_plane_1 "ext_tex_plane_1" + OpName %ext_tex_params_block "ext_tex_params_block" + OpMemberName %ext_tex_params_block 0 "inner" OpName %ExternalTextureParams "ExternalTextureParams" OpMemberName %ExternalTextureParams 0 "numPlanes" OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly" @@ -52,7 +54,8 @@ OpDecorate %vertex_point_size BuiltIn PointSize OpDecorate %ext_tex_plane_1 DescriptorSet 1 OpDecorate %ext_tex_plane_1 Binding 1 - OpDecorate %ExternalTextureParams Block + OpDecorate %ext_tex_params_block Block + OpMemberDecorate %ext_tex_params_block 0 Offset 0 OpMemberDecorate %ExternalTextureParams 0 Offset 0 OpMemberDecorate %ExternalTextureParams 1 Offset 4 OpMemberDecorate %ExternalTextureParams 2 Offset 16 @@ -93,151 +96,155 @@ %v3float = OpTypeVector %float 3 %mat3v3float = OpTypeMatrix %v3float 3 %ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float -%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams -%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform +%ext_tex_params_block = OpTypeStruct %ExternalTextureParams +%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block +%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant - %21 = OpTypeFunction %v3float %v3float %GammaTransferParams + %22 = OpTypeFunction %v3float %v3float %GammaTransferParams %bool = OpTypeBool %v3bool = OpTypeVector %bool 3 %_ptr_Function_v3float = OpTypePointer Function %v3float - %41 = OpConstantNull %v3float + %42 = OpConstantNull %v3float %int = OpTypeInt 32 1 %v2int = OpTypeVector %int 2 - %61 = OpTypeFunction %v4float %11 %11 %v2int %ExternalTextureParams + %62 = OpTypeFunction %v4float %11 %11 %v2int %ExternalTextureParams %uint_1 = OpConstant %uint 1 - %78 = OpConstantNull %int + %79 = OpConstantNull %int %v2float = OpTypeVector %float 2 %float_1 = OpConstant %float 1 - %92 = OpConstantNull %uint + %93 = OpConstantNull %uint %void = OpTypeVoid - %110 = OpTypeFunction %void - %114 = OpConstantNull %v2int + %111 = OpTypeFunction %void + %115 = OpConstantNull %v2int %_ptr_Function_v2int = OpTypePointer Function %v2int + %uint_0 = OpConstant %uint 0 +%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams %_ptr_Function_v4float = OpTypePointer Function %v4float - %124 = OpTypeFunction %v4float -%gammaCorrection = OpFunction %v3float None %21 + %128 = OpTypeFunction %v4float +%gammaCorrection = OpFunction %v3float None %22 %v = OpFunctionParameter %v3float %params = OpFunctionParameter %GammaTransferParams - %25 = OpLabel - %39 = OpVariable %_ptr_Function_v3float Function %41 - %51 = OpVariable %_ptr_Function_v3float Function %41 - %57 = OpVariable %_ptr_Function_v3float Function %41 - %26 = OpExtInst %v3float %27 FAbs %v - %28 = OpCompositeExtract %float %params 4 - %29 = OpCompositeConstruct %v3float %28 %28 %28 - %30 = OpFOrdLessThan %v3bool %26 %29 - %33 = OpExtInst %v3float %27 FSign %v - %34 = OpCompositeExtract %float %params 3 - %35 = OpExtInst %v3float %27 FAbs %v - %36 = OpVectorTimesScalar %v3float %35 %34 - %37 = OpCompositeExtract %float %params 6 - %42 = OpCompositeConstruct %v3float %37 %37 %37 - %38 = OpFAdd %v3float %36 %42 - %43 = OpFMul %v3float %33 %38 - %44 = OpExtInst %v3float %27 FSign %v - %46 = OpCompositeExtract %float %params 1 - %47 = OpExtInst %v3float %27 FAbs %v - %48 = OpVectorTimesScalar %v3float %47 %46 - %49 = OpCompositeExtract %float %params 2 - %52 = OpCompositeConstruct %v3float %49 %49 %49 - %50 = OpFAdd %v3float %48 %52 - %53 = OpCompositeExtract %float %params 0 - %54 = OpCompositeConstruct %v3float %53 %53 %53 - %45 = OpExtInst %v3float %27 Pow %50 %54 - %55 = OpCompositeExtract %float %params 5 - %58 = OpCompositeConstruct %v3float %55 %55 %55 - %56 = OpFAdd %v3float %45 %58 - %59 = OpFMul %v3float %44 %56 - %60 = OpSelect %v3float %30 %43 %59 - OpReturnValue %60 + %26 = OpLabel + %40 = OpVariable %_ptr_Function_v3float Function %42 + %52 = OpVariable %_ptr_Function_v3float Function %42 + %58 = OpVariable %_ptr_Function_v3float Function %42 + %27 = OpExtInst %v3float %28 FAbs %v + %29 = OpCompositeExtract %float %params 4 + %30 = OpCompositeConstruct %v3float %29 %29 %29 + %31 = OpFOrdLessThan %v3bool %27 %30 + %34 = OpExtInst %v3float %28 FSign %v + %35 = OpCompositeExtract %float %params 3 + %36 = OpExtInst %v3float %28 FAbs %v + %37 = OpVectorTimesScalar %v3float %36 %35 + %38 = OpCompositeExtract %float %params 6 + %43 = OpCompositeConstruct %v3float %38 %38 %38 + %39 = OpFAdd %v3float %37 %43 + %44 = OpFMul %v3float %34 %39 + %45 = OpExtInst %v3float %28 FSign %v + %47 = OpCompositeExtract %float %params 1 + %48 = OpExtInst %v3float %28 FAbs %v + %49 = OpVectorTimesScalar %v3float %48 %47 + %50 = OpCompositeExtract %float %params 2 + %53 = OpCompositeConstruct %v3float %50 %50 %50 + %51 = OpFAdd %v3float %49 %53 + %54 = OpCompositeExtract %float %params 0 + %55 = OpCompositeConstruct %v3float %54 %54 %54 + %46 = OpExtInst %v3float %28 Pow %51 %55 + %56 = OpCompositeExtract %float %params 5 + %59 = OpCompositeConstruct %v3float %56 %56 %56 + %57 = OpFAdd %v3float %46 %59 + %60 = OpFMul %v3float %45 %57 + %61 = OpSelect %v3float %31 %44 %60 + OpReturnValue %61 OpFunctionEnd -%textureLoadExternal = OpFunction %v4float None %61 +%textureLoadExternal = OpFunction %v4float None %62 %plane0 = OpFunctionParameter %11 %plane1 = OpFunctionParameter %11 %coord = OpFunctionParameter %v2int %params_0 = OpFunctionParameter %ExternalTextureParams - %69 = OpLabel - %color = OpVariable %_ptr_Function_v3float Function %41 - %71 = OpCompositeExtract %uint %params_0 0 - %73 = OpIEqual %bool %71 %uint_1 - OpSelectionMerge %74 None - OpBranchConditional %73 %75 %76 - %75 = OpLabel - %77 = OpImageFetch %v4float %plane0 %coord Lod %78 - %79 = OpVectorShuffle %v3float %77 %77 0 1 2 - OpStore %color %79 - OpBranch %74 + %70 = OpLabel + %color = OpVariable %_ptr_Function_v3float Function %42 + %72 = OpCompositeExtract %uint %params_0 0 + %74 = OpIEqual %bool %72 %uint_1 + OpSelectionMerge %75 None + OpBranchConditional %74 %76 %77 %76 = OpLabel - %80 = OpImageFetch %v4float %plane0 %coord Lod %78 - %81 = OpCompositeExtract %float %80 0 - %82 = OpImageFetch %v4float %plane1 %coord Lod %78 - %84 = OpVectorShuffle %v2float %82 %82 0 1 - %85 = OpCompositeExtract %float %84 0 - %86 = OpCompositeExtract %float %84 1 - %88 = OpCompositeConstruct %v4float %81 %85 %86 %float_1 - %89 = OpCompositeExtract %mat3v4float %params_0 2 - %90 = OpVectorTimesMatrix %v3float %88 %89 - OpStore %color %90 - OpBranch %74 - %74 = OpLabel - %91 = OpCompositeExtract %uint %params_0 1 - %93 = OpIEqual %bool %91 %92 - OpSelectionMerge %94 None - OpBranchConditional %93 %95 %94 - %95 = OpLabel - %97 = OpLoad %v3float %color - %98 = OpCompositeExtract %GammaTransferParams %params_0 3 - %96 = OpFunctionCall %v3float %gammaCorrection %97 %98 - OpStore %color %96 - %99 = OpCompositeExtract %mat3v3float %params_0 5 - %100 = OpLoad %v3float %color - %101 = OpMatrixTimesVector %v3float %99 %100 - OpStore %color %101 - %103 = OpLoad %v3float %color - %104 = OpCompositeExtract %GammaTransferParams %params_0 4 - %102 = OpFunctionCall %v3float %gammaCorrection %103 %104 + %78 = OpImageFetch %v4float %plane0 %coord Lod %79 + %80 = OpVectorShuffle %v3float %78 %78 0 1 2 + OpStore %color %80 + OpBranch %75 + %77 = OpLabel + %81 = OpImageFetch %v4float %plane0 %coord Lod %79 + %82 = OpCompositeExtract %float %81 0 + %83 = OpImageFetch %v4float %plane1 %coord Lod %79 + %85 = OpVectorShuffle %v2float %83 %83 0 1 + %86 = OpCompositeExtract %float %85 0 + %87 = OpCompositeExtract %float %85 1 + %89 = OpCompositeConstruct %v4float %82 %86 %87 %float_1 + %90 = OpCompositeExtract %mat3v4float %params_0 2 + %91 = OpVectorTimesMatrix %v3float %89 %90 + OpStore %color %91 + OpBranch %75 + %75 = OpLabel + %92 = OpCompositeExtract %uint %params_0 1 + %94 = OpIEqual %bool %92 %93 + OpSelectionMerge %95 None + OpBranchConditional %94 %96 %95 + %96 = OpLabel + %98 = OpLoad %v3float %color + %99 = OpCompositeExtract %GammaTransferParams %params_0 3 + %97 = OpFunctionCall %v3float %gammaCorrection %98 %99 + OpStore %color %97 + %100 = OpCompositeExtract %mat3v3float %params_0 5 + %101 = OpLoad %v3float %color + %102 = OpMatrixTimesVector %v3float %100 %101 OpStore %color %102 - OpBranch %94 - %94 = OpLabel - %105 = OpLoad %v3float %color - %106 = OpCompositeExtract %float %105 0 - %107 = OpCompositeExtract %float %105 1 - %108 = OpCompositeExtract %float %105 2 - %109 = OpCompositeConstruct %v4float %106 %107 %108 %float_1 - OpReturnValue %109 + %104 = OpLoad %v3float %color + %105 = OpCompositeExtract %GammaTransferParams %params_0 4 + %103 = OpFunctionCall %v3float %gammaCorrection %104 %105 + OpStore %color %103 + OpBranch %95 + %95 = OpLabel + %106 = OpLoad %v3float %color + %107 = OpCompositeExtract %float %106 0 + %108 = OpCompositeExtract %float %106 1 + %109 = OpCompositeExtract %float %106 2 + %110 = OpCompositeConstruct %v4float %107 %108 %109 %float_1 + OpReturnValue %110 OpFunctionEnd -%textureLoad_8acf41 = OpFunction %void None %110 - %113 = OpLabel - %arg_1 = OpVariable %_ptr_Function_v2int Function %114 +%textureLoad_8acf41 = OpFunction %void None %111 + %114 = OpLabel + %arg_1 = OpVariable %_ptr_Function_v2int Function %115 %res = OpVariable %_ptr_Function_v4float Function %5 - OpStore %arg_1 %114 - %118 = OpLoad %11 %arg_0 - %119 = OpLoad %11 %ext_tex_plane_1 - %120 = OpLoad %v2int %arg_1 - %121 = OpLoad %ExternalTextureParams %ext_tex_params - %117 = OpFunctionCall %v4float %textureLoadExternal %118 %119 %120 %121 - OpStore %res %117 + OpStore %arg_1 %115 + %119 = OpLoad %11 %arg_0 + %120 = OpLoad %11 %ext_tex_plane_1 + %121 = OpLoad %v2int %arg_1 + %124 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0 + %125 = OpLoad %ExternalTextureParams %124 + %118 = OpFunctionCall %v4float %textureLoadExternal %119 %120 %121 %125 + OpStore %res %118 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %124 - %126 = OpLabel - %127 = OpFunctionCall %void %textureLoad_8acf41 +%vertex_main_inner = OpFunction %v4float None %128 + %130 = OpLabel + %131 = OpFunctionCall %void %textureLoad_8acf41 OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %110 - %129 = OpLabel - %130 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %130 +%vertex_main = OpFunction %void None %111 + %133 = OpLabel + %134 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %134 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %110 - %132 = OpLabel - %133 = OpFunctionCall %void %textureLoad_8acf41 +%fragment_main = OpFunction %void None %111 + %136 = OpLabel + %137 = OpFunctionCall %void %textureLoad_8acf41 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %110 - %135 = OpLabel - %136 = OpFunctionCall %void %textureLoad_8acf41 +%compute_main = OpFunction %void None %111 + %139 = OpLabel + %140 = OpFunctionCall %void %textureLoad_8acf41 OpReturn OpFunctionEnd 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 11782ba912..1a5bb9aaec 100644 --- a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.glsl +++ b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.glsl @@ -1,5 +1,3 @@ -SKIP: FAILED - #version 310 es struct GammaTransferParams { @@ -22,13 +20,8 @@ struct ExternalTextureParams { mat3 gamutConversionMatrix; }; -layout(binding = 3) uniform ExternalTextureParams_1 { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; +layout(binding = 3) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; } ext_tex_params; vec3 gammaCorrection(vec3 v, GammaTransferParams params) { @@ -58,7 +51,7 @@ uniform highp sampler2D arg_0_arg_1; uniform highp sampler2D ext_tex_plane_1_arg_1; void textureSampleLevel_979816() { vec2 arg_2 = vec2(0.0f); - vec4 res = textureSampleExternal(arg_0_arg_1, ext_tex_plane_1_arg_1, arg_2, ext_tex_params); + vec4 res = textureSampleExternal(arg_0_arg_1, ext_tex_plane_1_arg_1, arg_2, ext_tex_params.inner); } vec4 vertex_main() { @@ -74,14 +67,6 @@ void main() { gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); return; } -Error parsing GLSL shader: -ERROR: 0:59: 'textureSampleExternal' : no matching overloaded function found -ERROR: 0:59: '=' : cannot convert from ' const float' to ' temp highp 4-component vector of float' -ERROR: 0:59: '' : compilation terminated -ERROR: 3 compilation errors. No code generated. - - - #version 310 es precision mediump float; @@ -105,13 +90,8 @@ struct ExternalTextureParams { mat3 gamutConversionMatrix; }; -layout(binding = 3) uniform ExternalTextureParams_1 { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; +layout(binding = 3) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; } ext_tex_params; vec3 gammaCorrection(vec3 v, GammaTransferParams params) { @@ -141,7 +121,7 @@ uniform highp sampler2D arg_0_arg_1; uniform highp sampler2D ext_tex_plane_1_arg_1; void textureSampleLevel_979816() { vec2 arg_2 = vec2(0.0f); - vec4 res = textureSampleExternal(arg_0_arg_1, ext_tex_plane_1_arg_1, arg_2, ext_tex_params); + vec4 res = textureSampleExternal(arg_0_arg_1, ext_tex_plane_1_arg_1, arg_2, ext_tex_params.inner); } void fragment_main() { @@ -152,14 +132,6 @@ void main() { fragment_main(); return; } -Error parsing GLSL shader: -ERROR: 0:60: 'textureSampleExternal' : no matching overloaded function found -ERROR: 0:60: '=' : cannot convert from ' const float' to ' temp mediump 4-component vector of float' -ERROR: 0:60: '' : compilation terminated -ERROR: 3 compilation errors. No code generated. - - - #version 310 es struct GammaTransferParams { @@ -182,13 +154,8 @@ struct ExternalTextureParams { mat3 gamutConversionMatrix; }; -layout(binding = 3) uniform ExternalTextureParams_1 { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; +layout(binding = 3) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; } ext_tex_params; vec3 gammaCorrection(vec3 v, GammaTransferParams params) { @@ -218,7 +185,7 @@ uniform highp sampler2D arg_0_arg_1; uniform highp sampler2D ext_tex_plane_1_arg_1; void textureSampleLevel_979816() { vec2 arg_2 = vec2(0.0f); - vec4 res = textureSampleExternal(arg_0_arg_1, ext_tex_plane_1_arg_1, arg_2, ext_tex_params); + vec4 res = textureSampleExternal(arg_0_arg_1, ext_tex_plane_1_arg_1, arg_2, ext_tex_params.inner); } void compute_main() { @@ -230,11 +197,3 @@ void main() { compute_main(); return; } -Error parsing GLSL shader: -ERROR: 0:59: 'textureSampleExternal' : no matching overloaded function found -ERROR: 0:59: '=' : cannot convert from ' const float' to ' temp highp 4-component vector of float' -ERROR: 0:59: '' : compilation terminated -ERROR: 3 compilation errors. No code generated. - - - diff --git a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.spvasm index ad6d2a9ab7..accaf68e38 100644 --- a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.spvasm @@ -1,10 +1,10 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 143 +; Bound: 147 ; Schema: 0 OpCapability Shader - %30 = OpExtInstImport "GLSL.std.450" + %31 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -14,6 +14,8 @@ OpName %value "value" OpName %vertex_point_size "vertex_point_size" OpName %ext_tex_plane_1 "ext_tex_plane_1" + OpName %ext_tex_params_block "ext_tex_params_block" + OpMemberName %ext_tex_params_block 0 "inner" OpName %ExternalTextureParams "ExternalTextureParams" OpMemberName %ExternalTextureParams 0 "numPlanes" OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly" @@ -54,7 +56,8 @@ OpDecorate %vertex_point_size BuiltIn PointSize OpDecorate %ext_tex_plane_1 DescriptorSet 1 OpDecorate %ext_tex_plane_1 Binding 2 - OpDecorate %ExternalTextureParams Block + OpDecorate %ext_tex_params_block Block + OpMemberDecorate %ext_tex_params_block 0 Offset 0 OpMemberDecorate %ExternalTextureParams 0 Offset 0 OpMemberDecorate %ExternalTextureParams 1 Offset 4 OpMemberDecorate %ExternalTextureParams 2 Offset 16 @@ -97,157 +100,161 @@ %v3float = OpTypeVector %float 3 %mat3v3float = OpTypeMatrix %v3float 3 %ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float -%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams -%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform +%ext_tex_params_block = OpTypeStruct %ExternalTextureParams +%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block +%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant - %23 = OpTypeSampler -%_ptr_UniformConstant_23 = OpTypePointer UniformConstant %23 - %arg_1 = OpVariable %_ptr_UniformConstant_23 UniformConstant - %24 = OpTypeFunction %v3float %v3float %GammaTransferParams + %24 = OpTypeSampler +%_ptr_UniformConstant_24 = OpTypePointer UniformConstant %24 + %arg_1 = OpVariable %_ptr_UniformConstant_24 UniformConstant + %25 = OpTypeFunction %v3float %v3float %GammaTransferParams %bool = OpTypeBool %v3bool = OpTypeVector %bool 3 %_ptr_Function_v3float = OpTypePointer Function %v3float - %44 = OpConstantNull %v3float + %45 = OpConstantNull %v3float %v2float = OpTypeVector %float 2 - %64 = OpTypeFunction %v4float %11 %11 %23 %v2float %ExternalTextureParams + %65 = OpTypeFunction %v4float %11 %11 %24 %v2float %ExternalTextureParams %uint_1 = OpConstant %uint 1 - %81 = OpTypeSampledImage %11 + %82 = OpTypeSampledImage %11 %float_1 = OpConstant %float 1 - %97 = OpConstantNull %uint + %98 = OpConstantNull %uint %void = OpTypeVoid - %115 = OpTypeFunction %void - %119 = OpConstantNull %v2float + %116 = OpTypeFunction %void + %120 = OpConstantNull %v2float %_ptr_Function_v2float = OpTypePointer Function %v2float + %uint_0 = OpConstant %uint 0 +%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams %_ptr_Function_v4float = OpTypePointer Function %v4float - %130 = OpTypeFunction %v4float -%gammaCorrection = OpFunction %v3float None %24 + %134 = OpTypeFunction %v4float +%gammaCorrection = OpFunction %v3float None %25 %v = OpFunctionParameter %v3float %params = OpFunctionParameter %GammaTransferParams - %28 = OpLabel - %42 = OpVariable %_ptr_Function_v3float Function %44 - %54 = OpVariable %_ptr_Function_v3float Function %44 - %60 = OpVariable %_ptr_Function_v3float Function %44 - %29 = OpExtInst %v3float %30 FAbs %v - %31 = OpCompositeExtract %float %params 4 - %32 = OpCompositeConstruct %v3float %31 %31 %31 - %33 = OpFOrdLessThan %v3bool %29 %32 - %36 = OpExtInst %v3float %30 FSign %v - %37 = OpCompositeExtract %float %params 3 - %38 = OpExtInst %v3float %30 FAbs %v - %39 = OpVectorTimesScalar %v3float %38 %37 - %40 = OpCompositeExtract %float %params 6 - %45 = OpCompositeConstruct %v3float %40 %40 %40 - %41 = OpFAdd %v3float %39 %45 - %46 = OpFMul %v3float %36 %41 - %47 = OpExtInst %v3float %30 FSign %v - %49 = OpCompositeExtract %float %params 1 - %50 = OpExtInst %v3float %30 FAbs %v - %51 = OpVectorTimesScalar %v3float %50 %49 - %52 = OpCompositeExtract %float %params 2 - %55 = OpCompositeConstruct %v3float %52 %52 %52 - %53 = OpFAdd %v3float %51 %55 - %56 = OpCompositeExtract %float %params 0 - %57 = OpCompositeConstruct %v3float %56 %56 %56 - %48 = OpExtInst %v3float %30 Pow %53 %57 - %58 = OpCompositeExtract %float %params 5 - %61 = OpCompositeConstruct %v3float %58 %58 %58 - %59 = OpFAdd %v3float %48 %61 - %62 = OpFMul %v3float %47 %59 - %63 = OpSelect %v3float %33 %46 %62 - OpReturnValue %63 + %29 = OpLabel + %43 = OpVariable %_ptr_Function_v3float Function %45 + %55 = OpVariable %_ptr_Function_v3float Function %45 + %61 = OpVariable %_ptr_Function_v3float Function %45 + %30 = OpExtInst %v3float %31 FAbs %v + %32 = OpCompositeExtract %float %params 4 + %33 = OpCompositeConstruct %v3float %32 %32 %32 + %34 = OpFOrdLessThan %v3bool %30 %33 + %37 = OpExtInst %v3float %31 FSign %v + %38 = OpCompositeExtract %float %params 3 + %39 = OpExtInst %v3float %31 FAbs %v + %40 = OpVectorTimesScalar %v3float %39 %38 + %41 = OpCompositeExtract %float %params 6 + %46 = OpCompositeConstruct %v3float %41 %41 %41 + %42 = OpFAdd %v3float %40 %46 + %47 = OpFMul %v3float %37 %42 + %48 = OpExtInst %v3float %31 FSign %v + %50 = OpCompositeExtract %float %params 1 + %51 = OpExtInst %v3float %31 FAbs %v + %52 = OpVectorTimesScalar %v3float %51 %50 + %53 = OpCompositeExtract %float %params 2 + %56 = OpCompositeConstruct %v3float %53 %53 %53 + %54 = OpFAdd %v3float %52 %56 + %57 = OpCompositeExtract %float %params 0 + %58 = OpCompositeConstruct %v3float %57 %57 %57 + %49 = OpExtInst %v3float %31 Pow %54 %58 + %59 = OpCompositeExtract %float %params 5 + %62 = OpCompositeConstruct %v3float %59 %59 %59 + %60 = OpFAdd %v3float %49 %62 + %63 = OpFMul %v3float %48 %60 + %64 = OpSelect %v3float %34 %47 %63 + OpReturnValue %64 OpFunctionEnd -%textureSampleExternal = OpFunction %v4float None %64 +%textureSampleExternal = OpFunction %v4float None %65 %plane0 = OpFunctionParameter %11 %plane1 = OpFunctionParameter %11 - %smp = OpFunctionParameter %23 + %smp = OpFunctionParameter %24 %coord = OpFunctionParameter %v2float %params_0 = OpFunctionParameter %ExternalTextureParams - %72 = OpLabel - %color = OpVariable %_ptr_Function_v3float Function %44 - %74 = OpCompositeExtract %uint %params_0 0 - %76 = OpIEqual %bool %74 %uint_1 - OpSelectionMerge %77 None - OpBranchConditional %76 %78 %79 - %78 = OpLabel - %82 = OpSampledImage %81 %plane0 %smp - %80 = OpImageSampleExplicitLod %v4float %82 %coord Lod %8 - %83 = OpVectorShuffle %v3float %80 %80 0 1 2 - OpStore %color %83 - OpBranch %77 + %73 = OpLabel + %color = OpVariable %_ptr_Function_v3float Function %45 + %75 = OpCompositeExtract %uint %params_0 0 + %77 = OpIEqual %bool %75 %uint_1 + OpSelectionMerge %78 None + OpBranchConditional %77 %79 %80 %79 = OpLabel - %85 = OpSampledImage %81 %plane0 %smp - %84 = OpImageSampleExplicitLod %v4float %85 %coord Lod %8 - %86 = OpCompositeExtract %float %84 0 - %88 = OpSampledImage %81 %plane1 %smp - %87 = OpImageSampleExplicitLod %v4float %88 %coord Lod %8 - %89 = OpVectorShuffle %v2float %87 %87 0 1 - %90 = OpCompositeExtract %float %89 0 - %91 = OpCompositeExtract %float %89 1 - %93 = OpCompositeConstruct %v4float %86 %90 %91 %float_1 - %94 = OpCompositeExtract %mat3v4float %params_0 2 - %95 = OpVectorTimesMatrix %v3float %93 %94 - OpStore %color %95 - OpBranch %77 - %77 = OpLabel - %96 = OpCompositeExtract %uint %params_0 1 - %98 = OpIEqual %bool %96 %97 - OpSelectionMerge %99 None - OpBranchConditional %98 %100 %99 - %100 = OpLabel - %102 = OpLoad %v3float %color - %103 = OpCompositeExtract %GammaTransferParams %params_0 3 - %101 = OpFunctionCall %v3float %gammaCorrection %102 %103 - OpStore %color %101 - %104 = OpCompositeExtract %mat3v3float %params_0 5 - %105 = OpLoad %v3float %color - %106 = OpMatrixTimesVector %v3float %104 %105 - OpStore %color %106 - %108 = OpLoad %v3float %color - %109 = OpCompositeExtract %GammaTransferParams %params_0 4 - %107 = OpFunctionCall %v3float %gammaCorrection %108 %109 + %83 = OpSampledImage %82 %plane0 %smp + %81 = OpImageSampleExplicitLod %v4float %83 %coord Lod %8 + %84 = OpVectorShuffle %v3float %81 %81 0 1 2 + OpStore %color %84 + OpBranch %78 + %80 = OpLabel + %86 = OpSampledImage %82 %plane0 %smp + %85 = OpImageSampleExplicitLod %v4float %86 %coord Lod %8 + %87 = OpCompositeExtract %float %85 0 + %89 = OpSampledImage %82 %plane1 %smp + %88 = OpImageSampleExplicitLod %v4float %89 %coord Lod %8 + %90 = OpVectorShuffle %v2float %88 %88 0 1 + %91 = OpCompositeExtract %float %90 0 + %92 = OpCompositeExtract %float %90 1 + %94 = OpCompositeConstruct %v4float %87 %91 %92 %float_1 + %95 = OpCompositeExtract %mat3v4float %params_0 2 + %96 = OpVectorTimesMatrix %v3float %94 %95 + OpStore %color %96 + OpBranch %78 + %78 = OpLabel + %97 = OpCompositeExtract %uint %params_0 1 + %99 = OpIEqual %bool %97 %98 + OpSelectionMerge %100 None + OpBranchConditional %99 %101 %100 + %101 = OpLabel + %103 = OpLoad %v3float %color + %104 = OpCompositeExtract %GammaTransferParams %params_0 3 + %102 = OpFunctionCall %v3float %gammaCorrection %103 %104 + OpStore %color %102 + %105 = OpCompositeExtract %mat3v3float %params_0 5 + %106 = OpLoad %v3float %color + %107 = OpMatrixTimesVector %v3float %105 %106 OpStore %color %107 - OpBranch %99 - %99 = OpLabel - %110 = OpLoad %v3float %color - %111 = OpCompositeExtract %float %110 0 - %112 = OpCompositeExtract %float %110 1 - %113 = OpCompositeExtract %float %110 2 - %114 = OpCompositeConstruct %v4float %111 %112 %113 %float_1 - OpReturnValue %114 + %109 = OpLoad %v3float %color + %110 = OpCompositeExtract %GammaTransferParams %params_0 4 + %108 = OpFunctionCall %v3float %gammaCorrection %109 %110 + OpStore %color %108 + OpBranch %100 + %100 = OpLabel + %111 = OpLoad %v3float %color + %112 = OpCompositeExtract %float %111 0 + %113 = OpCompositeExtract %float %111 1 + %114 = OpCompositeExtract %float %111 2 + %115 = OpCompositeConstruct %v4float %112 %113 %114 %float_1 + OpReturnValue %115 OpFunctionEnd -%textureSampleLevel_979816 = OpFunction %void None %115 - %118 = OpLabel - %arg_2 = OpVariable %_ptr_Function_v2float Function %119 +%textureSampleLevel_979816 = OpFunction %void None %116 + %119 = OpLabel + %arg_2 = OpVariable %_ptr_Function_v2float Function %120 %res = OpVariable %_ptr_Function_v4float Function %5 - OpStore %arg_2 %119 - %123 = OpLoad %11 %arg_0 - %124 = OpLoad %11 %ext_tex_plane_1 - %125 = OpLoad %23 %arg_1 - %126 = OpLoad %v2float %arg_2 - %127 = OpLoad %ExternalTextureParams %ext_tex_params - %122 = OpFunctionCall %v4float %textureSampleExternal %123 %124 %125 %126 %127 - OpStore %res %122 + OpStore %arg_2 %120 + %124 = OpLoad %11 %arg_0 + %125 = OpLoad %11 %ext_tex_plane_1 + %126 = OpLoad %24 %arg_1 + %127 = OpLoad %v2float %arg_2 + %130 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0 + %131 = OpLoad %ExternalTextureParams %130 + %123 = OpFunctionCall %v4float %textureSampleExternal %124 %125 %126 %127 %131 + OpStore %res %123 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %130 - %132 = OpLabel - %133 = OpFunctionCall %void %textureSampleLevel_979816 +%vertex_main_inner = OpFunction %v4float None %134 + %136 = OpLabel + %137 = OpFunctionCall %void %textureSampleLevel_979816 OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %115 - %135 = OpLabel - %136 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %136 +%vertex_main = OpFunction %void None %116 + %139 = OpLabel + %140 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %140 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %115 - %138 = OpLabel - %139 = OpFunctionCall %void %textureSampleLevel_979816 +%fragment_main = OpFunction %void None %116 + %142 = OpLabel + %143 = OpFunctionCall %void %textureSampleLevel_979816 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %115 - %141 = OpLabel - %142 = OpFunctionCall %void %textureSampleLevel_979816 +%compute_main = OpFunction %void None %116 + %145 = OpLabel + %146 = OpFunctionCall %void %textureSampleLevel_979816 OpReturn OpFunctionEnd 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 0d233de701..47f9c0a175 100644 --- a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.glsl +++ b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.glsl @@ -1,5 +1,3 @@ -SKIP: FAILED - #version 310 es struct GammaTransferParams { @@ -22,13 +20,8 @@ struct ExternalTextureParams { mat3 gamutConversionMatrix; }; -layout(binding = 2) uniform ExternalTextureParams_1 { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; +layout(binding = 2) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; } ext_tex_params; vec3 gammaCorrection(vec3 v, GammaTransferParams params) { @@ -60,7 +53,7 @@ vec4 textureLoad2d(highp sampler2D tint_symbol_1, highp sampler2D ext_tex_plane_ uniform highp sampler2D arg_0_1; uniform highp sampler2D ext_tex_plane_1_2; void doTextureLoad() { - vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, ext_tex_params, ivec2(0)); + vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, ext_tex_params.inner, ivec2(0)); } vec4 vertex_main() { @@ -76,14 +69,6 @@ void main() { gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); return; } -Error parsing GLSL shader: -ERROR: 0:61: 'textureLoad2d' : no matching overloaded function found -ERROR: 0:61: '=' : cannot convert from ' const float' to ' temp highp 4-component vector of float' -ERROR: 0:61: '' : compilation terminated -ERROR: 3 compilation errors. No code generated. - - - #version 310 es precision mediump float; @@ -107,13 +92,8 @@ struct ExternalTextureParams { mat3 gamutConversionMatrix; }; -layout(binding = 2) uniform ExternalTextureParams_1 { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; +layout(binding = 2) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; } ext_tex_params; vec3 gammaCorrection(vec3 v, GammaTransferParams params) { @@ -145,7 +125,7 @@ vec4 textureLoad2d(highp sampler2D tint_symbol_1, highp sampler2D ext_tex_plane_ uniform highp sampler2D arg_0_1; uniform highp sampler2D ext_tex_plane_1_2; void doTextureLoad() { - vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, ext_tex_params, ivec2(0)); + vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, ext_tex_params.inner, ivec2(0)); } void fragment_main() { @@ -156,14 +136,6 @@ void main() { fragment_main(); return; } -Error parsing GLSL shader: -ERROR: 0:62: 'textureLoad2d' : no matching overloaded function found -ERROR: 0:62: '=' : cannot convert from ' const float' to ' temp mediump 4-component vector of float' -ERROR: 0:62: '' : compilation terminated -ERROR: 3 compilation errors. No code generated. - - - #version 310 es struct GammaTransferParams { @@ -186,13 +158,8 @@ struct ExternalTextureParams { mat3 gamutConversionMatrix; }; -layout(binding = 2) uniform ExternalTextureParams_1 { - uint numPlanes; - uint doYuvToRgbConversionOnly; - mat3x4 yuvToRgbConversionMatrix; - GammaTransferParams gammaDecodeParams; - GammaTransferParams gammaEncodeParams; - mat3 gamutConversionMatrix; +layout(binding = 2) uniform ext_tex_params_block_ubo { + ExternalTextureParams inner; } ext_tex_params; vec3 gammaCorrection(vec3 v, GammaTransferParams params) { @@ -224,7 +191,7 @@ vec4 textureLoad2d(highp sampler2D tint_symbol_1, highp sampler2D ext_tex_plane_ uniform highp sampler2D arg_0_1; uniform highp sampler2D ext_tex_plane_1_2; void doTextureLoad() { - vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, ext_tex_params, ivec2(0)); + vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, ext_tex_params.inner, ivec2(0)); } void compute_main() { @@ -236,11 +203,3 @@ void main() { compute_main(); return; } -Error parsing GLSL shader: -ERROR: 0:61: 'textureLoad2d' : no matching overloaded function found -ERROR: 0:61: '=' : cannot convert from ' const float' to ' temp highp 4-component vector of float' -ERROR: 0:61: '' : compilation terminated -ERROR: 3 compilation errors. No code generated. - - - diff --git a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.spvasm b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.spvasm index a894d4c376..e0ff7dd823 100644 --- a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.spvasm +++ b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.spvasm @@ -1,10 +1,10 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 142 +; Bound: 146 ; Schema: 0 OpCapability Shader - %27 = OpExtInstImport "GLSL.std.450" + %28 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -14,6 +14,8 @@ OpName %value "value" OpName %vertex_point_size "vertex_point_size" OpName %ext_tex_plane_1 "ext_tex_plane_1" + OpName %ext_tex_params_block "ext_tex_params_block" + OpMemberName %ext_tex_params_block 0 "inner" OpName %ExternalTextureParams "ExternalTextureParams" OpMemberName %ExternalTextureParams 0 "numPlanes" OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly" @@ -56,7 +58,8 @@ OpDecorate %vertex_point_size BuiltIn PointSize OpDecorate %ext_tex_plane_1 DescriptorSet 1 OpDecorate %ext_tex_plane_1 Binding 1 - OpDecorate %ExternalTextureParams Block + OpDecorate %ext_tex_params_block Block + OpMemberDecorate %ext_tex_params_block 0 Offset 0 OpMemberDecorate %ExternalTextureParams 0 Offset 0 OpMemberDecorate %ExternalTextureParams 1 Offset 4 OpMemberDecorate %ExternalTextureParams 2 Offset 16 @@ -97,157 +100,161 @@ %v3float = OpTypeVector %float 3 %mat3v3float = OpTypeMatrix %v3float 3 %ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float -%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams -%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform +%ext_tex_params_block = OpTypeStruct %ExternalTextureParams +%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block +%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform %arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant - %21 = OpTypeFunction %v3float %v3float %GammaTransferParams + %22 = OpTypeFunction %v3float %v3float %GammaTransferParams %bool = OpTypeBool %v3bool = OpTypeVector %bool 3 %_ptr_Function_v3float = OpTypePointer Function %v3float - %41 = OpConstantNull %v3float + %42 = OpConstantNull %v3float %int = OpTypeInt 32 1 %v2int = OpTypeVector %int 2 - %61 = OpTypeFunction %v4float %11 %11 %v2int %ExternalTextureParams + %62 = OpTypeFunction %v4float %11 %11 %v2int %ExternalTextureParams %uint_1 = OpConstant %uint 1 - %78 = OpConstantNull %int + %79 = OpConstantNull %int %v2float = OpTypeVector %float 2 %float_1 = OpConstant %float 1 - %92 = OpConstantNull %uint - %110 = OpTypeFunction %v4float %11 %11 %ExternalTextureParams %v2int + %93 = OpConstantNull %uint + %111 = OpTypeFunction %v4float %11 %11 %ExternalTextureParams %v2int %void = OpTypeVoid - %118 = OpTypeFunction %void - %126 = OpConstantNull %v2int + %119 = OpTypeFunction %void + %uint_0 = OpConstant %uint 0 +%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams + %130 = OpConstantNull %v2int %_ptr_Function_v4float = OpTypePointer Function %v4float - %129 = OpTypeFunction %v4float -%gammaCorrection = OpFunction %v3float None %21 + %133 = OpTypeFunction %v4float +%gammaCorrection = OpFunction %v3float None %22 %v = OpFunctionParameter %v3float %params = OpFunctionParameter %GammaTransferParams - %25 = OpLabel - %39 = OpVariable %_ptr_Function_v3float Function %41 - %51 = OpVariable %_ptr_Function_v3float Function %41 - %57 = OpVariable %_ptr_Function_v3float Function %41 - %26 = OpExtInst %v3float %27 FAbs %v - %28 = OpCompositeExtract %float %params 4 - %29 = OpCompositeConstruct %v3float %28 %28 %28 - %30 = OpFOrdLessThan %v3bool %26 %29 - %33 = OpExtInst %v3float %27 FSign %v - %34 = OpCompositeExtract %float %params 3 - %35 = OpExtInst %v3float %27 FAbs %v - %36 = OpVectorTimesScalar %v3float %35 %34 - %37 = OpCompositeExtract %float %params 6 - %42 = OpCompositeConstruct %v3float %37 %37 %37 - %38 = OpFAdd %v3float %36 %42 - %43 = OpFMul %v3float %33 %38 - %44 = OpExtInst %v3float %27 FSign %v - %46 = OpCompositeExtract %float %params 1 - %47 = OpExtInst %v3float %27 FAbs %v - %48 = OpVectorTimesScalar %v3float %47 %46 - %49 = OpCompositeExtract %float %params 2 - %52 = OpCompositeConstruct %v3float %49 %49 %49 - %50 = OpFAdd %v3float %48 %52 - %53 = OpCompositeExtract %float %params 0 - %54 = OpCompositeConstruct %v3float %53 %53 %53 - %45 = OpExtInst %v3float %27 Pow %50 %54 - %55 = OpCompositeExtract %float %params 5 - %58 = OpCompositeConstruct %v3float %55 %55 %55 - %56 = OpFAdd %v3float %45 %58 - %59 = OpFMul %v3float %44 %56 - %60 = OpSelect %v3float %30 %43 %59 - OpReturnValue %60 + %26 = OpLabel + %40 = OpVariable %_ptr_Function_v3float Function %42 + %52 = OpVariable %_ptr_Function_v3float Function %42 + %58 = OpVariable %_ptr_Function_v3float Function %42 + %27 = OpExtInst %v3float %28 FAbs %v + %29 = OpCompositeExtract %float %params 4 + %30 = OpCompositeConstruct %v3float %29 %29 %29 + %31 = OpFOrdLessThan %v3bool %27 %30 + %34 = OpExtInst %v3float %28 FSign %v + %35 = OpCompositeExtract %float %params 3 + %36 = OpExtInst %v3float %28 FAbs %v + %37 = OpVectorTimesScalar %v3float %36 %35 + %38 = OpCompositeExtract %float %params 6 + %43 = OpCompositeConstruct %v3float %38 %38 %38 + %39 = OpFAdd %v3float %37 %43 + %44 = OpFMul %v3float %34 %39 + %45 = OpExtInst %v3float %28 FSign %v + %47 = OpCompositeExtract %float %params 1 + %48 = OpExtInst %v3float %28 FAbs %v + %49 = OpVectorTimesScalar %v3float %48 %47 + %50 = OpCompositeExtract %float %params 2 + %53 = OpCompositeConstruct %v3float %50 %50 %50 + %51 = OpFAdd %v3float %49 %53 + %54 = OpCompositeExtract %float %params 0 + %55 = OpCompositeConstruct %v3float %54 %54 %54 + %46 = OpExtInst %v3float %28 Pow %51 %55 + %56 = OpCompositeExtract %float %params 5 + %59 = OpCompositeConstruct %v3float %56 %56 %56 + %57 = OpFAdd %v3float %46 %59 + %60 = OpFMul %v3float %45 %57 + %61 = OpSelect %v3float %31 %44 %60 + OpReturnValue %61 OpFunctionEnd -%textureLoadExternal = OpFunction %v4float None %61 +%textureLoadExternal = OpFunction %v4float None %62 %plane0 = OpFunctionParameter %11 %plane1 = OpFunctionParameter %11 %coord = OpFunctionParameter %v2int %params_0 = OpFunctionParameter %ExternalTextureParams - %69 = OpLabel - %color = OpVariable %_ptr_Function_v3float Function %41 - %71 = OpCompositeExtract %uint %params_0 0 - %73 = OpIEqual %bool %71 %uint_1 - OpSelectionMerge %74 None - OpBranchConditional %73 %75 %76 - %75 = OpLabel - %77 = OpImageFetch %v4float %plane0 %coord Lod %78 - %79 = OpVectorShuffle %v3float %77 %77 0 1 2 - OpStore %color %79 - OpBranch %74 + %70 = OpLabel + %color = OpVariable %_ptr_Function_v3float Function %42 + %72 = OpCompositeExtract %uint %params_0 0 + %74 = OpIEqual %bool %72 %uint_1 + OpSelectionMerge %75 None + OpBranchConditional %74 %76 %77 %76 = OpLabel - %80 = OpImageFetch %v4float %plane0 %coord Lod %78 - %81 = OpCompositeExtract %float %80 0 - %82 = OpImageFetch %v4float %plane1 %coord Lod %78 - %84 = OpVectorShuffle %v2float %82 %82 0 1 - %85 = OpCompositeExtract %float %84 0 - %86 = OpCompositeExtract %float %84 1 - %88 = OpCompositeConstruct %v4float %81 %85 %86 %float_1 - %89 = OpCompositeExtract %mat3v4float %params_0 2 - %90 = OpVectorTimesMatrix %v3float %88 %89 - OpStore %color %90 - OpBranch %74 - %74 = OpLabel - %91 = OpCompositeExtract %uint %params_0 1 - %93 = OpIEqual %bool %91 %92 - OpSelectionMerge %94 None - OpBranchConditional %93 %95 %94 - %95 = OpLabel - %97 = OpLoad %v3float %color - %98 = OpCompositeExtract %GammaTransferParams %params_0 3 - %96 = OpFunctionCall %v3float %gammaCorrection %97 %98 - OpStore %color %96 - %99 = OpCompositeExtract %mat3v3float %params_0 5 - %100 = OpLoad %v3float %color - %101 = OpMatrixTimesVector %v3float %99 %100 - OpStore %color %101 - %103 = OpLoad %v3float %color - %104 = OpCompositeExtract %GammaTransferParams %params_0 4 - %102 = OpFunctionCall %v3float %gammaCorrection %103 %104 + %78 = OpImageFetch %v4float %plane0 %coord Lod %79 + %80 = OpVectorShuffle %v3float %78 %78 0 1 2 + OpStore %color %80 + OpBranch %75 + %77 = OpLabel + %81 = OpImageFetch %v4float %plane0 %coord Lod %79 + %82 = OpCompositeExtract %float %81 0 + %83 = OpImageFetch %v4float %plane1 %coord Lod %79 + %85 = OpVectorShuffle %v2float %83 %83 0 1 + %86 = OpCompositeExtract %float %85 0 + %87 = OpCompositeExtract %float %85 1 + %89 = OpCompositeConstruct %v4float %82 %86 %87 %float_1 + %90 = OpCompositeExtract %mat3v4float %params_0 2 + %91 = OpVectorTimesMatrix %v3float %89 %90 + OpStore %color %91 + OpBranch %75 + %75 = OpLabel + %92 = OpCompositeExtract %uint %params_0 1 + %94 = OpIEqual %bool %92 %93 + OpSelectionMerge %95 None + OpBranchConditional %94 %96 %95 + %96 = OpLabel + %98 = OpLoad %v3float %color + %99 = OpCompositeExtract %GammaTransferParams %params_0 3 + %97 = OpFunctionCall %v3float %gammaCorrection %98 %99 + OpStore %color %97 + %100 = OpCompositeExtract %mat3v3float %params_0 5 + %101 = OpLoad %v3float %color + %102 = OpMatrixTimesVector %v3float %100 %101 OpStore %color %102 - OpBranch %94 - %94 = OpLabel - %105 = OpLoad %v3float %color - %106 = OpCompositeExtract %float %105 0 - %107 = OpCompositeExtract %float %105 1 - %108 = OpCompositeExtract %float %105 2 - %109 = OpCompositeConstruct %v4float %106 %107 %108 %float_1 - OpReturnValue %109 + %104 = OpLoad %v3float %color + %105 = OpCompositeExtract %GammaTransferParams %params_0 4 + %103 = OpFunctionCall %v3float %gammaCorrection %104 %105 + OpStore %color %103 + OpBranch %95 + %95 = OpLabel + %106 = OpLoad %v3float %color + %107 = OpCompositeExtract %float %106 0 + %108 = OpCompositeExtract %float %106 1 + %109 = OpCompositeExtract %float %106 2 + %110 = OpCompositeConstruct %v4float %107 %108 %109 %float_1 + OpReturnValue %110 OpFunctionEnd -%textureLoad2d = OpFunction %v4float None %110 +%textureLoad2d = OpFunction %v4float None %111 %texture = OpFunctionParameter %11 %ext_tex_plane_1_1 = OpFunctionParameter %11 %ext_tex_params_1 = OpFunctionParameter %ExternalTextureParams %coords = OpFunctionParameter %v2int - %116 = OpLabel - %117 = OpFunctionCall %v4float %textureLoadExternal %texture %ext_tex_plane_1_1 %coords %ext_tex_params_1 - OpReturnValue %117 + %117 = OpLabel + %118 = OpFunctionCall %v4float %textureLoadExternal %texture %ext_tex_plane_1_1 %coords %ext_tex_params_1 + OpReturnValue %118 OpFunctionEnd -%doTextureLoad = OpFunction %void None %118 - %121 = OpLabel +%doTextureLoad = OpFunction %void None %119 + %122 = OpLabel %res = OpVariable %_ptr_Function_v4float Function %5 - %123 = OpLoad %11 %arg_0 - %124 = OpLoad %11 %ext_tex_plane_1 - %125 = OpLoad %ExternalTextureParams %ext_tex_params - %122 = OpFunctionCall %v4float %textureLoad2d %123 %124 %125 %126 - OpStore %res %122 + %124 = OpLoad %11 %arg_0 + %125 = OpLoad %11 %ext_tex_plane_1 + %128 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0 + %129 = OpLoad %ExternalTextureParams %128 + %123 = OpFunctionCall %v4float %textureLoad2d %124 %125 %129 %130 + OpStore %res %123 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %129 - %131 = OpLabel - %132 = OpFunctionCall %void %doTextureLoad +%vertex_main_inner = OpFunction %v4float None %133 + %135 = OpLabel + %136 = OpFunctionCall %void %doTextureLoad OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %118 - %134 = OpLabel - %135 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %135 +%vertex_main = OpFunction %void None %119 + %138 = OpLabel + %139 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %139 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %118 - %137 = OpLabel - %138 = OpFunctionCall %void %doTextureLoad +%fragment_main = OpFunction %void None %119 + %141 = OpLabel + %142 = OpFunctionCall %void %doTextureLoad OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %118 - %140 = OpLabel - %141 = OpFunctionCall %void %doTextureLoad +%compute_main = OpFunction %void None %119 + %144 = OpLabel + %145 = OpFunctionCall %void %doTextureLoad OpReturn OpFunctionEnd diff --git a/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.glsl b/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.glsl index 729d8e0398..51aef61b77 100644 --- a/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.glsl +++ b/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.glsl @@ -1,10 +1,10 @@ SKIP: FAILED -binary/mul/mat3x2-vec3/f16.wgsl:3:14 error: using f16 types in 'uniform' storage class is not implemented yet +expressions/binary/mul/mat3x2-vec3/f16.wgsl:3:14 error: using f16 types in 'uniform' storage class is not implemented yet matrix : mat3x2, ^^^^^^^^^^^ -binary/mul/mat3x2-vec3/f16.wgsl:2:1 note: see layout of struct: +expressions/binary/mul/mat3x2-vec3/f16.wgsl:2:1 note: see layout of struct: /* align(8) size(24) */ struct S { /* offset( 0) align(4) size(12) */ matrix : mat3x2; /* offset(12) align(1) size( 4) */ // -- implicit field alignment padding --; @@ -14,7 +14,7 @@ binary/mul/mat3x2-vec3/f16.wgsl:2:1 note: see layout of struct: struct S { ^^^^^^ -binary/mul/mat3x2-vec3/f16.wgsl:6:36 note: see declaration of variable +expressions/binary/mul/mat3x2-vec3/f16.wgsl:6:36 note: see declaration of variable @group(0) @binding(0) var data: S; ^^^^ 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 086769e3c9..c2ceb0a0a2 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,14 +6,7 @@ struct S { vec3 vector; }; -struct S_std140 { - vec2 matrix_0; - vec2 matrix_1; - vec2 matrix_2; - vec3 vector; -}; - -layout(binding = 0) uniform S_std140_1 { +layout(binding = 0) uniform S_std140_ubo { vec2 matrix_0; vec2 matrix_1; vec2 matrix_2; diff --git a/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.glsl b/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.glsl index fe18486ecc..0b83b52ad8 100644 --- a/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.glsl +++ b/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.glsl @@ -1,10 +1,10 @@ SKIP: FAILED -binary/mul/mat3x3-vec3/f16.wgsl:3:14 error: using f16 types in 'uniform' storage class is not implemented yet +expressions/binary/mul/mat3x3-vec3/f16.wgsl:3:14 error: using f16 types in 'uniform' storage class is not implemented yet matrix : mat3x3, ^^^^^^^^^^^ -binary/mul/mat3x3-vec3/f16.wgsl:2:1 note: see layout of struct: +expressions/binary/mul/mat3x3-vec3/f16.wgsl:2:1 note: see layout of struct: /* align(8) size(32) */ struct S { /* offset( 0) align(8) size(24) */ matrix : mat3x3; /* offset(24) align(8) size( 6) */ vector : vec3; @@ -13,7 +13,7 @@ binary/mul/mat3x3-vec3/f16.wgsl:2:1 note: see layout of struct: struct S { ^^^^^^ -binary/mul/mat3x3-vec3/f16.wgsl:6:36 note: see declaration of variable +expressions/binary/mul/mat3x3-vec3/f16.wgsl:6:36 note: see declaration of variable @group(0) @binding(0) var data: S; ^^^^ 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 42cee27835..b5481e4506 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,12 +1,7 @@ #version 310 es precision mediump float; -struct S { - mat3 matrix; - vec3 vector; -}; - -layout(binding = 0) uniform S_1 { +layout(binding = 0) uniform S_ubo { mat3 matrix; vec3 vector; } data; diff --git a/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.glsl b/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.glsl index da8a0b2f5b..e34358bbf1 100644 --- a/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.glsl +++ b/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.glsl @@ -1,10 +1,10 @@ SKIP: FAILED -binary/mul/vec3-mat3x3/f16.wgsl:3:14 error: using f16 types in 'uniform' storage class is not implemented yet +expressions/binary/mul/vec3-mat3x3/f16.wgsl:3:14 error: using f16 types in 'uniform' storage class is not implemented yet matrix : mat3x3, ^^^^^^^^^^^ -binary/mul/vec3-mat3x3/f16.wgsl:2:1 note: see layout of struct: +expressions/binary/mul/vec3-mat3x3/f16.wgsl:2:1 note: see layout of struct: /* align(8) size(32) */ struct S { /* offset( 0) align(8) size(24) */ matrix : mat3x3; /* offset(24) align(8) size( 6) */ vector : vec3; @@ -13,7 +13,7 @@ binary/mul/vec3-mat3x3/f16.wgsl:2:1 note: see layout of struct: struct S { ^^^^^^ -binary/mul/vec3-mat3x3/f16.wgsl:6:36 note: see declaration of variable +expressions/binary/mul/vec3-mat3x3/f16.wgsl:6:36 note: see declaration of variable @group(0) @binding(0) var data: S; ^^^^ 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 200be2bc75..805940727c 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,12 +1,7 @@ #version 310 es precision mediump float; -struct S { - mat3 matrix; - vec3 vector; -}; - -layout(binding = 0) uniform S_1 { +layout(binding = 0) uniform S_ubo { mat3 matrix; vec3 vector; } data; diff --git a/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.glsl b/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.glsl index 4b075b5ca3..367b08c729 100644 --- a/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.glsl +++ b/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.glsl @@ -1,10 +1,10 @@ SKIP: FAILED -binary/mul/vec3-mat4x3/f16.wgsl:3:14 error: using f16 types in 'uniform' storage class is not implemented yet +expressions/binary/mul/vec3-mat4x3/f16.wgsl:3:14 error: using f16 types in 'uniform' storage class is not implemented yet matrix : mat4x3, ^^^^^^^^^^^ -binary/mul/vec3-mat4x3/f16.wgsl:2:1 note: see layout of struct: +expressions/binary/mul/vec3-mat4x3/f16.wgsl:2:1 note: see layout of struct: /* align(8) size(40) */ struct S { /* offset( 0) align(8) size(32) */ matrix : mat4x3; /* offset(32) align(8) size( 6) */ vector : vec3; @@ -13,7 +13,7 @@ binary/mul/vec3-mat4x3/f16.wgsl:2:1 note: see layout of struct: struct S { ^^^^^^ -binary/mul/vec3-mat4x3/f16.wgsl:6:36 note: see declaration of variable +expressions/binary/mul/vec3-mat4x3/f16.wgsl:6:36 note: see declaration of variable @group(0) @binding(0) var data: S; ^^^^ 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 0cd32b80b5..26960f6895 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,12 +1,7 @@ #version 310 es precision mediump float; -struct S { - mat4x3 matrix; - vec3 vector; -}; - -layout(binding = 0) uniform S_1 { +layout(binding = 0) uniform S_ubo { mat4x3 matrix; vec3 vector; } data; diff --git a/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.glsl b/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.glsl index 77452b8b9b..713d1a6201 100644 --- a/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.glsl +++ b/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.glsl @@ -1,10 +1,10 @@ SKIP: FAILED -swizzle/read/packed_vec3/f16.wgsl:3:8 error: using f16 types in 'uniform' storage class is not implemented yet +expressions/swizzle/read/packed_vec3/f16.wgsl:3:8 error: using f16 types in 'uniform' storage class is not implemented yet v: vec3, ^^^^^^^^^ -swizzle/read/packed_vec3/f16.wgsl:2:1 note: see layout of struct: +expressions/swizzle/read/packed_vec3/f16.wgsl:2:1 note: see layout of struct: /* align(8) size(8) */ struct S { /* offset(0) align(8) size(6) */ v : vec3; /* offset(6) align(1) size(2) */ // -- implicit struct size padding --; @@ -12,7 +12,7 @@ swizzle/read/packed_vec3/f16.wgsl:2:1 note: see layout of struct: struct S { ^^^^^^ -swizzle/read/packed_vec3/f16.wgsl:6:36 note: see declaration of variable +expressions/swizzle/read/packed_vec3/f16.wgsl:6:36 note: see declaration of variable @group(0) @binding(0) var U : S; ^ 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 f71e8a00cf..9f4cd7dbe4 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,11 +4,7 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - vec3 v; -}; - -layout(binding = 0) uniform S_1 { +layout(binding = 0) uniform S_ubo { vec3 v; } U; 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 fe7dd721e0..ce0631d5d4 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,11 +4,7 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - ivec3 v; -}; - -layout(binding = 0) uniform S_1 { +layout(binding = 0) uniform S_ubo { ivec3 v; } U; 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 7725962957..435e00118b 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,11 +4,7 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - uvec3 v; -}; - -layout(binding = 0) uniform S_1 { +layout(binding = 0) uniform S_ubo { uvec3 v; } U; diff --git a/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.glsl b/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.glsl index f7fb998495..03372eff8d 100644 --- a/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.glsl +++ b/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.glsl @@ -1,10 +1,10 @@ SKIP: FAILED -swizzle/write/packed_vec3/f16.wgsl:3:8 error: using f16 types in 'storage' storage class is not implemented yet +expressions/swizzle/write/packed_vec3/f16.wgsl:3:8 error: using f16 types in 'storage' storage class is not implemented yet v: vec3, ^^^^^^^^^ -swizzle/write/packed_vec3/f16.wgsl:2:1 note: see layout of struct: +expressions/swizzle/write/packed_vec3/f16.wgsl:2:1 note: see layout of struct: /* align(8) size(8) */ struct S { /* offset(0) align(8) size(6) */ v : vec3; /* offset(6) align(1) size(2) */ // -- implicit struct size padding --; @@ -12,7 +12,7 @@ swizzle/write/packed_vec3/f16.wgsl:2:1 note: see layout of struct: struct S { ^^^^^^ -swizzle/write/packed_vec3/f16.wgsl:6:48 note: see declaration of variable +expressions/swizzle/write/packed_vec3/f16.wgsl:6:48 note: see declaration of variable @group(0) @binding(0) var U : S; ^ 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 b4cdda6faa..5bec520bd9 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 @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - vec3 v; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { vec3 v; } U; + void f() { U.v = vec3(1.0f, 2.0f, 3.0f); U.v.x = 1.0f; 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 bde8b4c1fd..ab987b2811 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 @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - ivec3 v; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { ivec3 v; } U; + void f() { U.v = ivec3(1, 2, 3); U.v.x = 1; 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 a5e67459dc..6481d65321 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 @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - uvec3 v; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { uvec3 v; } U; + void f() { U.v = uvec3(1u, 2u, 3u); U.v.x = 1u; diff --git a/test/tint/layout/storage/mat2x2/f32.wgsl.expected.glsl b/test/tint/layout/storage/mat2x2/f32.wgsl.expected.glsl index 8f6ff79f05..0a32bed3a5 100644 --- a/test/tint/layout/storage/mat2x2/f32.wgsl.expected.glsl +++ b/test/tint/layout/storage/mat2x2/f32.wgsl.expected.glsl @@ -1,12 +1,9 @@ #version 310 es -struct SSBO { - mat2 m; -}; - -layout(binding = 0, std430) buffer SSBO_1 { +layout(binding = 0, std430) buffer SSBO_ssbo { mat2 m; } ssbo; + void f() { mat2 v = ssbo.m; ssbo.m = v; 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 f6b03dc89d..b4391341ac 100644 --- a/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.glsl +++ b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.glsl @@ -4,13 +4,10 @@ struct strided_arr { vec2 el; }; -struct SSBO { - strided_arr m[2]; -}; - -layout(binding = 0, std430) buffer SSBO_1 { +layout(binding = 0, std430) buffer SSBO_ssbo { strided_arr m[2]; } ssbo; + mat2 arr_to_mat2x2_stride_16(strided_arr arr[2]) { return mat2(arr[0u].el, arr[1u].el); } diff --git a/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.glsl b/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.glsl index bd0575de56..2a20e0f91a 100644 --- a/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.glsl +++ b/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.glsl @@ -1,12 +1,9 @@ #version 310 es -struct S { - int a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a; } v; + void tint_symbol() { int u = (v.a + 1); } 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 89067aa07c..b259bfb2f4 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,10 +1,6 @@ #version 310 es -struct S { - int a; -}; - -layout(binding = 0) uniform S_1 { +layout(binding = 0) uniform S_ubo { int a; } v; diff --git a/test/tint/samples/compute_boids.wgsl.expected.glsl b/test/tint/samples/compute_boids.wgsl.expected.glsl index 6a110ffee0..408cf550dc 100644 --- a/test/tint/samples/compute_boids.wgsl.expected.glsl +++ b/test/tint/samples/compute_boids.wgsl.expected.glsl @@ -75,21 +75,7 @@ struct Particle { vec2 vel; }; -struct SimParams { - float deltaT; - float rule1Distance; - float rule2Distance; - float rule3Distance; - float rule1Scale; - float rule2Scale; - float rule3Scale; -}; - -struct Particles { - Particle particles[5]; -}; - -layout(binding = 0) uniform SimParams_1 { +layout(binding = 0) uniform SimParams_ubo { float deltaT; float rule1Distance; float rule2Distance; @@ -99,12 +85,14 @@ layout(binding = 0) uniform SimParams_1 { float rule3Scale; } params; -layout(binding = 1, std430) buffer Particles_1 { +layout(binding = 1, std430) buffer Particles_ssbo { Particle particles[5]; } particlesA; -layout(binding = 2, std430) buffer Particles_2 { + +layout(binding = 2, std430) buffer Particles_ssbo_1 { Particle particles[5]; } particlesB; + void comp_main(uvec3 tint_symbol) { uint index = tint_symbol.x; if ((index >= 5u)) { diff --git a/test/tint/samples/cube.wgsl.expected.glsl b/test/tint/samples/cube.wgsl.expected.glsl index ff3748b76b..442e404ab0 100644 --- a/test/tint/samples/cube.wgsl.expected.glsl +++ b/test/tint/samples/cube.wgsl.expected.glsl @@ -3,11 +3,7 @@ layout(location = 0) in vec4 cur_position_1; layout(location = 1) in vec4 color_1; layout(location = 0) out vec4 vtxFragColor_1; -struct Uniforms { - mat4 modelViewProjectionMatrix; -}; - -layout(binding = 0) uniform Uniforms_1 { +layout(binding = 0) 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 321e23127f..325570b2b6 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 @@ -1,5 +1,3 @@ -SKIP: FAILED - #version 310 es precision mediump float; @@ -11,16 +9,15 @@ struct S { vec4 v; }; -layout(binding = 0, std430) buffer S_1 { - float f; - uint u; - vec4 v; +layout(binding = 0, std430) buffer tint_symbol_block_ssbo { + S inner; } tint_symbol; + void frag_main(S tint_symbol_1) { float f = tint_symbol_1.f; uint u = tint_symbol_1.u; vec4 v = tint_symbol_1.v; - tint_symbol = tint_symbol_1; + tint_symbol.inner = tint_symbol_1; } void main() { @@ -28,10 +25,3 @@ void main() { frag_main(tint_symbol_2); return; } -Error parsing GLSL shader: -ERROR: 0:21: 'assign' : cannot convert from ' in structure{ global mediump float f, global mediump uint u, global mediump 4-component vector of float v}' to 'layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer mediump float f, layout( column_major std430 offset=4) buffer mediump uint u, layout( column_major std430 offset=16) buffer mediump 4-component vector of float v}' -ERROR: 0:21: '' : compilation terminated -ERROR: 2 compilation errors. No code generated. - - - diff --git a/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.spvasm b/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.spvasm index e2748bdaa0..ebec6c8942 100644 --- a/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.spvasm +++ b/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.spvasm @@ -1,7 +1,7 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 29 +; Bound: 33 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 @@ -10,6 +10,8 @@ OpName %f_1 "f_1" OpName %u_1 "u_1" OpName %v_1 "v_1" + OpName %output_block "output_block" + OpMemberName %output_block 0 "inner" OpName %S "S" OpMemberName %S 0 "f" OpMemberName %S 1 "u" @@ -22,7 +24,8 @@ OpDecorate %u_1 Location 1 OpDecorate %u_1 Flat OpDecorate %v_1 BuiltIn FragCoord - OpDecorate %S Block + OpDecorate %output_block Block + OpMemberDecorate %output_block 0 Offset 0 OpMemberDecorate %S 0 Offset 0 OpMemberDecorate %S 1 Offset 4 OpMemberDecorate %S 2 Offset 128 @@ -38,26 +41,30 @@ %_ptr_Input_v4float = OpTypePointer Input %v4float %v_1 = OpVariable %_ptr_Input_v4float Input %S = OpTypeStruct %float %uint %v4float -%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S - %output = OpVariable %_ptr_StorageBuffer_S StorageBuffer +%output_block = OpTypeStruct %S +%_ptr_StorageBuffer_output_block = OpTypePointer StorageBuffer %output_block + %output = OpVariable %_ptr_StorageBuffer_output_block StorageBuffer %void = OpTypeVoid - %13 = OpTypeFunction %void %S - %21 = OpTypeFunction %void -%frag_main_inner = OpFunction %void None %13 + %14 = OpTypeFunction %void %S + %uint_0 = OpConstant %uint 0 +%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S + %25 = OpTypeFunction %void +%frag_main_inner = OpFunction %void None %14 %input = OpFunctionParameter %S - %17 = OpLabel - %18 = OpCompositeExtract %float %input 0 - %19 = OpCompositeExtract %uint %input 1 - %20 = OpCompositeExtract %v4float %input 2 - OpStore %output %input + %18 = OpLabel + %19 = OpCompositeExtract %float %input 0 + %20 = OpCompositeExtract %uint %input 1 + %21 = OpCompositeExtract %v4float %input 2 + %24 = OpAccessChain %_ptr_StorageBuffer_S %output %uint_0 + OpStore %24 %input OpReturn OpFunctionEnd - %frag_main = OpFunction %void None %21 - %23 = OpLabel - %25 = OpLoad %float %f_1 - %26 = OpLoad %uint %u_1 - %27 = OpLoad %v4float %v_1 - %28 = OpCompositeConstruct %S %25 %26 %27 - %24 = OpFunctionCall %void %frag_main_inner %28 + %frag_main = OpFunction %void None %25 + %27 = OpLabel + %29 = OpLoad %float %f_1 + %30 = OpLoad %uint %u_1 + %31 = OpLoad %v4float %v_1 + %32 = OpCompositeConstruct %S %29 %30 %31 + %28 = OpFunctionCall %void %frag_main_inner %32 OpReturn OpFunctionEnd 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 eb95861cc4..359938c04e 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 @@ -1,9 +1,5 @@ #version 310 es -struct Uniforms { - uint i; -}; - struct InnerS { int v; }; @@ -12,7 +8,7 @@ struct OuterS { InnerS a1[8]; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; } uniforms; 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 9f5f5e6e1a..9ef360bd2c 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 @@ -1,9 +1,5 @@ #version 310 es -struct Uniforms { - uint i; -}; - struct InnerS { int v; }; @@ -12,7 +8,7 @@ struct OuterS { InnerS a1[8]; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; } uniforms; 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 c8afc86b63..49aff5d2e3 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 @@ -1,9 +1,5 @@ #version 310 es -struct Uniforms { - uint i; -}; - struct InnerS { int v; }; @@ -12,7 +8,7 @@ struct OuterS { InnerS a1[8]; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; } uniforms; 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 80072a8658..4505b851f0 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 @@ -1,10 +1,5 @@ #version 310 es -struct Uniforms { - uint i; - uint j; -}; - struct InnerS { int v; }; @@ -23,7 +18,7 @@ uint getNextIndex() { return nextIndex; } -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; uint j; } uniforms; 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 404b14e7ae..1b59df8b15 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 @@ -1,9 +1,5 @@ #version 310 es -struct Uniforms { - uint i; -}; - struct InnerS { int v; }; @@ -12,7 +8,7 @@ struct OuterS { InnerS a1[8]; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; } uniforms; 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 9bb2f42d81..01c4ad2613 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 @@ -1,10 +1,5 @@ #version 310 es -struct Uniforms { - uint i; - uint j; -}; - struct InnerS { int v; }; @@ -13,7 +8,7 @@ struct OuterS { InnerS a1[8][8]; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; uint j; } uniforms; 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 5ce3d5d25d..af08fd8046 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 @@ -1,9 +1,5 @@ #version 310 es -struct Uniforms { - uint i; -}; - struct InnerS { int v; }; @@ -16,7 +12,7 @@ struct OuterS { S1 a1[8]; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; } uniforms; 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 5e12367af8..2951c8f44f 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 @@ -1,10 +1,5 @@ #version 310 es -struct Uniforms { - uint i; - uint j; -}; - struct InnerS { int v; }; @@ -17,7 +12,7 @@ struct OuterS { S1 a1[8]; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; uint j; } uniforms; 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 6f4afcddae..23b760d45c 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 @@ -1,20 +1,17 @@ #version 310 es -struct Uniforms { - uint i; -}; - struct InnerS { int v; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; } uniforms; -layout(binding = 0, std430) buffer OuterS_1 { +layout(binding = 0, std430) buffer OuterS_ssbo { InnerS a1[]; } s1; + void tint_symbol() { InnerS v = InnerS(0); s1.a1[uniforms.i] = v; 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 10bd162d6c..24161948f5 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 @@ -1,10 +1,5 @@ #version 310 es -struct Uniforms { - uint i; - uint j; -}; - struct InnerS { int v; }; @@ -13,14 +8,15 @@ struct S1 { InnerS a2[8]; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; uint j; } uniforms; -layout(binding = 0, std430) buffer OuterS_1 { +layout(binding = 0, std430) buffer OuterS_ssbo { S1 a1[]; } s; + void tint_symbol() { InnerS v = InnerS(0); s.a1[uniforms.i].a2[uniforms.j] = v; 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 2cad6f6cc0..9211926e23 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 @@ -1,14 +1,10 @@ #version 310 es -struct Uniforms { - uint i; -}; - struct OuterS { mat2x4 m1; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; } uniforms; 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 afb7d809eb..6334c1fe0d 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 @@ -1,9 +1,5 @@ #version 310 es -struct Uniforms { - uint i; -}; - struct InnerS { int v; }; @@ -13,7 +9,7 @@ struct OuterS { InnerS a2[8]; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; } uniforms; 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 00bb1bb4e5..c33dcc481a 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 @@ -1,9 +1,5 @@ #version 310 es -struct Uniforms { - uint i; -}; - struct InnerS { int v; }; @@ -16,7 +12,7 @@ struct OuterS { S1 s2; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; } uniforms; 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 87dad14ab2..fb6df1479b 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 @@ -1,14 +1,10 @@ #version 310 es -struct Uniforms { - uint i; -}; - struct OuterS { vec3 v1; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; } uniforms; 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 c7f713e76c..35c1d85a5e 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 @@ -1,14 +1,10 @@ #version 310 es -struct Uniforms { - uint i; -}; - struct OuterS { uint a1[8]; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; } uniforms; 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 8f46ee863d..08a5f1604b 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 @@ -1,9 +1,5 @@ #version 310 es -struct Uniforms { - uint i; -}; - struct InnerS { int v; }; @@ -12,7 +8,7 @@ struct OuterS { InnerS a1[8]; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; } uniforms; 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 addb30c8f5..dd49ae7f8d 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 @@ -1,9 +1,5 @@ #version 310 es -struct Uniforms { - uint i; -}; - struct InnerS { int v; }; @@ -12,7 +8,7 @@ struct OuterS { InnerS a1[8]; }; -layout(binding = 4) uniform Uniforms_1 { +layout(binding = 4) uniform Uniforms_ubo { uint i; } uniforms; diff --git a/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl.expected.glsl b/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl.expected.glsl index 4017ce7ac9..765da01e95 100644 --- a/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl.expected.glsl +++ b/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int arr[]; } s; + void tint_symbol() { } diff --git a/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.glsl b/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.glsl index 4017ce7ac9..765da01e95 100644 --- a/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.glsl +++ b/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.glsl @@ -1,8 +1,9 @@ #version 310 es -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int arr[]; } s; + void tint_symbol() { } diff --git a/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.glsl b/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.glsl index 521f5102e2..be246a1a2e 100644 --- a/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.glsl +++ b/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.glsl @@ -1,12 +1,9 @@ #version 310 es -struct S { - int i; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int i; } s; + void tint_symbol() { } 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 44dd6cdeb3..15769cebff 100644 --- a/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.glsl +++ b/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.glsl @@ -1,10 +1,6 @@ #version 310 es -struct S { - int i; -}; - -layout(binding = 0) uniform S_1 { +layout(binding = 0) uniform S_ubo { int i; } u; 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 6a42cd84b9..daad9096cb 100644 --- a/test/tint/statements/compound_assign/for_loop.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/for_loop.wgsl.expected.glsl @@ -4,17 +4,12 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - int a; - vec4 b; - mat2 c; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a; vec4 b; mat2 c; } v; + uint i = 0u; int idx1() { i = (i + 1u); diff --git a/test/tint/statements/compound_assign/matrix/minus.wgsl.expected.glsl b/test/tint/statements/compound_assign/matrix/minus.wgsl.expected.glsl index bee248827c..4bc44844df 100644 --- a/test/tint/statements/compound_assign/matrix/minus.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/matrix/minus.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - mat4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { mat4 a; } v; + void foo() { v.a = (v.a - mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f))); } diff --git a/test/tint/statements/compound_assign/matrix/plus.wgsl.expected.glsl b/test/tint/statements/compound_assign/matrix/plus.wgsl.expected.glsl index 86dbf9b9ad..2731dc53b3 100644 --- a/test/tint/statements/compound_assign/matrix/plus.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/matrix/plus.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - mat4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { mat4 a; } v; + void foo() { v.a = (v.a + mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f))); } diff --git a/test/tint/statements/compound_assign/matrix/times-scalar.wgsl.expected.glsl b/test/tint/statements/compound_assign/matrix/times-scalar.wgsl.expected.glsl index ee61689a6c..6454531028 100644 --- a/test/tint/statements/compound_assign/matrix/times-scalar.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/matrix/times-scalar.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - mat4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { mat4 a; } v; + void foo() { v.a = (v.a * 2.0f); } diff --git a/test/tint/statements/compound_assign/matrix/times.wgsl.expected.glsl b/test/tint/statements/compound_assign/matrix/times.wgsl.expected.glsl index 4d224ea363..d0cf2da11b 100644 --- a/test/tint/statements/compound_assign/matrix/times.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/matrix/times.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - mat4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { mat4 a; } v; + void foo() { v.a = (v.a * mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f))); } diff --git a/test/tint/statements/compound_assign/scalar/and.wgsl.expected.glsl b/test/tint/statements/compound_assign/scalar/and.wgsl.expected.glsl index 1d7d94d359..cf037cf09f 100644 --- a/test/tint/statements/compound_assign/scalar/and.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/scalar/and.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - int a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a; } v; + void foo() { v.a = (v.a & 2); } diff --git a/test/tint/statements/compound_assign/scalar/divide.wgsl.expected.glsl b/test/tint/statements/compound_assign/scalar/divide.wgsl.expected.glsl index 44ec9a967c..da4bd07ff0 100644 --- a/test/tint/statements/compound_assign/scalar/divide.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/scalar/divide.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - int a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a; } v; + void foo() { v.a = (v.a / 2); } diff --git a/test/tint/statements/compound_assign/scalar/minus.wgsl.expected.glsl b/test/tint/statements/compound_assign/scalar/minus.wgsl.expected.glsl index 4f4b5c9dbc..78334e5bca 100644 --- a/test/tint/statements/compound_assign/scalar/minus.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/scalar/minus.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - int a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a; } v; + void foo() { v.a = (v.a - 2); } diff --git a/test/tint/statements/compound_assign/scalar/modulo.wgsl.expected.glsl b/test/tint/statements/compound_assign/scalar/modulo.wgsl.expected.glsl index 03bed634e4..bee2c0dae8 100644 --- a/test/tint/statements/compound_assign/scalar/modulo.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/scalar/modulo.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - int a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a; } v; + void foo() { v.a = (v.a % 2); } diff --git a/test/tint/statements/compound_assign/scalar/or.wgsl.expected.glsl b/test/tint/statements/compound_assign/scalar/or.wgsl.expected.glsl index aa760e606b..474cb2aebf 100644 --- a/test/tint/statements/compound_assign/scalar/or.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/scalar/or.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - int a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a; } v; + void foo() { v.a = (v.a | 2); } diff --git a/test/tint/statements/compound_assign/scalar/plus.wgsl.expected.glsl b/test/tint/statements/compound_assign/scalar/plus.wgsl.expected.glsl index ef8e7e921f..fb89b1611b 100644 --- a/test/tint/statements/compound_assign/scalar/plus.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/scalar/plus.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - int a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a; } v; + void foo() { v.a = (v.a + 2); } diff --git a/test/tint/statements/compound_assign/scalar/shift_left.wgsl.expected.glsl b/test/tint/statements/compound_assign/scalar/shift_left.wgsl.expected.glsl index 0d42f568a6..632e2d898d 100644 --- a/test/tint/statements/compound_assign/scalar/shift_left.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/scalar/shift_left.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - int a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a; } v; + void foo() { v.a = (v.a << 2u); } diff --git a/test/tint/statements/compound_assign/scalar/shift_right.wgsl.expected.glsl b/test/tint/statements/compound_assign/scalar/shift_right.wgsl.expected.glsl index c443ba021b..3734f7b1ab 100644 --- a/test/tint/statements/compound_assign/scalar/shift_right.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/scalar/shift_right.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - int a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a; } v; + void foo() { v.a = (v.a >> 2u); } diff --git a/test/tint/statements/compound_assign/scalar/times.wgsl.expected.glsl b/test/tint/statements/compound_assign/scalar/times.wgsl.expected.glsl index c588bcc868..87692a2b1b 100644 --- a/test/tint/statements/compound_assign/scalar/times.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/scalar/times.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - int a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a; } v; + void foo() { v.a = (v.a * 2); } diff --git a/test/tint/statements/compound_assign/scalar/xor.wgsl.expected.glsl b/test/tint/statements/compound_assign/scalar/xor.wgsl.expected.glsl index d4f926bc80..4e25c103b2 100644 --- a/test/tint/statements/compound_assign/scalar/xor.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/scalar/xor.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - int a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { int a; } v; + void foo() { v.a = (v.a ^ 2); } diff --git a/test/tint/statements/compound_assign/vector/and.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/and.wgsl.expected.glsl index b6003927dd..35e6116f71 100644 --- a/test/tint/statements/compound_assign/vector/and.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/and.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - ivec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { ivec4 a; } v; + void foo() { v.a = (v.a & ivec4(2)); } diff --git a/test/tint/statements/compound_assign/vector/divide-scalar.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/divide-scalar.wgsl.expected.glsl index be28e4336b..418c57b575 100644 --- a/test/tint/statements/compound_assign/vector/divide-scalar.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/divide-scalar.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - vec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { vec4 a; } v; + void foo() { v.a = (v.a / 2.0f); } diff --git a/test/tint/statements/compound_assign/vector/divide.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/divide.wgsl.expected.glsl index 35bbaddec5..ffb013a33d 100644 --- a/test/tint/statements/compound_assign/vector/divide.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/divide.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - ivec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { ivec4 a; } v; + void foo() { v.a = (v.a / ivec4(2)); } diff --git a/test/tint/statements/compound_assign/vector/minus-scalar.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/minus-scalar.wgsl.expected.glsl index 7ed578aed2..90fae2d2eb 100644 --- a/test/tint/statements/compound_assign/vector/minus-scalar.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/minus-scalar.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - vec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { vec4 a; } v; + void foo() { v.a = (v.a - 2.0f); } diff --git a/test/tint/statements/compound_assign/vector/minus.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/minus.wgsl.expected.glsl index e260139353..4a40bac1e7 100644 --- a/test/tint/statements/compound_assign/vector/minus.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/minus.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - ivec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { ivec4 a; } v; + void foo() { v.a = (v.a - ivec4(2)); } diff --git a/test/tint/statements/compound_assign/vector/modulo-scalar.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/modulo-scalar.wgsl.expected.glsl index 6e7ee01c74..ded8188f33 100644 --- a/test/tint/statements/compound_assign/vector/modulo-scalar.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/modulo-scalar.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - ivec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { ivec4 a; } v; + void foo() { v.a = (v.a % 2); } diff --git a/test/tint/statements/compound_assign/vector/modulo.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/modulo.wgsl.expected.glsl index 85ab1417b7..5e9d6ac353 100644 --- a/test/tint/statements/compound_assign/vector/modulo.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/modulo.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - ivec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { ivec4 a; } v; + void foo() { v.a = (v.a % ivec4(2)); } diff --git a/test/tint/statements/compound_assign/vector/or.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/or.wgsl.expected.glsl index ae695a1590..83eda7c9c9 100644 --- a/test/tint/statements/compound_assign/vector/or.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/or.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - ivec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { ivec4 a; } v; + void foo() { v.a = (v.a | ivec4(2)); } diff --git a/test/tint/statements/compound_assign/vector/plus-scalar.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/plus-scalar.wgsl.expected.glsl index 43c8ae5ad1..ce64d6f49f 100644 --- a/test/tint/statements/compound_assign/vector/plus-scalar.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/plus-scalar.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - vec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { vec4 a; } v; + void foo() { v.a = (v.a + 2.0f); } diff --git a/test/tint/statements/compound_assign/vector/plus.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/plus.wgsl.expected.glsl index 05b68e4b1a..7860e8d546 100644 --- a/test/tint/statements/compound_assign/vector/plus.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/plus.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - ivec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { ivec4 a; } v; + void foo() { v.a = (v.a + ivec4(2)); } diff --git a/test/tint/statements/compound_assign/vector/shift_left.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/shift_left.wgsl.expected.glsl index 4a53ae3e18..003db4879b 100644 --- a/test/tint/statements/compound_assign/vector/shift_left.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/shift_left.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - ivec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { ivec4 a; } v; + void foo() { v.a = (v.a << uvec4(2u)); } diff --git a/test/tint/statements/compound_assign/vector/shift_right.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/shift_right.wgsl.expected.glsl index 51bb554a05..ce65ca701f 100644 --- a/test/tint/statements/compound_assign/vector/shift_right.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/shift_right.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - ivec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { ivec4 a; } v; + void foo() { v.a = (v.a >> uvec4(2u)); } diff --git a/test/tint/statements/compound_assign/vector/times-matrix.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/times-matrix.wgsl.expected.glsl index ee226d277f..5063090a82 100644 --- a/test/tint/statements/compound_assign/vector/times-matrix.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/times-matrix.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - vec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { vec4 a; } v; + void foo() { v.a = (v.a * mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f))); } diff --git a/test/tint/statements/compound_assign/vector/times-scalar.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/times-scalar.wgsl.expected.glsl index e40bb867ed..7e463898fe 100644 --- a/test/tint/statements/compound_assign/vector/times-scalar.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/times-scalar.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - vec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { vec4 a; } v; + void foo() { v.a = (v.a * 2.0f); } diff --git a/test/tint/statements/compound_assign/vector/times.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/times.wgsl.expected.glsl index b22e63bc9e..69618977b3 100644 --- a/test/tint/statements/compound_assign/vector/times.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/times.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - ivec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { ivec4 a; } v; + void foo() { v.a = (v.a * ivec4(2)); } diff --git a/test/tint/statements/compound_assign/vector/xor.wgsl.expected.glsl b/test/tint/statements/compound_assign/vector/xor.wgsl.expected.glsl index d06e06c1ae..7a74217571 100644 --- a/test/tint/statements/compound_assign/vector/xor.wgsl.expected.glsl +++ b/test/tint/statements/compound_assign/vector/xor.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct S { - ivec4 a; -}; - -layout(binding = 0, std430) buffer S_1 { +layout(binding = 0, std430) buffer S_ssbo { ivec4 a; } v; + void foo() { v.a = (v.a ^ ivec4(2)); } diff --git a/test/tint/statements/decrement/array_element.wgsl.expected.glsl b/test/tint/statements/decrement/array_element.wgsl.expected.glsl index 74f7390adb..4c9aa9caeb 100644 --- a/test/tint/statements/decrement/array_element.wgsl.expected.glsl +++ b/test/tint/statements/decrement/array_element.wgsl.expected.glsl @@ -4,9 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -layout(binding = 0, std430) buffer a_block_1 { +layout(binding = 0, std430) buffer a_block_ssbo { uint inner[]; } a; + void tint_symbol() { a.inner[1] = (a.inner[1] - 1u); } diff --git a/test/tint/statements/decrement/complex.wgsl.expected.glsl b/test/tint/statements/decrement/complex.wgsl.expected.glsl index a04fd4e9f6..e98dc1ed39 100644 --- a/test/tint/statements/decrement/complex.wgsl.expected.glsl +++ b/test/tint/statements/decrement/complex.wgsl.expected.glsl @@ -8,9 +8,10 @@ struct S { ivec4 a[4]; }; -layout(binding = 0, std430) buffer tint_symbol_block_1 { +layout(binding = 0, std430) buffer tint_symbol_block_ssbo { S inner[]; } tint_symbol; + uint v = 0u; int idx1() { v = (v - 1u); diff --git a/test/tint/statements/decrement/for_loop_continuing.wgsl.expected.glsl b/test/tint/statements/decrement/for_loop_continuing.wgsl.expected.glsl index 21a79501a3..5c48d8fa90 100644 --- a/test/tint/statements/decrement/for_loop_continuing.wgsl.expected.glsl +++ b/test/tint/statements/decrement/for_loop_continuing.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct i_block { - uint inner; -}; - -layout(binding = 0, std430) buffer i_block_1 { +layout(binding = 0, std430) buffer i_block_ssbo { uint inner; } i; + void tint_symbol() { { for(; (i.inner < 10u); i.inner = (i.inner - 1u)) { diff --git a/test/tint/statements/decrement/for_loop_initializer.wgsl.expected.glsl b/test/tint/statements/decrement/for_loop_initializer.wgsl.expected.glsl index 12ce515952..c0f6fbf4fe 100644 --- a/test/tint/statements/decrement/for_loop_initializer.wgsl.expected.glsl +++ b/test/tint/statements/decrement/for_loop_initializer.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct i_block { - uint inner; -}; - -layout(binding = 0, std430) buffer i_block_1 { +layout(binding = 0, std430) buffer i_block_ssbo { uint inner; } i; + void tint_symbol() { { for(i.inner = (i.inner - 1u); (i.inner < 10u); ) { diff --git a/test/tint/statements/decrement/storage.wgsl.expected.glsl b/test/tint/statements/decrement/storage.wgsl.expected.glsl index 88579d1169..a9833d7f55 100644 --- a/test/tint/statements/decrement/storage.wgsl.expected.glsl +++ b/test/tint/statements/decrement/storage.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct i_block { - uint inner; -}; - -layout(binding = 0, std430) buffer i_block_1 { +layout(binding = 0, std430) buffer i_block_ssbo { uint inner; } i; + void tint_symbol() { i.inner = (i.inner - 1u); } diff --git a/test/tint/statements/decrement/vector_component.wgsl.expected.glsl b/test/tint/statements/decrement/vector_component.wgsl.expected.glsl index 908643ebdf..38bf1e1e97 100644 --- a/test/tint/statements/decrement/vector_component.wgsl.expected.glsl +++ b/test/tint/statements/decrement/vector_component.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct a_block { - uvec4 inner; -}; - -layout(binding = 0, std430) buffer a_block_1 { +layout(binding = 0, std430) buffer a_block_ssbo { uvec4 inner; } a; + void tint_symbol() { int tint_symbol_2 = 1; a.inner[tint_symbol_2] = (a.inner[tint_symbol_2] - 1u); diff --git a/test/tint/statements/increment/array_element.wgsl.expected.glsl b/test/tint/statements/increment/array_element.wgsl.expected.glsl index 8c4b54b70c..d5b11d455f 100644 --- a/test/tint/statements/increment/array_element.wgsl.expected.glsl +++ b/test/tint/statements/increment/array_element.wgsl.expected.glsl @@ -4,9 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -layout(binding = 0, std430) buffer a_block_1 { +layout(binding = 0, std430) buffer a_block_ssbo { uint inner[]; } a; + void tint_symbol() { a.inner[1] = (a.inner[1] + 1u); } diff --git a/test/tint/statements/increment/complex.wgsl.expected.glsl b/test/tint/statements/increment/complex.wgsl.expected.glsl index 26c1c10149..ba161e5cb9 100644 --- a/test/tint/statements/increment/complex.wgsl.expected.glsl +++ b/test/tint/statements/increment/complex.wgsl.expected.glsl @@ -8,9 +8,10 @@ struct S { ivec4 a[4]; }; -layout(binding = 0, std430) buffer tint_symbol_block_1 { +layout(binding = 0, std430) buffer tint_symbol_block_ssbo { S inner[]; } tint_symbol; + uint v = 0u; int idx1() { v = (v + 1u); diff --git a/test/tint/statements/increment/for_loop_continuing.wgsl.expected.glsl b/test/tint/statements/increment/for_loop_continuing.wgsl.expected.glsl index 50eb4943cb..ee111785e2 100644 --- a/test/tint/statements/increment/for_loop_continuing.wgsl.expected.glsl +++ b/test/tint/statements/increment/for_loop_continuing.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct i_block { - uint inner; -}; - -layout(binding = 0, std430) buffer i_block_1 { +layout(binding = 0, std430) buffer i_block_ssbo { uint inner; } i; + void tint_symbol() { { for(; (i.inner < 10u); i.inner = (i.inner + 1u)) { diff --git a/test/tint/statements/increment/for_loop_initializer.wgsl.expected.glsl b/test/tint/statements/increment/for_loop_initializer.wgsl.expected.glsl index 77942ca5a4..b4e940bdab 100644 --- a/test/tint/statements/increment/for_loop_initializer.wgsl.expected.glsl +++ b/test/tint/statements/increment/for_loop_initializer.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct i_block { - uint inner; -}; - -layout(binding = 0, std430) buffer i_block_1 { +layout(binding = 0, std430) buffer i_block_ssbo { uint inner; } i; + void tint_symbol() { { for(i.inner = (i.inner + 1u); (i.inner < 10u); ) { diff --git a/test/tint/statements/increment/storage.wgsl.expected.glsl b/test/tint/statements/increment/storage.wgsl.expected.glsl index 3a8266da77..5dc6ea61aa 100644 --- a/test/tint/statements/increment/storage.wgsl.expected.glsl +++ b/test/tint/statements/increment/storage.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct i_block { - uint inner; -}; - -layout(binding = 0, std430) buffer i_block_1 { +layout(binding = 0, std430) buffer i_block_ssbo { uint inner; } i; + void tint_symbol() { i.inner = (i.inner + 1u); } diff --git a/test/tint/statements/increment/vector_component.wgsl.expected.glsl b/test/tint/statements/increment/vector_component.wgsl.expected.glsl index a502a86800..c66efbaa71 100644 --- a/test/tint/statements/increment/vector_component.wgsl.expected.glsl +++ b/test/tint/statements/increment/vector_component.wgsl.expected.glsl @@ -4,13 +4,10 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void unused_entry_point() { return; } -struct a_block { - uvec4 inner; -}; - -layout(binding = 0, std430) buffer a_block_1 { +layout(binding = 0, std430) buffer a_block_ssbo { uvec4 inner; } a; + void tint_symbol() { int tint_symbol_2 = 1; a.inner[tint_symbol_2] = (a.inner[tint_symbol_2] + 1u); diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.glsl index e7e10eef63..cca5043c88 100644 --- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.glsl +++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.glsl @@ -8,23 +8,15 @@ struct strided_arr { float el; }; -struct buf1 { - strided_arr x_GLF_uniform_float_values[3]; -}; - struct strided_arr_1 { int el; }; -struct buf0 { - strided_arr_1 x_GLF_uniform_int_values[4]; -}; - -layout(binding = 1) uniform buf1_1 { +layout(binding = 1) uniform buf1_ubo { strided_arr x_GLF_uniform_float_values[3]; } x_6; -layout(binding = 0) uniform buf0_1 { +layout(binding = 0) uniform buf0_ubo { strided_arr_1 x_GLF_uniform_int_values[4]; } x_8; @@ -115,9 +107,9 @@ void main() { return; } Error parsing GLSL shader: -ERROR: 0:77: '[' : matrix index out of range '4' -ERROR: 0:77: '=' : cannot convert from ' temp mediump 3-component vector of float' to ' temp mediump float' -ERROR: 0:77: '' : compilation terminated +ERROR: 0:69: '[' : matrix index out of range '4' +ERROR: 0:69: '=' : cannot convert from ' temp mediump 3-component vector of float' to ' temp mediump float' +ERROR: 0:69: '' : compilation terminated ERROR: 3 compilation errors. No code generated. diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.glsl index e7e10eef63..cca5043c88 100644 --- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.glsl +++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.glsl @@ -8,23 +8,15 @@ struct strided_arr { float el; }; -struct buf1 { - strided_arr x_GLF_uniform_float_values[3]; -}; - struct strided_arr_1 { int el; }; -struct buf0 { - strided_arr_1 x_GLF_uniform_int_values[4]; -}; - -layout(binding = 1) uniform buf1_1 { +layout(binding = 1) uniform buf1_ubo { strided_arr x_GLF_uniform_float_values[3]; } x_6; -layout(binding = 0) uniform buf0_1 { +layout(binding = 0) uniform buf0_ubo { strided_arr_1 x_GLF_uniform_int_values[4]; } x_8; @@ -115,9 +107,9 @@ void main() { return; } Error parsing GLSL shader: -ERROR: 0:77: '[' : matrix index out of range '4' -ERROR: 0:77: '=' : cannot convert from ' temp mediump 3-component vector of float' to ' temp mediump float' -ERROR: 0:77: '' : compilation terminated +ERROR: 0:69: '[' : matrix index out of range '4' +ERROR: 0:69: '=' : cannot convert from ' temp mediump 3-component vector of float' to ' temp mediump float' +ERROR: 0:69: '' : compilation terminated ERROR: 3 compilation errors. No code generated. diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.glsl index cfdb6b161f..76ec7b3fb4 100644 --- a/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.glsl +++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.glsl @@ -8,23 +8,15 @@ struct strided_arr { float el; }; -struct buf1 { - strided_arr x_GLF_uniform_float_values[2]; -}; - struct strided_arr_1 { int el; }; -struct buf0 { - strided_arr_1 x_GLF_uniform_int_values[3]; -}; - -layout(binding = 1) uniform buf1_1 { +layout(binding = 1) uniform buf1_ubo { strided_arr x_GLF_uniform_float_values[2]; } x_6; -layout(binding = 0) uniform buf0_1 { +layout(binding = 0) uniform buf0_ubo { strided_arr_1 x_GLF_uniform_int_values[3]; } x_8; @@ -83,8 +75,8 @@ void main() { return; } Error parsing GLSL shader: -ERROR: 0:38: '[' : matrix index out of range '3' -ERROR: 0:38: '' : compilation terminated +ERROR: 0:30: '[' : matrix index out of range '3' +ERROR: 0:30: '' : compilation terminated ERROR: 2 compilation errors. No code generated. diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.glsl index cfdb6b161f..76ec7b3fb4 100644 --- a/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.glsl +++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.glsl @@ -8,23 +8,15 @@ struct strided_arr { float el; }; -struct buf1 { - strided_arr x_GLF_uniform_float_values[2]; -}; - struct strided_arr_1 { int el; }; -struct buf0 { - strided_arr_1 x_GLF_uniform_int_values[3]; -}; - -layout(binding = 1) uniform buf1_1 { +layout(binding = 1) uniform buf1_ubo { strided_arr x_GLF_uniform_float_values[2]; } x_6; -layout(binding = 0) uniform buf0_1 { +layout(binding = 0) uniform buf0_ubo { strided_arr_1 x_GLF_uniform_int_values[3]; } x_8; @@ -83,8 +75,8 @@ void main() { return; } Error parsing GLSL shader: -ERROR: 0:38: '[' : matrix index out of range '3' -ERROR: 0:38: '' : compilation terminated +ERROR: 0:30: '[' : matrix index out of range '3' +ERROR: 0:30: '' : compilation terminated ERROR: 2 compilation errors. No code generated.