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 <post@arntzen-software.no>2021-04-07 15:35:00 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2021-04-19 13:10:49 +0300
commitff3f5bcba5c9a33f5c217493118dd7eb1cfc06a9 (patch)
treeed9265459a9f9f337e84b88ac2d42788ae809c33 /shaders-msl
parent6ecdd64a91b59cac2375e27dca9d1cd08a41e225 (diff)
MSL: Handle masking of builtin control points.
Diffstat (limited to 'shaders-msl')
-rw-r--r--shaders-msl/masking/write-outputs.mask-location-0.tesc29
-rw-r--r--shaders-msl/masking/write-outputs.mask-location-1.tesc29
-rw-r--r--shaders-msl/masking/write-outputs.mask-point-size.tesc29
-rw-r--r--shaders-msl/masking/write-outputs.mask-position.tesc29
4 files changed, 116 insertions, 0 deletions
diff --git a/shaders-msl/masking/write-outputs.mask-location-0.tesc b/shaders-msl/masking/write-outputs.mask-location-0.tesc
new file mode 100644
index 00000000..9f3ca9fc
--- /dev/null
+++ b/shaders-msl/masking/write-outputs.mask-location-0.tesc
@@ -0,0 +1,29 @@
+#version 450
+
+layout(vertices = 4) out;
+
+layout(location = 0) out vec4 v0[];
+layout(location = 1) patch out vec4 v1[2];
+layout(location = 3) patch out vec4 v3;
+
+void write_in_func()
+{
+ v0[gl_InvocationID] = vec4(1.0);
+ v0[gl_InvocationID].z = 3.0;
+ if (gl_InvocationID == 0)
+ {
+ v1[0] = vec4(2.0);
+ v1[0].x = 3.0;
+ v1[1] = vec4(2.0);
+ v1[1].x = 5.0;
+ }
+ v3 = vec4(5.0);
+ gl_out[gl_InvocationID].gl_Position = vec4(10.0);
+ gl_out[gl_InvocationID].gl_Position.z = 20.0;
+ gl_out[gl_InvocationID].gl_PointSize = 40.0;
+}
+
+void main()
+{
+ write_in_func();
+}
diff --git a/shaders-msl/masking/write-outputs.mask-location-1.tesc b/shaders-msl/masking/write-outputs.mask-location-1.tesc
new file mode 100644
index 00000000..9f3ca9fc
--- /dev/null
+++ b/shaders-msl/masking/write-outputs.mask-location-1.tesc
@@ -0,0 +1,29 @@
+#version 450
+
+layout(vertices = 4) out;
+
+layout(location = 0) out vec4 v0[];
+layout(location = 1) patch out vec4 v1[2];
+layout(location = 3) patch out vec4 v3;
+
+void write_in_func()
+{
+ v0[gl_InvocationID] = vec4(1.0);
+ v0[gl_InvocationID].z = 3.0;
+ if (gl_InvocationID == 0)
+ {
+ v1[0] = vec4(2.0);
+ v1[0].x = 3.0;
+ v1[1] = vec4(2.0);
+ v1[1].x = 5.0;
+ }
+ v3 = vec4(5.0);
+ gl_out[gl_InvocationID].gl_Position = vec4(10.0);
+ gl_out[gl_InvocationID].gl_Position.z = 20.0;
+ gl_out[gl_InvocationID].gl_PointSize = 40.0;
+}
+
+void main()
+{
+ write_in_func();
+}
diff --git a/shaders-msl/masking/write-outputs.mask-point-size.tesc b/shaders-msl/masking/write-outputs.mask-point-size.tesc
new file mode 100644
index 00000000..9f3ca9fc
--- /dev/null
+++ b/shaders-msl/masking/write-outputs.mask-point-size.tesc
@@ -0,0 +1,29 @@
+#version 450
+
+layout(vertices = 4) out;
+
+layout(location = 0) out vec4 v0[];
+layout(location = 1) patch out vec4 v1[2];
+layout(location = 3) patch out vec4 v3;
+
+void write_in_func()
+{
+ v0[gl_InvocationID] = vec4(1.0);
+ v0[gl_InvocationID].z = 3.0;
+ if (gl_InvocationID == 0)
+ {
+ v1[0] = vec4(2.0);
+ v1[0].x = 3.0;
+ v1[1] = vec4(2.0);
+ v1[1].x = 5.0;
+ }
+ v3 = vec4(5.0);
+ gl_out[gl_InvocationID].gl_Position = vec4(10.0);
+ gl_out[gl_InvocationID].gl_Position.z = 20.0;
+ gl_out[gl_InvocationID].gl_PointSize = 40.0;
+}
+
+void main()
+{
+ write_in_func();
+}
diff --git a/shaders-msl/masking/write-outputs.mask-position.tesc b/shaders-msl/masking/write-outputs.mask-position.tesc
new file mode 100644
index 00000000..9f3ca9fc
--- /dev/null
+++ b/shaders-msl/masking/write-outputs.mask-position.tesc
@@ -0,0 +1,29 @@
+#version 450
+
+layout(vertices = 4) out;
+
+layout(location = 0) out vec4 v0[];
+layout(location = 1) patch out vec4 v1[2];
+layout(location = 3) patch out vec4 v3;
+
+void write_in_func()
+{
+ v0[gl_InvocationID] = vec4(1.0);
+ v0[gl_InvocationID].z = 3.0;
+ if (gl_InvocationID == 0)
+ {
+ v1[0] = vec4(2.0);
+ v1[0].x = 3.0;
+ v1[1] = vec4(2.0);
+ v1[1].x = 5.0;
+ }
+ v3 = vec4(5.0);
+ gl_out[gl_InvocationID].gl_Position = vec4(10.0);
+ gl_out[gl_InvocationID].gl_Position.z = 20.0;
+ gl_out[gl_InvocationID].gl_PointSize = 40.0;
+}
+
+void main()
+{
+ write_in_func();
+}