GLSL: Change Add[Spirv]BlockAttribute to support GLSL

Modify the AddSpirvBlockAttribute transform to fix top-level structure
access of uniform, storage and push-constant buffers for use in the
GLSL backend. The small change to the transform makes the transform
wrap host-sharable buffers, if they're also used as a
non-host-sharable structure. Also rename the transform to
AddBlockAttrbibute in order to reflect its wider applicability.

Change-Id: Ib2bf4ebf6bce72790791dbae9387032be765e4b9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/101061
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
This commit is contained in:
Stephen White
2022-09-02 19:19:10 +00:00
committed by Dawn LUCI CQ
parent 822de46c74
commit 863d9edf59
362 changed files with 2316 additions and 3876 deletions

View File

@@ -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);

View File

@@ -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)));
}

View File

@@ -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)));
}

View File

@@ -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);
}

View File

@@ -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)));
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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));
}

View File

@@ -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);
}

View File

@@ -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));
}

View File

@@ -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);
}

View File

@@ -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));
}

View File

@@ -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);
}

View File

@@ -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));
}

View File

@@ -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));
}

View File

@@ -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);
}

View File

@@ -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));
}

View File

@@ -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));
}

View File

@@ -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));
}

View File

@@ -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)));
}

View File

@@ -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);
}

View File

@@ -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));
}

View File

@@ -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));
}