diff --git a/src/gallium/drivers/crocus/crocus_program.c b/src/gallium/drivers/crocus/crocus_program.c index c0fe749f844..3b9fb87d942 100644 --- a/src/gallium/drivers/crocus/crocus_program.c +++ b/src/gallium/drivers/crocus/crocus_program.c @@ -1022,6 +1022,13 @@ crocus_setup_binding_table(const struct intel_device_info *devinfo, case nir_intrinsic_load_output: 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], 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 diff --git a/src/gallium/drivers/iris/iris_program.c b/src/gallium/drivers/iris/iris_program.c index 8184f6bf77c..ea8045d0f2d 100644 --- a/src/gallium/drivers/iris/iris_program.c +++ b/src/gallium/drivers/iris/iris_program.c @@ -1566,6 +1566,13 @@ iris_setup_binding_table(const struct intel_device_info *devinfo, case nir_intrinsic_load_output: 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], 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