Skip to content

Commit

Permalink
GLSL: put std430 packing on all buffer variables.
Browse files Browse the repository at this point in the history
This is not 100% correct (the exceptions for mat2 and friends are not
implemented yet), but gets more tests passing in Dawn.

Bug: tint:1415
Change-Id: Ia11c63a5236f35e724431a65ddb6ef3c598775d0
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/79380
Kokoro: Kokoro <[email protected]>
Reviewed-by: David Neto <[email protected]>
Commit-Queue: Stephen White <[email protected]>
  • Loading branch information
SenorBlanco authored and Tint LUCI CQ committed Feb 4, 2022
1 parent c6d967b commit 46647f1
Show file tree
Hide file tree
Showing 199 changed files with 539 additions and 536 deletions.
2 changes: 1 addition & 1 deletion src/writer/glsl/generator_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1752,7 +1752,7 @@ bool GeneratorImpl::EmitStorageVariable(const sem::Variable* var) {
return false;
}
ast::VariableBindingPoint bp = decl->BindingPoint();
line() << "layout(binding = " << bp.binding->value << ") buffer "
line() << "layout(binding = " << bp.binding->value << ", std430) buffer "
<< UniqueIdentifier(StructName(str)) << " {";
EmitStructMembers(current_buffer_, str);
auto name = builder_.Symbols().NameFor(decl->symbol);
Expand Down
12 changes: 6 additions & 6 deletions src/writer/glsl/generator_impl_function_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,7 @@ struct Data {
float b;
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
int a;
float b;
} coord;
Expand Down Expand Up @@ -523,7 +523,7 @@ struct Data {
float b;
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
int a;
float b;
} coord;
Expand Down Expand Up @@ -574,7 +574,7 @@ struct Data {
float b;
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
int a;
float b;
} coord;
Expand Down Expand Up @@ -626,7 +626,7 @@ struct Data {
float b;
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
int a;
float b;
} coord;
Expand Down Expand Up @@ -733,7 +733,7 @@ struct S {
float x;
};
layout(binding = 0) buffer S_1 {
layout(binding = 0, std430) buffer S_1 {
float x;
} coord;
float sub_func(float param) {
Expand Down Expand Up @@ -980,7 +980,7 @@ struct Data {
float d;
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
float d;
} data;
void a() {
Expand Down
22 changes: 11 additions & 11 deletions src/writer/glsl/generator_impl_member_accessor_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ struct Data {
mat2x3 b;
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
int a;
mat2x3 b;
} data;
Expand Down Expand Up @@ -347,7 +347,7 @@ struct Data {
mat4x3 a;
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
float z;
mat4x3 a;
} data;
Expand Down Expand Up @@ -393,7 +393,7 @@ struct Data {
int a[5];
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
float z;
int a[5];
} data;
Expand Down Expand Up @@ -440,7 +440,7 @@ struct Data {
int a[5];
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
float z;
int a[5];
} data;
Expand Down Expand Up @@ -484,7 +484,7 @@ struct Data {
int a[5];
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
float z;
int a[5];
} data;
Expand Down Expand Up @@ -543,7 +543,7 @@ struct Data {
Inner c[4];
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
Inner c[4];
} data;
void tint_symbol() {
Expand Down Expand Up @@ -604,7 +604,7 @@ struct Data {
Inner c[4];
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
Inner c[4];
} data;
void tint_symbol() {
Expand Down Expand Up @@ -665,7 +665,7 @@ struct Data {
Inner c[4];
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
Inner c[4];
} data;
void tint_symbol() {
Expand Down Expand Up @@ -726,7 +726,7 @@ struct Data {
Inner c[4];
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
Inner c[4];
} data;
void tint_symbol() {
Expand Down Expand Up @@ -783,7 +783,7 @@ struct Data {
Inner c[4];
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
Inner c[4];
} data;
void tint_symbol() {
Expand Down Expand Up @@ -844,7 +844,7 @@ struct Data {
Inner c[4];
};
layout(binding = 0) buffer Data_1 {
layout(binding = 0, std430) buffer Data_1 {
Inner c[4];
} data;
void tint_symbol() {
Expand Down
6 changes: 3 additions & 3 deletions src/writer/glsl/generator_impl_sanitizer_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ TEST_F(GlslSanitizerTest, Call_ArrayLength) {
auto* expect = R"(#version 310 es
precision mediump float;
layout(binding = 1) buffer my_struct_1 {
layout(binding = 1, std430) buffer my_struct_1 {
float a[];
} b;
void a_func() {
Expand Down Expand Up @@ -99,7 +99,7 @@ TEST_F(GlslSanitizerTest, Call_ArrayLength_OtherMembersInStruct) {
auto* expect = R"(#version 310 es
precision mediump float;
layout(binding = 1) buffer my_struct_1 {
layout(binding = 1, std430) buffer my_struct_1 {
float z;
float a[];
} b;
Expand Down Expand Up @@ -150,7 +150,7 @@ TEST_F(GlslSanitizerTest, Call_ArrayLength_ViaLets) {
auto* expect = R"(#version 310 es
precision mediump float;
layout(binding = 1) buffer my_struct_1 {
layout(binding = 1, std430) buffer my_struct_1 {
float a[];
} b;
void a_func() {
Expand Down
2 changes: 1 addition & 1 deletion test/array/assign_to_function_var.wgsl.expected.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ layout(binding = 0) uniform S_1 {
ivec4 arr[4];
} src_uniform;

layout(binding = 1) buffer S_2 {
layout(binding = 1, std430) buffer S_2 {
ivec4 arr[4];
} src_storage;
ivec4[4] ret_arr() {
Expand Down
2 changes: 1 addition & 1 deletion test/array/assign_to_private_var.wgsl.expected.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ layout(binding = 0) uniform S_1 {
ivec4 arr[4];
} src_uniform;

layout(binding = 1) buffer S_2 {
layout(binding = 1, std430) buffer S_2 {
ivec4 arr[4];
} 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));
Expand Down
6 changes: 3 additions & 3 deletions test/array/assign_to_storage_var.wgsl.expected.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ layout(binding = 0) uniform S_1 {
ivec4 arr[4];
} src_uniform;

layout(binding = 1) buffer S_2 {
layout(binding = 1, std430) buffer S_2 {
ivec4 arr[4];
} src_storage;
layout(binding = 2) buffer S_3 {
layout(binding = 2, std430) buffer S_3 {
ivec4 arr[4];
} dst;
layout(binding = 3) buffer S_nested_1 {
layout(binding = 3, std430) buffer S_nested_1 {
int arr[4][3][2];
} dst_nested;
ivec4[4] ret_arr() {
Expand Down
2 changes: 1 addition & 1 deletion test/array/assign_to_workgroup_var.wgsl.expected.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ layout(binding = 0) uniform S_1 {
ivec4 arr[4];
} src_uniform;

layout(binding = 1) buffer S_2 {
layout(binding = 1, std430) buffer S_2 {
ivec4 arr[4];
} src_storage;
shared ivec4 dst[4];
Expand Down
2 changes: 1 addition & 1 deletion test/array/strides.spvasm.expected.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ struct S {
strided_arr_1 a[4];
};

layout(binding = 0) buffer S_1 {
layout(binding = 0, std430) buffer S_1 {
strided_arr_1 a[4];
} s;
void f_1() {
Expand Down
10 changes: 5 additions & 5 deletions test/benchmark/particles.wgsl.expected.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ layout(binding = 0) uniform SimulationParams_1 {
vec4 seed;
} sim_params;

layout(binding = 1) buffer Particles_1 {
layout(binding = 1, std430) buffer Particles_1 {
Particle particles[];
} data;
struct UBO {
Expand Down Expand Up @@ -257,10 +257,10 @@ layout(binding = 3) uniform UBO_1 {
uint width;
} ubo;

layout(binding = 4) buffer Buffer_1 {
layout(binding = 4, std430) buffer Buffer_1 {
float weights[];
} buf_in;
layout(binding = 5) buffer Buffer_2 {
layout(binding = 5, std430) buffer Buffer_2 {
float weights[];
} buf_out;
uniform highp sampler2D tex_in_1;
Expand Down Expand Up @@ -315,10 +315,10 @@ layout(binding = 3) uniform UBO_1 {
uint width;
} ubo;

layout(binding = 4) buffer Buffer_1 {
layout(binding = 4, std430) buffer Buffer_1 {
float weights[];
} buf_in;
layout(binding = 5) buffer Buffer_2 {
layout(binding = 5, std430) buffer Buffer_2 {
float weights[];
} buf_out;
layout(rgba8) uniform highp writeonly image2D tex_out;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ struct ClusterLightGroup {
uint indices[1769472];
};

layout(binding = 1) buffer ClusterLightGroup_1 {
layout(binding = 1, std430) buffer ClusterLightGroup_1 {
uint offset;
ClusterLights lights[27648];
uint indices[1769472];
Expand All @@ -69,7 +69,7 @@ struct Light {
float intensity;
};

layout(binding = 2) buffer GlobalLights_1 {
layout(binding = 2, std430) buffer GlobalLights_1 {
vec3 ambient;
vec3 dirColor;
float dirIntensity;
Expand All @@ -94,7 +94,7 @@ uint getClusterIndex(vec4 fragCoord) {
return ((tile.x + (tile.y * tileCount.x)) + ((tile.z * tileCount.x) * tileCount.y));
}

layout(binding = 6) buffer LightShadowTable_1 {
layout(binding = 6, std430) buffer LightShadowTable_1 {
int light[];
} lightShadowTable;
vec2 shadowSampleOffsets[16] = vec2[16](vec2(-1.5f, -1.5f), vec2(-1.5f, -0.5f), vec2(-1.5f, 0.5f), vec2(-1.5f, 1.5f), vec2(-0.5f, -1.5f), vec2(-0.5f, -0.5f), vec2(-0.5f, 0.5f), vec2(-0.5f, 1.5f), vec2(0.5f, -1.5f), vec2(0.5f, -0.5f), vec2(0.5f, 0.5f), vec2(0.5f, 1.5f), vec2(1.5f, -1.5f), vec2(1.5f, -0.5f), vec2(1.5f, 0.5f), vec2(1.5f, 1.5f));
Expand All @@ -104,7 +104,7 @@ struct ShadowProperties {
mat4 viewProj;
};

layout(binding = 7) buffer LightShadows_1 {
layout(binding = 7, std430) buffer LightShadows_1 {
ShadowProperties properties[];
} shadow;
uniform highp sampler2D shadowTexture_1;
Expand Down
2 changes: 1 addition & 1 deletion test/buffer/storage/dynamic_index/read.wgsl.expected.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ struct Inner {
ivec4 i[4];
};

layout(binding = 0) buffer S_1 {
layout(binding = 0, std430) buffer S_1 {
Inner arr[];
} s;
void tint_symbol(uint idx) {
Expand Down
2 changes: 1 addition & 1 deletion test/buffer/storage/dynamic_index/write.wgsl.expected.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ struct Inner {
ivec4 i[4];
};

layout(binding = 0) buffer S_1 {
layout(binding = 0, std430) buffer S_1 {
Inner arr[];
} s;
void tint_symbol(uint idx) {
Expand Down
2 changes: 1 addition & 1 deletion test/buffer/storage/static_index/read.wgsl.expected.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ struct S {
Inner j[4];
};

layout(binding = 0) buffer S_1 {
layout(binding = 0, std430) buffer S_1 {
ivec3 a;
int b;
uvec3 c;
Expand Down
2 changes: 1 addition & 1 deletion test/buffer/storage/static_index/write.wgsl.expected.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ struct S {
Inner j[4];
};

layout(binding = 0) buffer S_1 {
layout(binding = 0, std430) buffer S_1 {
ivec3 a;
int b;
uvec3 c;
Expand Down
4 changes: 2 additions & 2 deletions test/buffer/storage/types/array.wgsl.expected.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ struct tint_symbol_block {
float inner[4];
};

layout(binding = 0) buffer tint_symbol_block_1 {
layout(binding = 0, std430) buffer tint_symbol_block_1 {
float inner[4];
} tint_symbol;
layout(binding = 1) buffer tint_symbol_block_2 {
layout(binding = 1, std430) buffer tint_symbol_block_2 {
float inner[4];
} tint_symbol_1;
void tint_symbol_2() {
Expand Down
4 changes: 2 additions & 2 deletions test/buffer/storage/types/f32.wgsl.expected.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ struct tint_symbol_block {
float inner;
};

layout(binding = 0) buffer tint_symbol_block_1 {
layout(binding = 0, std430) buffer tint_symbol_block_1 {
float inner;
} tint_symbol;
layout(binding = 1) buffer tint_symbol_block_2 {
layout(binding = 1, std430) buffer tint_symbol_block_2 {
float inner;
} tint_symbol_1;
void tint_symbol_2() {
Expand Down
4 changes: 2 additions & 2 deletions test/buffer/storage/types/i32.wgsl.expected.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ struct tint_symbol_block {
int inner;
};

layout(binding = 0) buffer tint_symbol_block_1 {
layout(binding = 0, std430) buffer tint_symbol_block_1 {
int inner;
} tint_symbol;
layout(binding = 1) buffer tint_symbol_block_2 {
layout(binding = 1, std430) buffer tint_symbol_block_2 {
int inner;
} tint_symbol_1;
void tint_symbol_2() {
Expand Down
Loading

0 comments on commit 46647f1

Please sign in to comment.