iris, crocus: Disable new IO slot validation for FB fetch load_output

This is a framebuffer fetch for blend equation advanced lowering.  We're
using a binding table index as the offset, which is not a slot.

Also, validate the shader after setup_binding_table so that we catch
errors here at the right place, rather than deeper in the compiler.

Acked-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38231>
This commit is contained in:
Kenneth Graunke
2025-11-03 16:35:40 -08:00
committed by Marge Bot
parent b2172467d1
commit 10e2631e79
2 changed files with 18 additions and 0 deletions

View File

@@ -1022,6 +1022,13 @@ crocus_setup_binding_table(const struct intel_device_info *devinfo,
case nir_intrinsic_load_output: case nir_intrinsic_load_output:
if (devinfo->ver >= 6) { if (devinfo->ver >= 6) {
/* We're using a BTI as the load_output offset here which
* breaks newer NIR assumptions.
*/
nir_io_semantics io_sem = nir_intrinsic_io_semantics(intrin);
io_sem.no_validate = true;
nir_intrinsic_set_io_semantics(intrin, io_sem);
rewrite_src_with_bti(&b, bt, instr, &intrin->src[0], rewrite_src_with_bti(&b, bt, instr, &intrin->src[0],
CROCUS_SURFACE_GROUP_RENDER_TARGET_READ); CROCUS_SURFACE_GROUP_RENDER_TARGET_READ);
} }
@@ -1040,6 +1047,8 @@ crocus_setup_binding_table(const struct intel_device_info *devinfo,
} }
} }
} }
nir_validate_shader(nir, "after crocus_setup_binding_table");
} }
static void static void

View File

@@ -1566,6 +1566,13 @@ iris_setup_binding_table(const struct intel_device_info *devinfo,
case nir_intrinsic_load_output: case nir_intrinsic_load_output:
if (devinfo->ver == 8) { if (devinfo->ver == 8) {
/* We're using a BTI as the load_output offset here which
* breaks newer NIR assumptions.
*/
nir_io_semantics io_sem = nir_intrinsic_io_semantics(intrin);
io_sem.no_validate = true;
nir_intrinsic_set_io_semantics(intrin, io_sem);
rewrite_src_with_bti(&b, bt, instr, &intrin->src[0], rewrite_src_with_bti(&b, bt, instr, &intrin->src[0],
IRIS_SURFACE_GROUP_RENDER_TARGET_READ); IRIS_SURFACE_GROUP_RENDER_TARGET_READ);
} }
@@ -1584,6 +1591,8 @@ iris_setup_binding_table(const struct intel_device_info *devinfo,
} }
} }
} }
nir_validate_shader(nir, "after iris_setup_binding_table");
} }
static void static void