Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/KhronosGroup/SPIRV-Cross.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Kristian Arntzen <hans-kristian.arntzen@arm.com>2018-11-01 17:26:19 +0300
committerGitHub <noreply@github.com>2018-11-01 17:26:19 +0300
commit13633c05002168034e673bba769ffcdb779e19a8 (patch)
tree4dfa4da710b6ec8d8217820c1b314b73633a1836 /shaders
parent37dbdf14faf8ce62250500ac8b60f57400f20378 (diff)
parent480acdad1868b41d6130f7e343b37bc7a58e28cf (diff)
Merge pull request #737 from KhronosGroup/fix-724
Deal with OpSpecConstantOp used as array size.
Diffstat (limited to 'shaders')
-rw-r--r--shaders/vulkan/comp/spec-constant-op-member-array.vk.comp33
1 files changed, 33 insertions, 0 deletions
diff --git a/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp b/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp
new file mode 100644
index 00000000..0b428eb0
--- /dev/null
+++ b/shaders/vulkan/comp/spec-constant-op-member-array.vk.comp
@@ -0,0 +1,33 @@
+#version 450
+layout(local_size_x = 1) in;
+
+layout(constant_id = 0) const int a = 100;
+layout(constant_id = 1) const int b = 200;
+layout(constant_id = 2) const int c = 300;
+const int d = c + 50;
+layout(constant_id = 3) const int e = 400;
+
+struct A
+{
+ int member0[a];
+ int member1[b];
+};
+
+struct B
+{
+ int member0[b];
+ int member1[a];
+};
+
+layout(set = 1, binding = 0) buffer SSBO
+{
+ A member_a;
+ B member_b;
+ int v[a];
+ int w[d];
+};
+
+void main()
+{
+ w[gl_GlobalInvocationID.x] += v[gl_GlobalInvocationID.x] + e;
+}