intel/fs: fix per vertex input clamping

Only apply the clamp in multi patch mode (where the input vertices
vary between [1, 32]).

The clamp NIR pass operates on lowered intrinsics so we need to call
it after the inputs have been lowered.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: e25e17dd0c ("intel/fs: clamp per vertex input accesses to patchControlPoints")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8912
Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22701>
(cherry picked from commit 7ddc31c672)
This commit is contained in:
Lionel Landwerlin 2023-04-26 00:20:37 +03:00 committed by Eric Engestrom
parent 2d24f535ae
commit 46d57d5de9
2 changed files with 3 additions and 3 deletions

View file

@ -904,7 +904,7 @@
"description": "intel/fs: fix per vertex input clamping",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "e25e17dd0c39675acd48fd4a6982fcd77530ef2c"
},

View file

@ -365,8 +365,6 @@ brw_compile_tcs(const struct brw_compiler *compiler,
const bool debug_enabled = INTEL_DEBUG(DEBUG_TCS);
const unsigned *assembly;
brw_nir_clamp_per_vertex_loads(nir, key->input_vertices);
vue_prog_data->base.stage = MESA_SHADER_TESS_CTRL;
prog_data->base.base.ray_queries = nir->info.ray_queries;
prog_data->base.base.total_scratch = 0;
@ -387,6 +385,8 @@ brw_compile_tcs(const struct brw_compiler *compiler,
key->_tes_primitive_mode);
if (key->quads_workaround)
brw_nir_apply_tcs_quads_workaround(nir);
if (compiler->use_tcs_multi_patch)
brw_nir_clamp_per_vertex_loads(nir, key->input_vertices);
brw_postprocess_nir(nir, compiler, is_scalar, debug_enabled,
key->base.robust_buffer_access);