SPIRV-Cross/reference
Aitor Camacho cd8865deab Add option to enforce fragment execution with side effects in MSL
Metal will incorrectly discard fragments with side effects under
certain circumstances prematurely. The conditions are the following:
 - Fragment will always be discarded after side effect operation
 - Pre fragment depth fails
 - Modifies depth value for a constant value in the fragment shader.
   This constant value will also fail the depth test.

However, Metal will also discard the fragment even if it has
operations with side effects inside the fragment shader before the
discard operation.

Vulkan states the graphics pipeline to execute in the following
order:
 - Pre fragment depth test (cannot discard here due to modifying
   depth value in fragment shader)
 - Fragment shader (where the depth is modified and fragment
   discarded)
 - Post fragment depth test

Therefore, we need to enforce fragment shader execution and not
let Metal discard the fragment before that for such cases. This
change adds an option to provide such utility.
2024-05-21 11:24:56 +02:00
..
opt Add option to enforce fragment execution with side effects in MSL 2024-05-21 11:24:56 +02:00
shaders Add test for multi-function Private LUT. 2024-03-18 11:25:59 +01:00
shaders-hlsl HLSL: Declare sample mask array with proper module type. 2023-10-23 12:29:25 +02:00
shaders-hlsl-no-opt HLSL: Fix issue with vec4 straddle rules in substructs. 2024-01-05 14:07:05 +01:00
shaders-msl Add option to enforce fragment execution with side effects in MSL 2024-05-21 11:24:56 +02:00
shaders-msl-no-opt MSL: Handle missing FP16 trancendental overloads. 2024-04-29 11:49:28 +02:00
shaders-no-opt GLSL: Handle ptr-to-array casts with unexpected array strides. 2024-01-18 14:14:10 +01:00
shaders-reflection Use --preserve-numeric-ids when assembling test shaders. 2023-06-23 14:54:16 -07:00
shaders-ue4/asm MSL: Remove special case for threadgroup array wrapper. 2023-12-07 14:41:42 +01:00
shaders-ue4-no-opt/asm MSL: Use powr instead of pow. 2023-10-11 12:55:12 +02:00