radv: only export clip/cull distances if PS reads them
The only exception is the GS copy shader which emits them unconditionally. Totals from affected shaders: SGPRS: 71320 -> 71008 (-0.44 %) VGPRS: 54372 -> 54240 (-0.24 %) Code Size: 2952628 -> 2941368 (-0.38 %) bytes Max Waves: 9689 -> 9723 (0.35 %) This helps Dota2, Doom, GTAV and Hitman 2. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
@@ -2241,10 +2241,14 @@ void radv_create_shaders(struct radv_pipeline *pipeline,
|
||||
pipeline->shaders[MESA_SHADER_FRAGMENT]->info.info.ps.prim_id_input;
|
||||
keys[MESA_SHADER_VERTEX].vs.export_layer_id =
|
||||
pipeline->shaders[MESA_SHADER_FRAGMENT]->info.info.ps.layer_input;
|
||||
keys[MESA_SHADER_VERTEX].vs.export_clip_dists =
|
||||
!!pipeline->shaders[MESA_SHADER_FRAGMENT]->info.info.ps.num_input_clips_culls;
|
||||
keys[MESA_SHADER_TESS_EVAL].tes.export_prim_id =
|
||||
pipeline->shaders[MESA_SHADER_FRAGMENT]->info.info.ps.prim_id_input;
|
||||
keys[MESA_SHADER_TESS_EVAL].tes.export_layer_id =
|
||||
pipeline->shaders[MESA_SHADER_FRAGMENT]->info.info.ps.layer_input;
|
||||
keys[MESA_SHADER_TESS_EVAL].tes.export_clip_dists =
|
||||
!!pipeline->shaders[MESA_SHADER_FRAGMENT]->info.info.ps.num_input_clips_culls;
|
||||
}
|
||||
|
||||
if (device->physical_device->rad_info.chip_class >= GFX9 && modules[MESA_SHADER_TESS_CTRL]) {
|
||||
|
Reference in New Issue
Block a user