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

View File

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

View File

@ -623,7 +623,14 @@ bool GeneratorImpl::EmitStructType(const ast::Struct* str) {
utils::Vector<const ast::Attribute*, 4> attributes_sanitized;
attributes_sanitized.Reserve(mem->attributes.Length());
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);
}
}
@ -792,6 +799,14 @@ bool GeneratorImpl::EmitAttributes(std::ostream& out,
out << ")";
return true;
},
[&](const ast::StructMemberOffsetAttribute* offset) {
out << "offset(";
if (!EmitExpression(out, offset->expr)) {
return false;
}
out << ")";
return true;
},
[&](const ast::StructMemberSizeAttribute* size) {
out << "size(";
if (!EmitExpression(out, size->expr)) {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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