diff options
author | Connor Abbott <[email protected]> | 2019-05-13 15:32:26 +0200 |
---|---|---|
committer | Connor Abbott <[email protected]> | 2019-07-08 14:14:53 +0200 |
commit | 64f3fc5ea6a0487e553fe1bfedacff3c3697ab54 (patch) | |
tree | 7675de37dbde6a6e5e5ef8dc8da5a7be935edcdb /src/compiler/spirv/vtn_variables.c | |
parent | e41e932e57ecf0e1d4dffa784f2f9a0fe0cd86e8 (diff) |
spirv: Add an option for making FragCoord a sysval
On AMD, FragCoord should be a sysval because it is handled separately
from all the other inputs. We were already doing this in radeonsi, but
we weren't doing it with radv. It'll be much more annoying to handle
VARYING_SLOT_POS in fragment shaders when we let NIR lower FS inputs for
us, so here we add an option so that radv can get it as a system value.
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/compiler/spirv/vtn_variables.c')
-rw-r--r-- | src/compiler/spirv/vtn_variables.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c index b7ec2edd06c..d2d684f11bb 100644 --- a/src/compiler/spirv/vtn_variables.c +++ b/src/compiler/spirv/vtn_variables.c @@ -1295,8 +1295,13 @@ vtn_get_builtin_location(struct vtn_builder *b, set_mode_system_value(b, mode); break; case SpvBuiltInFragCoord: - *location = VARYING_SLOT_POS; vtn_assert(*mode == nir_var_shader_in); + if (b->options && b->options->frag_coord_is_sysval) { + *mode = nir_var_system_value; + *location = SYSTEM_VALUE_FRAG_COORD; + } else { + *location = VARYING_SLOT_POS; + } break; case SpvBuiltInPointCoord: *location = VARYING_SLOT_PNTC; |