aco: implement skip_helpers for image loads

Foz-DB GFX1201:
Totals from 5 (0.01% of 80287) affected shaders:
Instrs: 1406 -> 1417 (+0.78%)
CodeSize: 8012 -> 8056 (+0.55%)
Latency: 7279 -> 7282 (+0.04%)
Copies: 84 -> 85 (+1.19%)
SALU: 170 -> 180 (+5.88%)

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36785>
This commit is contained in:
Georg Lehmann
2025-08-06 14:06:10 +02:00
committed by Marge Bot
parent bf453a7c6a
commit bdae511b18
2 changed files with 22 additions and 4 deletions
@@ -340,6 +340,18 @@ skip_uniformize_merge_phi(nir_def* ssa, unsigned depth)
return true;
}
bool
intrinsic_try_skip_helpers(nir_intrinsic_instr* intr, UNUSED void* data)
{
switch (intr->intrinsic) {
case nir_intrinsic_bindless_image_load:
case nir_intrinsic_bindless_image_fragment_mask_load_amd:
case nir_intrinsic_bindless_image_sparse_load:
return !(nir_intrinsic_access(intr) & ACCESS_SMEM_AMD);
default: return false;
}
}
} /* end namespace */
void
@@ -370,6 +382,7 @@ init_context(isel_context* ctx, nir_shader* shader)
if (shader->info.stage == MESA_SHADER_FRAGMENT) {
nir_opt_load_skip_helpers_options skip_helper_options = {};
skip_helper_options.no_add_divergence = true;
skip_helper_options.intrinsic_cb = intrinsic_try_skip_helpers;
nir_opt_load_skip_helpers(shader, &skip_helper_options);
}