Module: Mesa Branch: main Commit: 5de5a0d475505af2346214bfb2511bbe57139ce0 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5de5a0d475505af2346214bfb2511bbe57139ce0
Author: Caio Oliveira <[email protected]> Date: Mon Nov 20 23:17:12 2023 -0800 intel/compiler: Don't use fs_visitor::bld in thread payload classes Reviewed-by: Ian Romanick <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26301> --- src/intel/compiler/brw_fs.h | 4 ++-- src/intel/compiler/brw_fs_thread_payload.cpp | 15 +++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/intel/compiler/brw_fs.h b/src/intel/compiler/brw_fs.h index 02919a44ece..2e53d682ee9 100644 --- a/src/intel/compiler/brw_fs.h +++ b/src/intel/compiler/brw_fs.h @@ -121,7 +121,7 @@ struct tes_thread_payload : public thread_payload { }; struct gs_thread_payload : public thread_payload { - gs_thread_payload(const fs_visitor &v); + gs_thread_payload(fs_visitor &v); fs_reg urb_handles; fs_reg primitive_id; @@ -154,7 +154,7 @@ protected: }; struct task_mesh_thread_payload : public cs_thread_payload { - task_mesh_thread_payload(const fs_visitor &v); + task_mesh_thread_payload(fs_visitor &v); fs_reg extended_parameter_0; fs_reg local_index; diff --git a/src/intel/compiler/brw_fs_thread_payload.cpp b/src/intel/compiler/brw_fs_thread_payload.cpp index 5197639dc42..31e6f30030a 100644 --- a/src/intel/compiler/brw_fs_thread_payload.cpp +++ b/src/intel/compiler/brw_fs_thread_payload.cpp @@ -99,17 +99,18 @@ tes_thread_payload::tes_thread_payload(const fs_visitor &v) num_regs = r; } -gs_thread_payload::gs_thread_payload(const fs_visitor &v) +gs_thread_payload::gs_thread_payload(fs_visitor &v) { struct brw_vue_prog_data *vue_prog_data = brw_vue_prog_data(v.prog_data); struct brw_gs_prog_data *gs_prog_data = brw_gs_prog_data(v.prog_data); + const fs_builder bld = fs_builder(&v, v.dispatch_width).at_end(); /* R0: thread header. */ unsigned r = reg_unit(v.devinfo); /* R1: output URB handles. */ - urb_handles = v.bld.vgrf(BRW_REGISTER_TYPE_UD); - v.bld.AND(urb_handles, brw_ud8_grf(r, 0), + urb_handles = bld.vgrf(BRW_REGISTER_TYPE_UD); + bld.AND(urb_handles, brw_ud8_grf(r, 0), v.devinfo->ver >= 20 ? brw_imm_ud(0xFFFFFF) : brw_imm_ud(0xFFFF)); r += reg_unit(v.devinfo); @@ -415,7 +416,7 @@ cs_thread_payload::load_subgroup_id(const fs_builder &bld, } } -task_mesh_thread_payload::task_mesh_thread_payload(const fs_visitor &v) +task_mesh_thread_payload::task_mesh_thread_payload(fs_visitor &v) : cs_thread_payload(v) { /* Task and Mesh Shader Payloads (SIMD8 and SIMD16) @@ -437,6 +438,8 @@ task_mesh_thread_payload::task_mesh_thread_payload(const fs_visitor &v) * the address to descriptors. */ + const fs_builder bld = fs_builder(&v, v.dispatch_width).at_end(); + unsigned r = 0; assert(subgroup_id_.file != BAD_FILE); extended_parameter_0 = retype(brw_vec1_grf(0, 3), BRW_REGISTER_TYPE_UD); @@ -444,12 +447,12 @@ task_mesh_thread_payload::task_mesh_thread_payload(const fs_visitor &v) if (v.devinfo->ver >= 20) { urb_output = brw_ud1_grf(1, 0); } else { - urb_output = v.bld.vgrf(BRW_REGISTER_TYPE_UD); + urb_output = bld.vgrf(BRW_REGISTER_TYPE_UD); /* In both mesh and task shader payload, lower 16 bits of g0.6 is * an offset within Slice's Local URB, which says where shader is * supposed to output its data. */ - v.bld.AND(urb_output, brw_ud1_grf(0, 6), brw_imm_ud(0xFFFF)); + bld.AND(urb_output, brw_ud1_grf(0, 6), brw_imm_ud(0xFFFF)); } if (v.stage == MESA_SHADER_MESH) {
