spirv: add support for KHR_fragment_shading_rate
v2: Use VARYING (Samuel) v3: Only allow VERTEX & GEOMETRY stages (Samuel) Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7795>
This commit is contained in:

committed by
Marge Bot

parent
244514addd
commit
a5b899c7da
@@ -49,6 +49,7 @@ struct spirv_supported_capabilities {
|
||||
bool float64_atomic_add;
|
||||
bool fragment_shader_sample_interlock;
|
||||
bool fragment_shader_pixel_interlock;
|
||||
bool fragment_shading_rate;
|
||||
bool generic_pointers;
|
||||
bool geometry_streams;
|
||||
bool image_ms_array;
|
||||
|
@@ -4456,6 +4456,10 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
|
||||
spv_check_supported(image_atomic_int64, cap);
|
||||
break;
|
||||
|
||||
case SpvCapabilityFragmentShadingRateKHR:
|
||||
spv_check_supported(fragment_shading_rate, cap);
|
||||
break;
|
||||
|
||||
default:
|
||||
vtn_fail("Unhandled capability: %s (%u)",
|
||||
spirv_capability_to_string(cap), cap);
|
||||
|
@@ -1107,6 +1107,19 @@ vtn_get_builtin_location(struct vtn_builder *b,
|
||||
*location = SYSTEM_VALUE_RAY_GEOMETRY_INDEX;
|
||||
set_mode_system_value(b, mode);
|
||||
break;
|
||||
case SpvBuiltInShadingRateKHR:
|
||||
*location = SYSTEM_VALUE_FRAG_SHADING_RATE;
|
||||
set_mode_system_value(b, mode);
|
||||
break;
|
||||
case SpvBuiltInPrimitiveShadingRateKHR:
|
||||
if (b->shader->info.stage == MESA_SHADER_VERTEX ||
|
||||
b->shader->info.stage == MESA_SHADER_GEOMETRY) {
|
||||
*location = VARYING_SLOT_PRIMITIVE_SHADING_RATE;
|
||||
*mode = nir_var_shader_out;
|
||||
} else {
|
||||
vtn_fail("invalid stage for SpvBuiltInPrimitiveShadingRateKHR");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
vtn_fail("Unsupported builtin: %s (%u)",
|
||||
spirv_builtin_to_string(builtin), builtin);
|
||||
|
Reference in New Issue
Block a user