brw: fix TGM messages to use cmask lsc opcodes

This is a restriction for TGM.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: b55f7716 ("intel/brw: Switch to emitting MEMORY_*_LOGICAL opcodes")
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31199>
This commit is contained in:
Lionel Landwerlin 2024-09-17 10:41:16 +03:00 committed by Marge Bot
parent 2159e17da0
commit 02b124846f
2 changed files with 12 additions and 6 deletions

View file

@ -1545,8 +1545,10 @@ lower_lsc_memory_logical_send(const fs_builder &bld, fs_inst *inst)
}
assert(inst->sfid);
inst->desc = lsc_msg_desc(devinfo, op, binding_type, addr_size,
data_size, components, transpose, cache_mode);
inst->desc = lsc_msg_desc(devinfo, op, binding_type, addr_size, data_size,
lsc_opcode_has_cmask(op) ?
(1 << components) - 1 : components,
transpose, cache_mode);
/* Set up extended descriptors, fills src[0] and src[1]. */
setup_lsc_surface_descriptors(bld, inst, inst->desc, binding);

View file

@ -2042,8 +2042,6 @@ enum lsc_opcode
lsc_op_for_nir_intrinsic(const nir_intrinsic_instr *intrin)
{
switch (intrin->intrinsic) {
case nir_intrinsic_image_load:
case nir_intrinsic_bindless_image_load:
case nir_intrinsic_load_ssbo:
case nir_intrinsic_load_shared:
case nir_intrinsic_load_global:
@ -2058,8 +2056,6 @@ lsc_op_for_nir_intrinsic(const nir_intrinsic_instr *intrin)
case nir_intrinsic_load_scratch:
return LSC_OP_LOAD;
case nir_intrinsic_image_store:
case nir_intrinsic_bindless_image_store:
case nir_intrinsic_store_ssbo:
case nir_intrinsic_store_shared:
case nir_intrinsic_store_global:
@ -2069,6 +2065,14 @@ lsc_op_for_nir_intrinsic(const nir_intrinsic_instr *intrin)
case nir_intrinsic_store_scratch:
return LSC_OP_STORE;
case nir_intrinsic_image_load:
case nir_intrinsic_bindless_image_load:
return LSC_OP_LOAD_CMASK;
case nir_intrinsic_image_store:
case nir_intrinsic_bindless_image_store:
return LSC_OP_STORE_CMASK;
default:
assert(nir_intrinsic_has_atomic_op(intrin));
break;