mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-21 11:30:11 +01:00
intel/fs: Adjust destination register size for global atomic on Xe2+
For 16-bit data type, we are padding 16-bit and using 32-bit data type, so we need to account for the padded portion while calculating the size_written. Rework: (Rohan) - Drop unnecessary fs_builder instance Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29271>
This commit is contained in:
parent
55c7b24899
commit
2dba5d484b
1 changed files with 12 additions and 5 deletions
|
|
@ -7796,23 +7796,30 @@ fs_nir_emit_global_atomic(nir_to_brw_state &ntb, const fs_builder &bld,
|
||||||
srcs[A64_LOGICAL_ARG] = brw_imm_ud(op);
|
srcs[A64_LOGICAL_ARG] = brw_imm_ud(op);
|
||||||
srcs[A64_LOGICAL_ENABLE_HELPERS] = brw_imm_ud(0);
|
srcs[A64_LOGICAL_ENABLE_HELPERS] = brw_imm_ud(0);
|
||||||
|
|
||||||
|
fs_inst *inst;
|
||||||
|
unsigned size_written = 0;
|
||||||
switch (instr->def.bit_size) {
|
switch (instr->def.bit_size) {
|
||||||
case 16: {
|
case 16: {
|
||||||
fs_reg dest32 = bld.vgrf(BRW_TYPE_UD);
|
fs_reg dest32 = bld.vgrf(BRW_TYPE_UD);
|
||||||
bld.emit(SHADER_OPCODE_A64_UNTYPED_ATOMIC_LOGICAL,
|
inst = bld.emit(SHADER_OPCODE_A64_UNTYPED_ATOMIC_LOGICAL,
|
||||||
retype(dest32, dest.type),
|
retype(dest32, dest.type),
|
||||||
srcs, A64_LOGICAL_NUM_SRCS);
|
srcs, A64_LOGICAL_NUM_SRCS);
|
||||||
|
size_written = dest32.component_size(inst->exec_size);
|
||||||
bld.MOV(retype(dest, BRW_TYPE_UW), dest32);
|
bld.MOV(retype(dest, BRW_TYPE_UW), dest32);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 32:
|
case 32:
|
||||||
case 64:
|
case 64:
|
||||||
bld.emit(SHADER_OPCODE_A64_UNTYPED_ATOMIC_LOGICAL, dest,
|
inst = bld.emit(SHADER_OPCODE_A64_UNTYPED_ATOMIC_LOGICAL, dest,
|
||||||
srcs, A64_LOGICAL_NUM_SRCS);
|
srcs, A64_LOGICAL_NUM_SRCS);
|
||||||
|
size_written = dest.component_size(inst->exec_size);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
unreachable("Unsupported bit size");
|
unreachable("Unsupported bit size");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert(size_written);
|
||||||
|
inst->size_written = size_written * instr->def.num_components;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue