SPIRV-Cross/reference/opt/shaders/vulkan/frag/demote-to-helper-forwarding.asm.vk.nocompat.frag.vk
Chip Davis 12a8654784 Don't forward uses of an OpIsHelperInvocationEXT op.
If this is computed *before* a `demote`, but used *after*, forwarding it
will produce the wrong value. This does make for uglier shaders, but
it's necessary right now to ensure correctness.

I needed to use an assembly shader to produce the test for this.
`spirv-opt` is not smart enough (or too smart?) to eliminate the
variable that would be used in GLSL to express this.
2019-07-18 17:32:35 -05:00

16 lines
251 B
Plaintext

#version 450
#extension GL_EXT_demote_to_helper_invocation : require
layout(location = 0) out vec4 FragColor;
void main()
{
bool _15 = helperInvocationEXT();
demote;
if (!_15)
{
FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
}