tint/writer/wgsl: Print @offset attributes as comment

We use WGSL to visualize the AST. Make sure we don't hide anything.

Bug: tint:1776
Change-Id: Iedd7ca797fb745d9db7d0aba8a5718039241afbb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112602
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Ben Clayton <bclayton@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
This commit is contained in:
Ben Clayton 2022-12-01 17:37:56 +00:00 committed by Dawn LUCI CQ
parent f745e4e2bf
commit efb17b0254
74 changed files with 240 additions and 1 deletions

View File

@ -953,7 +953,9 @@ TEST_F(SpvParserMemoryTest, RemapStorageBuffer_TypesAndVarDeclarations) {
EXPECT_THAT(module_str, HasSubstr(R"(type RTArr = @stride(4) array<u32>; EXPECT_THAT(module_str, HasSubstr(R"(type RTArr = @stride(4) array<u32>;
struct S { struct S {
/* @offset(0) */
field0 : u32, field0 : u32,
/* @offset(4) */
field1 : RTArr, field1 : RTArr,
} }

View File

@ -1254,8 +1254,11 @@ TEST_F(SpvModuleScopeVarParserTest, StructMember_NonReadableDecoration_Dropped)
EXPECT_THAT(module_str, HasSubstr(R"(type Arr = @stride(4) array<u32, 2u>; EXPECT_THAT(module_str, HasSubstr(R"(type Arr = @stride(4) array<u32, 2u>;
struct S { struct S {
/* @offset(0) */
field0 : u32, field0 : u32,
/* @offset(4) */
field1 : f32, field1 : f32,
/* @offset(8) */
field2 : Arr, field2 : Arr,
} }
@ -1286,6 +1289,7 @@ TEST_F(SpvModuleScopeVarParserTest, ColMajorDecoration_Dropped) {
EXPECT_TRUE(p->error().empty()); EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program()); const auto module_str = test::ToString(p->program());
EXPECT_THAT(module_str, HasSubstr(R"(struct S { EXPECT_THAT(module_str, HasSubstr(R"(struct S {
/* @offset(0) */
field0 : mat3x2<f32>, field0 : mat3x2<f32>,
} }
@ -1316,6 +1320,7 @@ TEST_F(SpvModuleScopeVarParserTest, MatrixStrideDecoration_Natural_Dropped) {
EXPECT_TRUE(p->error().empty()); EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program()); const auto module_str = test::ToString(p->program());
EXPECT_THAT(module_str, HasSubstr(R"(struct S { EXPECT_THAT(module_str, HasSubstr(R"(struct S {
/* @offset(0) */
field0 : mat3x2<f32>, field0 : mat3x2<f32>,
} }
@ -1346,6 +1351,7 @@ TEST_F(SpvModuleScopeVarParserTest, MatrixStrideDecoration) {
EXPECT_TRUE(p->error().empty()); EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program()); const auto module_str = test::ToString(p->program());
EXPECT_THAT(module_str, HasSubstr(R"(struct S { EXPECT_THAT(module_str, HasSubstr(R"(struct S {
/* @offset(0) */
@stride(64) @internal(disable_validation__ignore_stride) @stride(64) @internal(disable_validation__ignore_stride)
field0 : mat3x2<f32>, field0 : mat3x2<f32>,
} }
@ -1399,7 +1405,9 @@ TEST_F(SpvModuleScopeVarParserTest, StorageBuffer_NonWritable_AllMembers) {
EXPECT_TRUE(p->error().empty()); EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program()); const auto module_str = test::ToString(p->program());
EXPECT_THAT(module_str, HasSubstr(R"(struct S { EXPECT_THAT(module_str, HasSubstr(R"(struct S {
/* @offset(0) */
field0 : f32, field0 : f32,
/* @offset(4) */
field1 : f32, field1 : f32,
} }
@ -1428,7 +1436,9 @@ TEST_F(SpvModuleScopeVarParserTest, StorageBuffer_NonWritable_NotAllMembers) {
EXPECT_TRUE(p->error().empty()); EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program()); const auto module_str = test::ToString(p->program());
EXPECT_THAT(module_str, HasSubstr(R"(struct S { EXPECT_THAT(module_str, HasSubstr(R"(struct S {
/* @offset(0) */
field0 : f32, field0 : f32,
/* @offset(4) */
field1 : f32, field1 : f32,
} }
@ -1459,7 +1469,9 @@ TEST_F(SpvModuleScopeVarParserTest,
EXPECT_TRUE(p->error().empty()); EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program()); const auto module_str = test::ToString(p->program());
EXPECT_THAT(module_str, HasSubstr(R"(struct S { EXPECT_THAT(module_str, HasSubstr(R"(struct S {
/* @offset(0) */
field0 : f32, field0 : f32,
/* @offset(4) */
field1 : f32, field1 : f32,
} }

View File

@ -90,6 +90,7 @@ TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix) {
struct S { struct S {
@size(16) @size(16)
padding : u32, padding : u32,
/* @offset(16) */
m : @stride(32) array<vec2<f32>, 2u>, m : @stride(32) array<vec2<f32>, 2u>,
} }
@ -147,6 +148,7 @@ TEST_F(DecomposeStridedMatrixTest, ReadUniformColumn) {
struct S { struct S {
@size(16) @size(16)
padding : u32, padding : u32,
/* @offset(16) */
m : @stride(32) array<vec2<f32>, 2u>, m : @stride(32) array<vec2<f32>, 2u>,
} }
@ -199,6 +201,7 @@ TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix_DefaultStride) {
struct S { struct S {
@size(16) @size(16)
padding : u32, padding : u32,
/* @offset(16u) */
@stride(8) @internal(disable_validation__ignore_stride) @stride(8) @internal(disable_validation__ignore_stride)
m : mat2x2<f32>, m : mat2x2<f32>,
} }
@ -253,6 +256,7 @@ TEST_F(DecomposeStridedMatrixTest, ReadStorageMatrix) {
struct S { struct S {
@size(8) @size(8)
padding : u32, padding : u32,
/* @offset(8) */
m : @stride(32) array<vec2<f32>, 2u>, m : @stride(32) array<vec2<f32>, 2u>,
} }
@ -311,6 +315,7 @@ TEST_F(DecomposeStridedMatrixTest, ReadStorageColumn) {
struct S { struct S {
@size(16) @size(16)
padding : u32, padding : u32,
/* @offset(16) */
m : @stride(32) array<vec2<f32>, 2u>, m : @stride(32) array<vec2<f32>, 2u>,
} }
@ -365,6 +370,7 @@ TEST_F(DecomposeStridedMatrixTest, WriteStorageMatrix) {
struct S { struct S {
@size(8) @size(8)
padding : u32, padding : u32,
/* @offset(8) */
m : @stride(32) array<vec2<f32>, 2u>, m : @stride(32) array<vec2<f32>, 2u>,
} }
@ -422,6 +428,7 @@ TEST_F(DecomposeStridedMatrixTest, WriteStorageColumn) {
struct S { struct S {
@size(8) @size(8)
padding : u32, padding : u32,
/* @offset(8) */
m : @stride(32) array<vec2<f32>, 2u>, m : @stride(32) array<vec2<f32>, 2u>,
} }
@ -487,6 +494,7 @@ TEST_F(DecomposeStridedMatrixTest, ReadWriteViaPointerLets) {
struct S { struct S {
@size(8) @size(8)
padding : u32, padding : u32,
/* @offset(8) */
m : @stride(32) array<vec2<f32>, 2u>, m : @stride(32) array<vec2<f32>, 2u>,
} }
@ -551,6 +559,7 @@ TEST_F(DecomposeStridedMatrixTest, ReadPrivateMatrix) {
struct S { struct S {
@size(8) @size(8)
padding : u32, padding : u32,
/* @offset(8u) */
@stride(32) @internal(disable_validation__ignore_stride) @stride(32) @internal(disable_validation__ignore_stride)
m : mat2x2<f32>, m : mat2x2<f32>,
} }
@ -605,6 +614,7 @@ TEST_F(DecomposeStridedMatrixTest, WritePrivateMatrix) {
struct S { struct S {
@size(8) @size(8)
padding : u32, padding : u32,
/* @offset(8u) */
@stride(32) @internal(disable_validation__ignore_stride) @stride(32) @internal(disable_validation__ignore_stride)
m : mat2x2<f32>, m : mat2x2<f32>,
} }

View File

@ -623,7 +623,14 @@ bool GeneratorImpl::EmitStructType(const ast::Struct* str) {
utils::Vector<const ast::Attribute*, 4> attributes_sanitized; utils::Vector<const ast::Attribute*, 4> attributes_sanitized;
attributes_sanitized.Reserve(mem->attributes.Length()); attributes_sanitized.Reserve(mem->attributes.Length());
for (auto* attr : mem->attributes) { for (auto* attr : mem->attributes) {
if (!attr->Is<ast::StructMemberOffsetAttribute>()) { if (attr->Is<ast::StructMemberOffsetAttribute>()) {
auto l = line();
l << "/* ";
if (!EmitAttributes(l, utils::Vector{attr})) {
return false;
}
l << " */";
} else {
attributes_sanitized.Push(attr); attributes_sanitized.Push(attr);
} }
} }
@ -792,6 +799,14 @@ bool GeneratorImpl::EmitAttributes(std::ostream& out,
out << ")"; out << ")";
return true; return true;
}, },
[&](const ast::StructMemberOffsetAttribute* offset) {
out << "offset(";
if (!EmitExpression(out, offset->expr)) {
return false;
}
out << ")";
return true;
},
[&](const ast::StructMemberSizeAttribute* size) { [&](const ast::StructMemberSizeAttribute* size) {
out << "size("; out << "size(";
if (!EmitExpression(out, size->expr)) { if (!EmitExpression(out, size->expr)) {

View File

@ -188,9 +188,11 @@ TEST_F(WgslGeneratorImplTest, EmitType_StructOffsetDecl) {
EXPECT_EQ(gen.result(), R"(struct S { EXPECT_EQ(gen.result(), R"(struct S {
@size(8) @size(8)
padding : u32, padding : u32,
/* @offset(8) */
a : i32, a : i32,
@size(4) @size(4)
padding_1 : u32, padding_1 : u32,
/* @offset(16) */
b : f32, b : f32,
} }
)"); )");
@ -209,9 +211,11 @@ TEST_F(WgslGeneratorImplTest, EmitType_StructOffsetDecl_WithSymbolCollisions) {
EXPECT_EQ(gen.result(), R"(struct S { EXPECT_EQ(gen.result(), R"(struct S {
@size(8) @size(8)
padding : u32, padding : u32,
/* @offset(8) */
tint_0_padding : i32, tint_0_padding : i32,
@size(4) @size(4)
padding_1 : u32, padding_1 : u32,
/* @offset(16) */
tint_2_padding : f32, tint_2_padding : f32,
} }
)"); )");

View File

@ -15,6 +15,7 @@ struct strided_arr_1 {
type Arr_2 = array<strided_arr_1, 4u>; type Arr_2 = array<strided_arr_1, 4u>;
struct S { struct S {
/* @offset(0) */
a : Arr_2, a : Arr_2,
} }

View File

@ -1,4 +1,5 @@
struct buf0 { struct buf0 {
/* @offset(0) */
r : vec4<f32>, r : vec4<f32>,
} }

View File

@ -8,11 +8,15 @@ struct strided_arr {
type Arr_1 = array<strided_arr, 4u>; type Arr_1 = array<strided_arr, 4u>;
struct LeftOver { struct LeftOver {
/* @offset(0) */
worldViewProjection : mat4x4<f32>, worldViewProjection : mat4x4<f32>,
/* @offset(64) */
time : f32, time : f32,
@size(12) @size(12)
padding : u32, padding : u32,
/* @offset(80) */
test2 : Arr, test2 : Arr,
/* @offset(208) */
test : Arr_1, test : Arr_1,
} }

View File

@ -1,11 +1,15 @@
struct UniformBuffer { struct UniformBuffer {
@size(16) @size(16)
padding : u32, padding : u32,
/* @offset(16) */
unknownInput_S1_c0 : f32, unknownInput_S1_c0 : f32,
@size(12) @size(12)
padding_1 : u32, padding_1 : u32,
/* @offset(32) */
ucolorRed_S1_c0 : vec4<f32>, ucolorRed_S1_c0 : vec4<f32>,
/* @offset(48) */
ucolorGreen_S1_c0 : vec4<f32>, ucolorGreen_S1_c0 : vec4<f32>,
/* @offset(64) */
umatrix_S1 : mat3x3<f32>, umatrix_S1 : mat3x3<f32>,
} }

View File

@ -1,13 +1,18 @@
type Arr = array<i32, 6u>; type Arr = array<i32, 6u>;
struct sspp962805860buildInformationS { struct sspp962805860buildInformationS {
/* @offset(0) */
footprint : vec4<f32>, footprint : vec4<f32>,
/* @offset(16) */
offset : vec4<f32>, offset : vec4<f32>,
/* @offset(32) */
essence : i32, essence : i32,
/* @offset(36) */
orientation : Arr, orientation : Arr,
} }
struct x_B4_BuildInformation { struct x_B4_BuildInformation {
/* @offset(0) */
passthru : sspp962805860buildInformationS, passthru : sspp962805860buildInformationS,
} }

View File

@ -3,22 +3,28 @@ type RTArr = array<f32>;
type RTArr_1 = array<f32>; type RTArr_1 = array<f32>;
struct ResultMatrix { struct ResultMatrix {
/* @offset(0) */
numbers : RTArr_1, numbers : RTArr_1,
} }
type RTArr_2 = array<f32>; type RTArr_2 = array<f32>;
struct FirstMatrix { struct FirstMatrix {
/* @offset(0) */
numbers : RTArr_1, numbers : RTArr_1,
} }
struct SecondMatrix { struct SecondMatrix {
/* @offset(0) */
numbers : RTArr_1, numbers : RTArr_1,
} }
struct Uniforms { struct Uniforms {
/* @offset(0) */
NAN : f32, NAN : f32,
/* @offset(4) */
sizeA : i32, sizeA : i32,
/* @offset(8) */
sizeB : i32, sizeB : i32,
} }

View File

@ -1,12 +1,18 @@
struct S_atomic { struct S_atomic {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
a : atomic<u32>, a : atomic<u32>,
/* @offset(8) */
y : u32, y : u32,
} }
struct S { struct S {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
a : u32, a : u32,
/* @offset(8) */
y : u32, y : u32,
} }

View File

@ -1,12 +1,18 @@
struct S_atomic { struct S_atomic {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
a : atomic<u32>, a : atomic<u32>,
/* @offset(8) */
b : atomic<u32>, b : atomic<u32>,
} }
struct S { struct S {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
a : u32, a : u32,
/* @offset(8) */
b : u32, b : u32,
} }

View File

@ -1,12 +1,18 @@
struct S_atomic { struct S_atomic {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
a : atomic<u32>, a : atomic<u32>,
/* @offset(8) */
y : u32, y : u32,
} }
struct S { struct S {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
a : u32, a : u32,
/* @offset(8) */
y : u32, y : u32,
} }

View File

@ -1,42 +1,66 @@
struct S0_atomic { struct S0_atomic {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
a : atomic<u32>, a : atomic<u32>,
/* @offset(8) */
y : i32, y : i32,
/* @offset(12) */
z : i32, z : i32,
} }
struct S0 { struct S0 {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
a : u32, a : u32,
/* @offset(8) */
y : i32, y : i32,
/* @offset(12) */
z : i32, z : i32,
} }
struct S1_atomic { struct S1_atomic {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
a : S0_atomic, a : S0_atomic,
/* @offset(20) */
y : i32, y : i32,
/* @offset(24) */
z : i32, z : i32,
} }
struct S1 { struct S1 {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
a : S0, a : S0,
/* @offset(20) */
y : i32, y : i32,
/* @offset(24) */
z : i32, z : i32,
} }
struct S2_atomic { struct S2_atomic {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
y : i32, y : i32,
/* @offset(8) */
z : i32, z : i32,
/* @offset(12) */
a : S1_atomic, a : S1_atomic,
} }
struct S2 { struct S2 {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
y : i32, y : i32,
/* @offset(8) */
z : i32, z : i32,
/* @offset(12) */
a : S1, a : S1,
} }

View File

@ -1,14 +1,20 @@
type Arr = array<u32, 10u>; type Arr = array<u32, 10u>;
struct S_atomic { struct S_atomic {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
a : array<atomic<u32>, 10u>, a : array<atomic<u32>, 10u>,
/* @offset(44) */
y : u32, y : u32,
} }
struct S { struct S {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
a : Arr, a : Arr,
/* @offset(44) */
y : u32, y : u32,
} }

View File

@ -1,12 +1,18 @@
struct S_atomic { struct S_atomic {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
a : atomic<u32>, a : atomic<u32>,
/* @offset(8) */
y : u32, y : u32,
} }
struct S { struct S {
/* @offset(0) */
x : i32, x : i32,
/* @offset(4) */
a : u32, a : u32,
/* @offset(8) */
y : u32, y : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,13 +1,17 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }
struct x__atomic_compare_exchange_resulti32 { struct x__atomic_compare_exchange_resulti32 {
/* @offset(0) */
old_value : i32, old_value : i32,
/* @offset(4) */
exchanged : bool, exchanged : bool,
} }

View File

@ -1,13 +1,17 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }
struct x__atomic_compare_exchange_resultu32 { struct x__atomic_compare_exchange_resultu32 {
/* @offset(0) */
old_value : u32, old_value : u32,
/* @offset(4) */
exchanged : bool, exchanged : bool,
} }

View File

@ -1,5 +1,7 @@
struct x__atomic_compare_exchange_resulti32 { struct x__atomic_compare_exchange_resulti32 {
/* @offset(0) */
old_value : i32, old_value : i32,
/* @offset(4) */
exchanged : bool, exchanged : bool,
} }

View File

@ -1,5 +1,7 @@
struct x__atomic_compare_exchange_resultu32 { struct x__atomic_compare_exchange_resultu32 {
/* @offset(0) */
old_value : u32, old_value : u32,
/* @offset(4) */
exchanged : bool, exchanged : bool,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,13 +1,17 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }
struct x__atomic_compare_exchange_resulti32 { struct x__atomic_compare_exchange_resulti32 {
/* @offset(0) */
old_value : i32, old_value : i32,
/* @offset(4) */
exchanged : bool, exchanged : bool,
} }

View File

@ -1,13 +1,17 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }
struct x__atomic_compare_exchange_resultu32 { struct x__atomic_compare_exchange_resultu32 {
/* @offset(0) */
old_value : u32, old_value : u32,
/* @offset(4) */
exchanged : bool, exchanged : bool,
} }

View File

@ -1,5 +1,7 @@
struct x__atomic_compare_exchange_resulti32 { struct x__atomic_compare_exchange_resulti32 {
/* @offset(0) */
old_value : i32, old_value : i32,
/* @offset(4) */
exchanged : bool, exchanged : bool,
} }

View File

@ -1,5 +1,7 @@
struct x__atomic_compare_exchange_resultu32 { struct x__atomic_compare_exchange_resultu32 {
/* @offset(0) */
old_value : u32, old_value : u32,
/* @offset(4) */
exchanged : bool, exchanged : bool,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<i32>, arg_0 : atomic<i32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : i32, arg_0 : i32,
} }

View File

@ -1,8 +1,10 @@
struct SB_RW_atomic { struct SB_RW_atomic {
/* @offset(0) */
arg_0 : atomic<u32>, arg_0 : atomic<u32>,
} }
struct SB_RW { struct SB_RW {
/* @offset(0) */
arg_0 : u32, arg_0 : u32,
} }

View File

@ -4,6 +4,7 @@ struct strided_arr {
} }
struct SSBO { struct SSBO {
/* @offset(0) */
m : array<strided_arr, 2u>, m : array<strided_arr, 2u>,
} }