diff options
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_fs_nir.cpp')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 57 |
1 files changed, 28 insertions, 29 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp index cd4005c..42ed131 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp @@ -1661,7 +1661,7 @@ emit_pixel_interpolater_send(const fs_builder &bld, inst = bld.emit(opcode, dst, payload, desc); inst->mlen = mlen; /* 2 floats per slot returned */ - inst->regs_written = 2 * bld.dispatch_width() / 8; + inst->size_written = 2 * bld.dispatch_width() / 8 * REG_SIZE; inst->pi_noperspective = interpolation == INTERP_MODE_NOPERSPECTIVE; wm_prog_data->pulls_bary = true; @@ -2144,7 +2144,7 @@ fs_visitor::emit_gs_input_load(const fs_reg &dst, unsigned read_components = num_components + first_component; fs_reg tmp = bld.vgrf(dst.type, read_components); inst = bld.emit(SHADER_OPCODE_URB_READ_SIMD8, tmp, icp_handle); - inst->regs_written = read_components * type_sz(tmp_dst.type) / 4; + inst->size_written = read_components * type_sz(tmp_dst.type) / 4 * REG_SIZE; for (unsigned i = 0; i < num_components; i++) { bld.MOV(offset(tmp_dst, bld, i), offset(tmp, bld, i + first_component)); @@ -2152,7 +2152,7 @@ fs_visitor::emit_gs_input_load(const fs_reg &dst, } else { inst = bld.emit(SHADER_OPCODE_URB_READ_SIMD8, tmp_dst, icp_handle); - inst->regs_written = num_components * type_sz(tmp_dst.type) / 4; + inst->size_written = num_components * type_sz(tmp_dst.type) / 4 * REG_SIZE; } inst->offset = base_offset + offset_const->u32[0]; inst->mlen = 1; @@ -2166,7 +2166,7 @@ fs_visitor::emit_gs_input_load(const fs_reg &dst, if (first_component != 0) { inst = bld.emit(SHADER_OPCODE_URB_READ_SIMD8_PER_SLOT, tmp, payload); - inst->regs_written = read_components * type_sz(tmp_dst.type) / 4; + inst->size_written = read_components * type_sz(tmp_dst.type) / 4 * REG_SIZE; for (unsigned i = 0; i < num_components; i++) { bld.MOV(offset(tmp_dst, bld, i), offset(tmp, bld, i + first_component)); @@ -2174,7 +2174,7 @@ fs_visitor::emit_gs_input_load(const fs_reg &dst, } else { inst = bld.emit(SHADER_OPCODE_URB_READ_SIMD8_PER_SLOT, tmp_dst, payload); - inst->regs_written = num_components * type_sz(tmp_dst.type) / 4; + inst->size_written = num_components * type_sz(tmp_dst.type) / 4 * REG_SIZE; } inst->offset = base_offset; inst->mlen = 2; @@ -2204,7 +2204,7 @@ fs_visitor::emit_gs_input_load(const fs_reg &dst, /* Read the whole VUE header (because of alignment) and read .w. */ fs_reg tmp = bld.vgrf(dst.type, 4); inst->dst = tmp; - inst->regs_written = 4; + inst->size_written = 4 * REG_SIZE; bld.MOV(dst, offset(tmp, bld, 3)); } } @@ -2510,8 +2510,8 @@ fs_visitor::nir_emit_tcs_intrinsic(const fs_builder &bld, inst->offset = imm_offset; inst->mlen = 2; } - inst->regs_written = - ((num_components + first_component) * type_sz(dst.type) / 4); + inst->size_written = + ((num_components + first_component) * type_sz(dst.type) / 4) * REG_SIZE; /* If we are reading 64-bit data using 32-bit read messages we need * build proper 64-bit data elements by shuffling the low and high @@ -2535,7 +2535,7 @@ fs_visitor::nir_emit_tcs_intrinsic(const fs_builder &bld, if (inst->offset == 0 && indirect_offset.file == BAD_FILE) { assert(type_sz(dst.type) < 8); inst->dst = bld.vgrf(dst.type, 4); - inst->regs_written = 4; + inst->size_written = 4 * REG_SIZE; bld.MOV(dst, offset(inst->dst, bld, 3)); } @@ -2576,7 +2576,7 @@ fs_visitor::nir_emit_tcs_intrinsic(const fs_builder &bld, inst = bld.emit(SHADER_OPCODE_URB_READ_SIMD8, tmp, patch_handle); inst->offset = 0; inst->mlen = 1; - inst->regs_written = 4; + inst->size_written = 4 * REG_SIZE; /* dst.xy = tmp.wz */ bld.MOV(dst, offset(tmp, bld, 3)); @@ -2584,11 +2584,11 @@ fs_visitor::nir_emit_tcs_intrinsic(const fs_builder &bld, break; } case GL_TRIANGLES: - /* DWord 4; hardcode offset = 1 and regs_written = 1 */ + /* DWord 4; hardcode offset = 1 and size_written = REG_SIZE */ inst = bld.emit(SHADER_OPCODE_URB_READ_SIMD8, dst, patch_handle); inst->offset = 1; inst->mlen = 1; - inst->regs_written = 1; + inst->size_written = REG_SIZE; break; case GL_ISOLINES: /* All channels are undefined. */ @@ -2606,7 +2606,7 @@ fs_visitor::nir_emit_tcs_intrinsic(const fs_builder &bld, inst = bld.emit(SHADER_OPCODE_URB_READ_SIMD8, tmp, patch_handle); inst->offset = 1; inst->mlen = 1; - inst->regs_written = 4; + inst->size_written = 4 * REG_SIZE; /* Reswizzle: WZYX */ fs_reg srcs[4] = { @@ -2641,7 +2641,7 @@ fs_visitor::nir_emit_tcs_intrinsic(const fs_builder &bld, fs_reg tmp = bld.vgrf(dst.type, read_components); inst = bld.emit(SHADER_OPCODE_URB_READ_SIMD8, tmp, patch_handle); - inst->regs_written = read_components; + inst->size_written = read_components * REG_SIZE; for (unsigned i = 0; i < instr->num_components; i++) { bld.MOV(offset(dst, bld, i), offset(tmp, bld, i + first_component)); @@ -2649,7 +2649,7 @@ fs_visitor::nir_emit_tcs_intrinsic(const fs_builder &bld, } else { inst = bld.emit(SHADER_OPCODE_URB_READ_SIMD8, dst, patch_handle); - inst->regs_written = instr->num_components; + inst->size_written = instr->num_components * REG_SIZE; } inst->offset = imm_offset; inst->mlen = 1; @@ -2668,7 +2668,7 @@ fs_visitor::nir_emit_tcs_intrinsic(const fs_builder &bld, fs_reg tmp = bld.vgrf(dst.type, read_components); inst = bld.emit(SHADER_OPCODE_URB_READ_SIMD8_PER_SLOT, tmp, payload); - inst->regs_written = read_components; + inst->size_written = read_components * REG_SIZE; for (unsigned i = 0; i < instr->num_components; i++) { bld.MOV(offset(dst, bld, i), offset(tmp, bld, i + first_component)); @@ -2676,7 +2676,7 @@ fs_visitor::nir_emit_tcs_intrinsic(const fs_builder &bld, } else { inst = bld.emit(SHADER_OPCODE_URB_READ_SIMD8_PER_SLOT, dst, payload); - inst->regs_written = instr->num_components; + inst->size_written = instr->num_components * REG_SIZE; } inst->offset = imm_offset; inst->mlen = 2; @@ -2976,7 +2976,7 @@ fs_visitor::nir_emit_tes_intrinsic(const fs_builder &bld, fs_reg tmp = bld.vgrf(dest.type, read_components); inst = bld.emit(SHADER_OPCODE_URB_READ_SIMD8, tmp, patch_handle); - inst->regs_written = read_components; + inst->size_written = read_components * REG_SIZE; for (unsigned i = 0; i < instr->num_components; i++) { bld.MOV(offset(dest, bld, i), offset(tmp, bld, i + first_component)); @@ -2984,7 +2984,7 @@ fs_visitor::nir_emit_tes_intrinsic(const fs_builder &bld, } else { inst = bld.emit(SHADER_OPCODE_URB_READ_SIMD8, dest, patch_handle); - inst->regs_written = instr->num_components; + inst->size_written = instr->num_components * REG_SIZE; } inst->mlen = 1; inst->offset = imm_offset; @@ -3032,8 +3032,9 @@ fs_visitor::nir_emit_tes_intrinsic(const fs_builder &bld, } inst->mlen = 2; inst->offset = imm_offset; - inst->regs_written = - ((num_components + first_component) * type_sz(dest.type) / 4); + inst->size_written = + ((num_components + first_component) * type_sz(dest.type) / 4) * + REG_SIZE; /* If we are reading 64-bit data using 32-bit read messages we need * build proper 64-bit data elements by shuffling the low and high @@ -3207,8 +3208,7 @@ fs_visitor::emit_non_coherent_fb_read(const fs_builder &bld, const fs_reg &dst, STATIC_ASSERT(ARRAY_SIZE(srcs) == TEX_LOGICAL_NUM_SRCS); fs_inst *inst = bld.emit(op, dst, srcs, ARRAY_SIZE(srcs)); - inst->regs_written = 4 * inst->dst.component_size(inst->exec_size) / - REG_SIZE; + inst->size_written = 4 * inst->dst.component_size(inst->exec_size); return inst; } @@ -3223,8 +3223,7 @@ emit_coherent_fb_read(const fs_builder &bld, const fs_reg &dst, unsigned target) assert(bld.shader->devinfo->gen >= 9); fs_inst *inst = bld.emit(FS_OPCODE_FB_READ_LOGICAL, dst); inst->target = target; - inst->regs_written = 4 * inst->dst.component_size(inst->exec_size) / - REG_SIZE; + inst->size_written = 4 * inst->dst.component_size(inst->exec_size); return inst; } @@ -3903,7 +3902,7 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr const fs_builder ubld = bld.group(8, 0); const fs_reg tmp = ubld.vgrf(BRW_REGISTER_TYPE_UD, 2); ubld.emit(SHADER_OPCODE_MEMORY_FENCE, tmp) - ->regs_written = 2; + ->size_written = 2 * REG_SIZE; break; } @@ -4338,7 +4337,7 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr src_payload, brw_imm_ud(index)); inst->header_size = 0; inst->mlen = 1; - inst->regs_written = 4; + inst->size_written = 4 * REG_SIZE; bld.MOV(retype(dest, ret_payload.type), component(ret_payload, 0)); brw_mark_surface_used(prog_data, index); @@ -4685,9 +4684,9 @@ fs_visitor::nir_emit_texture(const fs_builder &bld, nir_tex_instr *instr) nir_ssa_def_components_read(&instr->dest.ssa): (1 << dest_size) - 1; assert(write_mask != 0); /* dead code should have been eliminated */ - inst->regs_written = util_last_bit(write_mask) * dispatch_width / 8; + inst->size_written = util_last_bit(write_mask) * dispatch_width / 8 * REG_SIZE; } else { - inst->regs_written = 4 * dispatch_width / 8; + inst->size_written = 4 * dispatch_width / 8 * REG_SIZE; } if (srcs[TEX_LOGICAL_SRC_SHADOW_C].file != BAD_FILE) |