spirv: handle gl_SampleMask
SPIR-V maps both gl_SampleMask and gl_SampleMaskIn to the same builtin (SampleMask). The only way to tell which one we are dealing with is to check if it is an input or an output. Fixes: dEQP-VK.pipeline.multisample_shader_builtin.sample_mask.write.* Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
@@ -975,8 +975,12 @@ vtn_get_builtin_location(struct vtn_builder *b,
|
|||||||
set_mode_system_value(mode);
|
set_mode_system_value(mode);
|
||||||
break;
|
break;
|
||||||
case SpvBuiltInSampleMask:
|
case SpvBuiltInSampleMask:
|
||||||
*location = SYSTEM_VALUE_SAMPLE_MASK_IN; /* XXX out? */
|
if (*mode == nir_var_shader_out) {
|
||||||
set_mode_system_value(mode);
|
*location = FRAG_RESULT_SAMPLE_MASK;
|
||||||
|
} else {
|
||||||
|
*location = SYSTEM_VALUE_SAMPLE_MASK_IN;
|
||||||
|
set_mode_system_value(mode);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SpvBuiltInFragDepth:
|
case SpvBuiltInFragDepth:
|
||||||
*location = FRAG_RESULT_DEPTH;
|
*location = FRAG_RESULT_DEPTH;
|
||||||
|
Reference in New Issue
Block a user