diff options
author | Bill Hollings <bill.hollings@brenwill.com> | 2021-09-12 23:28:21 +0300 |
---|---|---|
committer | Bill Hollings <bill.hollings@brenwill.com> | 2021-09-12 23:28:21 +0300 |
commit | 35e92e6ffb1a762700190fbf1ca55bc2b1debaff (patch) | |
tree | 11187f3fe77173df40182dde8f664ce8c25dc82b /reference/opt | |
parent | c2500e504d2b823d73d2f129e4f4f050e9618ecb (diff) |
MSL: Return fragment function value even when last SPIR-V Op is discard (OpKill).
Add test shader for new functionality.
Add legacy test reference shader for unrelated buffer-bitcast
test, that doesn't seem to have been added previously.
Diffstat (limited to 'reference/opt')
-rw-r--r-- | reference/opt/shaders-msl/frag/return-value-after-discard-terminator.frag | 25 | ||||
-rw-r--r-- | reference/opt/shaders/vulkan/comp/buffer-reference-bitcast-uvec2-2.nocompat.invalid.vk.comp.vk | 22 |
2 files changed, 47 insertions, 0 deletions
diff --git a/reference/opt/shaders-msl/frag/return-value-after-discard-terminator.frag b/reference/opt/shaders-msl/frag/return-value-after-discard-terminator.frag new file mode 100644 index 00000000..92097dfa --- /dev/null +++ b/reference/opt/shaders-msl/frag/return-value-after-discard-terminator.frag @@ -0,0 +1,25 @@ +#include <metal_stdlib> +#include <simd/simd.h> + +using namespace metal; + +struct buff_t +{ + int m0[1024]; +}; + +struct main0_out +{ + float4 frag_clr [[color(0)]]; +}; + +fragment main0_out main0(device buff_t& buff [[buffer(0)]], float4 gl_FragCoord [[position]]) +{ + main0_out out = {}; + int4 _16 = int4(gl_FragCoord); + out.frag_clr = float4(0.0, 0.0, 1.0, 1.0); + buff.m0[(_16.y * 32) + _16.x] = 1; + discard_fragment(); + return out; +} + diff --git a/reference/opt/shaders/vulkan/comp/buffer-reference-bitcast-uvec2-2.nocompat.invalid.vk.comp.vk b/reference/opt/shaders/vulkan/comp/buffer-reference-bitcast-uvec2-2.nocompat.invalid.vk.comp.vk new file mode 100644 index 00000000..53c3d21c --- /dev/null +++ b/reference/opt/shaders/vulkan/comp/buffer-reference-bitcast-uvec2-2.nocompat.invalid.vk.comp.vk @@ -0,0 +1,22 @@ +#version 450 +#extension GL_EXT_buffer_reference : require +#extension GL_EXT_buffer_reference_uvec2 : require +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; + +layout(buffer_reference) buffer PtrInt; +layout(buffer_reference, std430) buffer PtrInt +{ + int value; +}; + +layout(set = 0, binding = 0, std430) buffer Buf +{ + uvec2 ptr; + PtrInt ptrint; +} _13; + +void main() +{ + _13.ptr = uvec2(_13.ptrint); +} + |