v2: Update NIR atomic intrinsic handling too (Ken). Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>tags/11.0-branchpoint
@@ -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 |