intel/fs: make tcs input_vertices dynamic
We need to do 3 things to accomplish this : 1. make all the register access consider the maximal case when unknown at compile time 2. move the clamping of load_per_vertex_input prior to lowering nir_intrinsic_load_patch_vertices_in (in the dynamic cases, the clamping will use the nir_intrinsic_load_patch_vertices_in to clamp), meaning clamping using derefs rather than lowered nir_intrinsic_load_per_vertex_input 3. in the known cases, lower nir_intrinsic_load_patch_vertices_in in NIR (so that the clamped elements still be vectorized to the smallest number of URB read messages) Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Emma Anholt <emma@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22378>
This commit is contained in:

committed by
Marge Bot

parent
32b7659fff
commit
429ef02f83
@@ -48,7 +48,7 @@ tcs_thread_payload::tcs_thread_payload(const fs_visitor &v)
|
||||
num_regs = 5;
|
||||
} else {
|
||||
assert(vue_prog_data->dispatch_mode == DISPATCH_MODE_TCS_MULTI_PATCH);
|
||||
assert(tcs_key->input_vertices > 0);
|
||||
assert(tcs_key->input_vertices <= BRW_MAX_TCS_INPUT_VERTICES);
|
||||
|
||||
patch_urb_output = brw_ud8_grf(1, 0);
|
||||
|
||||
@@ -59,7 +59,7 @@ tcs_thread_payload::tcs_thread_payload(const fs_visitor &v)
|
||||
|
||||
/* ICP handles occupy the next 1-32 registers. */
|
||||
icp_handle_start = brw_ud8_grf(r, 0);
|
||||
r += tcs_key->input_vertices;
|
||||
r += brw_tcs_prog_key_input_vertices(tcs_key);
|
||||
|
||||
num_regs = r;
|
||||
}
|
||||
|
Reference in New Issue
Block a user