mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 02:48:06 +02:00
i965/fs: Mark UBO uniform pull constant loads as force_writemask_all.
This lets the rest of the backend know that the uniform pull constant load opcodes don't respect channel enables -- Without this the register allocator has no way to know that the return payload of a pull constant load is not per-channel and spills of the destination will be broken under non-uniform control flow. Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
7eb4966887
commit
015035027b
2 changed files with 4 additions and 1 deletions
|
|
@ -2176,10 +2176,12 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width)
|
|||
break;
|
||||
|
||||
case FS_OPCODE_UNIFORM_PULL_CONSTANT_LOAD:
|
||||
assert(inst->force_writemask_all);
|
||||
generate_uniform_pull_constant_load(inst, dst, src[0], src[1]);
|
||||
break;
|
||||
|
||||
case FS_OPCODE_UNIFORM_PULL_CONSTANT_LOAD_GEN7:
|
||||
assert(inst->force_writemask_all);
|
||||
generate_uniform_pull_constant_load_gen7(inst, dst, src[0], src[1]);
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -3611,7 +3611,8 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
|
|||
const unsigned count = MIN2(instr->num_components - c,
|
||||
(16 - base % 16) / type_size);
|
||||
|
||||
bld.emit(FS_OPCODE_UNIFORM_PULL_CONSTANT_LOAD,
|
||||
bld.exec_all()
|
||||
.emit(FS_OPCODE_UNIFORM_PULL_CONSTANT_LOAD,
|
||||
packed_consts, surf_index, brw_imm_ud(base & ~15));
|
||||
|
||||
const fs_reg consts =
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue