From 46d57d5de9483389d09db5af8706ff615c782a46 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Wed, 26 Apr 2023 00:20:37 +0300 Subject: [PATCH] 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 Fixes: e25e17dd0c ("intel/fs: clamp per vertex input accesses to patchControlPoints") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8912 Reviewed-by: Ivan Briano Part-of: (cherry picked from commit 7ddc31c6721d241ba61573207c18c6b4626e4f78) --- .pick_status.json | 2 +- src/intel/compiler/brw_vec4_tcs.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 4330dbfd8e3..32a77c13799 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -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" }, diff --git a/src/intel/compiler/brw_vec4_tcs.cpp b/src/intel/compiler/brw_vec4_tcs.cpp index d0dcaff8ecc..90591afa454 100644 --- a/src/intel/compiler/brw_vec4_tcs.cpp +++ b/src/intel/compiler/brw_vec4_tcs.cpp @@ -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);