mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 13:00:09 +01:00
radv/rt: Skip null checks for small case counts
The individual cases make sure the sbt_idx is not null implicitly because the handles are always != 0. Totals from 60 (22.56% of 266) affected shaders: Instrs: 47841 -> 47655 (-0.39%) CodeSize: 255028 -> 253460 (-0.61%) Latency: 1179658 -> 1225311 (+3.87%); split: -0.02%, +3.89% InvThroughput: 224122 -> 232851 (+3.89%); split: -0.02%, +3.92% Copies: 12049 -> 12043 (-0.05%); split: -0.37%, +0.32% Branches: 3312 -> 3290 (-0.66%) PreSGPRs: 3494 -> 3472 (-0.63%) Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25089>
This commit is contained in:
parent
fe674f67b1
commit
11897376c7
1 changed files with 5 additions and 0 deletions
|
|
@ -38,6 +38,8 @@
|
|||
* performance. */
|
||||
#define MAX_STACK_ENTRY_COUNT 16
|
||||
|
||||
#define RADV_RT_SWITCH_NULL_CHECK_THRESHOLD 3
|
||||
|
||||
struct radv_rt_case_data {
|
||||
struct radv_device *device;
|
||||
struct radv_ray_tracing_pipeline *pipeline;
|
||||
|
|
@ -83,6 +85,9 @@ radv_visit_inlined_shaders(nir_builder *b, nir_def *sbt_idx, bool can_have_null_
|
|||
groups[case_count++] = group;
|
||||
}
|
||||
|
||||
/* Do not emit 'if (sbt_idx != 0) { ... }' is there are only a few cases. */
|
||||
can_have_null_shaders &= case_count >= RADV_RT_SWITCH_NULL_CHECK_THRESHOLD;
|
||||
|
||||
if (can_have_null_shaders)
|
||||
nir_push_if(b, nir_ine_imm(b, sbt_idx, 0));
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue