mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
i965: Lift the constness restriction on surface indices passed to untyped ops.
v2: Update NIR atomic intrinsic handling too (Ken). Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
a0c02d2bbb
commit
3af2623da5
4 changed files with 9 additions and 12 deletions
|
|
@ -1989,19 +1989,15 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width)
|
|||
break;
|
||||
|
||||
case SHADER_OPCODE_UNTYPED_ATOMIC:
|
||||
assert(src[1].file == BRW_IMMEDIATE_VALUE &&
|
||||
src[2].file == BRW_IMMEDIATE_VALUE);
|
||||
assert(src[2].file == BRW_IMMEDIATE_VALUE);
|
||||
brw_untyped_atomic(p, dst, src[0], src[1], src[2].dw1.ud,
|
||||
inst->mlen, !inst->dst.is_null());
|
||||
brw_mark_surface_used(prog_data, src[1].dw1.ud);
|
||||
break;
|
||||
|
||||
case SHADER_OPCODE_UNTYPED_SURFACE_READ:
|
||||
assert(src[1].file == BRW_IMMEDIATE_VALUE &&
|
||||
src[2].file == BRW_IMMEDIATE_VALUE);
|
||||
assert(src[2].file == BRW_IMMEDIATE_VALUE);
|
||||
brw_untyped_surface_read(p, dst, src[0], src[1],
|
||||
inst->mlen, src[2].dw1.ud);
|
||||
brw_mark_surface_used(prog_data, src[1].dw1.ud);
|
||||
break;
|
||||
|
||||
case SHADER_OPCODE_UNTYPED_SURFACE_WRITE:
|
||||
|
|
|
|||
|
|
@ -1276,6 +1276,9 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
|
|||
default:
|
||||
unreachable("Unreachable");
|
||||
}
|
||||
|
||||
/* Mark the surface as used. */
|
||||
brw_mark_surface_used(stage_prog_data, surf_index);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1465,19 +1465,15 @@ vec4_generator::generate_code(const cfg_t *cfg)
|
|||
break;
|
||||
|
||||
case SHADER_OPCODE_UNTYPED_ATOMIC:
|
||||
assert(src[1].file == BRW_IMMEDIATE_VALUE &&
|
||||
src[2].file == BRW_IMMEDIATE_VALUE);
|
||||
assert(src[2].file == BRW_IMMEDIATE_VALUE);
|
||||
brw_untyped_atomic(p, dst, src[0], src[1], src[2].dw1.ud, inst->mlen,
|
||||
!inst->dst.is_null());
|
||||
brw_mark_surface_used(&prog_data->base, src[1].dw1.ud);
|
||||
break;
|
||||
|
||||
case SHADER_OPCODE_UNTYPED_SURFACE_READ:
|
||||
assert(src[1].file == BRW_IMMEDIATE_VALUE &&
|
||||
src[2].file == BRW_IMMEDIATE_VALUE);
|
||||
assert(src[2].file == BRW_IMMEDIATE_VALUE);
|
||||
brw_untyped_surface_read(p, dst, src[0], src[1], inst->mlen,
|
||||
src[2].dw1.ud);
|
||||
brw_mark_surface_used(&prog_data->base, src[1].dw1.ud);
|
||||
break;
|
||||
|
||||
case SHADER_OPCODE_UNTYPED_SURFACE_WRITE:
|
||||
|
|
|
|||
|
|
@ -2439,6 +2439,8 @@ vec4_visitor::visit_atomic_counter_intrinsic(ir_call *ir)
|
|||
emit_untyped_atomic(BRW_AOP_PREDEC, surf_index, dst, offset,
|
||||
src_reg(), src_reg());
|
||||
}
|
||||
|
||||
brw_mark_surface_used(stage_prog_data, surf_index);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue