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>2020-04-20 10:48:20 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2020-04-20 10:58:40 +0300
commitebf463674d0b79474dcdb9b32366b5aa52364ec5 (patch)
treec030898e7041868df3298ab00030f6761a889b02 /reference/opt/shaders-msl
parentaa5fbc004b2be8ae7541196ad9adf8eb75562bc0 (diff)
MSL: Allow removing clip distance user varyings.
Only safe if user knows that subsequent shader stage will not read clip distance.
Diffstat (limited to 'reference/opt/shaders-msl')
-rw-r--r--reference/opt/shaders-msl/asm/vert/clip-distance-plain-variable.no-user-varying.asm.vert25
-rw-r--r--reference/opt/shaders-msl/desktop-only/vert/clip-cull-distance..no-user-varying.desktop.vert20
-rw-r--r--reference/opt/shaders-msl/vert/clip-distance-block.no-user-varying.vert25
3 files changed, 70 insertions, 0 deletions
diff --git a/reference/opt/shaders-msl/asm/vert/clip-distance-plain-variable.no-user-varying.asm.vert b/reference/opt/shaders-msl/asm/vert/clip-distance-plain-variable.no-user-varying.asm.vert
new file mode 100644
index 00000000..1d688595
--- /dev/null
+++ b/reference/opt/shaders-msl/asm/vert/clip-distance-plain-variable.no-user-varying.asm.vert
@@ -0,0 +1,25 @@
+#include <metal_stdlib>
+#include <simd/simd.h>
+
+using namespace metal;
+
+struct main0_out
+{
+ float4 gl_Position [[position]];
+ float gl_ClipDistance [[clip_distance]] [2];
+};
+
+struct main0_in
+{
+ float4 pos [[attribute(0)]];
+};
+
+vertex main0_out main0(main0_in in [[stage_in]])
+{
+ main0_out out = {};
+ out.gl_Position = in.pos;
+ out.gl_ClipDistance[0] = in.pos.x;
+ out.gl_ClipDistance[1] = in.pos.y;
+ return out;
+}
+
diff --git a/reference/opt/shaders-msl/desktop-only/vert/clip-cull-distance..no-user-varying.desktop.vert b/reference/opt/shaders-msl/desktop-only/vert/clip-cull-distance..no-user-varying.desktop.vert
new file mode 100644
index 00000000..a414c985
--- /dev/null
+++ b/reference/opt/shaders-msl/desktop-only/vert/clip-cull-distance..no-user-varying.desktop.vert
@@ -0,0 +1,20 @@
+#include <metal_stdlib>
+#include <simd/simd.h>
+
+using namespace metal;
+
+struct main0_out
+{
+ float4 gl_Position [[position]];
+ float gl_ClipDistance [[clip_distance]] [2];
+};
+
+vertex main0_out main0()
+{
+ main0_out out = {};
+ out.gl_Position = float4(10.0);
+ out.gl_ClipDistance[0] = 1.0;
+ out.gl_ClipDistance[1] = 4.0;
+ return out;
+}
+
diff --git a/reference/opt/shaders-msl/vert/clip-distance-block.no-user-varying.vert b/reference/opt/shaders-msl/vert/clip-distance-block.no-user-varying.vert
new file mode 100644
index 00000000..c78105e0
--- /dev/null
+++ b/reference/opt/shaders-msl/vert/clip-distance-block.no-user-varying.vert
@@ -0,0 +1,25 @@
+#include <metal_stdlib>
+#include <simd/simd.h>
+
+using namespace metal;
+
+struct main0_out
+{
+ float4 gl_Position [[position]];
+ float gl_ClipDistance [[clip_distance]] [2];
+};
+
+struct main0_in
+{
+ float4 Position [[attribute(0)]];
+};
+
+vertex main0_out main0(main0_in in [[stage_in]])
+{
+ main0_out out = {};
+ out.gl_Position = in.Position;
+ out.gl_ClipDistance[0] = in.Position.x;
+ out.gl_ClipDistance[1] = in.Position.y;
+ return out;
+}
+