Module: Mesa Branch: main Commit: c0123d792ceb20cef60fbe065348e09de98dc240 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c0123d792ceb20cef60fbe065348e09de98dc240
Author: Dave Airlie <[email protected]> Date: Wed Jul 5 10:19:08 2023 +1000 gallivm: convert grid_size to discrete values. No use in storing this in a vector Reviewed-by: Mike Blumenkrantz <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23997> --- src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c | 2 +- src/gallium/auxiliary/gallivm/lp_bld_tgsi.h | 2 +- src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c | 2 +- src/gallium/drivers/llvmpipe/lp_state_cs.c | 7 +++---- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c index de0e63ce3a7..7eb32327801 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c @@ -1941,7 +1941,7 @@ static void emit_sysval_intrin(struct lp_build_nir_context *bld_base, case nir_intrinsic_load_num_workgroups: { LLVMValueRef tmp[3]; for (unsigned i = 0; i < 3; i++) { - tmp[i] = LLVMBuildExtractElement(gallivm->builder, bld->system_values.grid_size, lp_build_const_int32(gallivm, i), ""); + tmp[i] = bld->system_values.grid_size[i]; if (instr->dest.ssa.bit_size == 64) tmp[i] = LLVMBuildZExt(gallivm->builder, tmp[i], bld_base->uint64_bld.elem_type, ""); result[i] = lp_build_broadcast_scalar(bld_broad, tmp[i]); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h index a489108ecf3..f48bb2f2f0c 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h @@ -174,7 +174,7 @@ struct lp_bld_tgsi_system_values { LLVMValueRef draw_id; LLVMValueRef thread_id[3]; LLVMValueRef block_id[3]; - LLVMValueRef grid_size; + LLVMValueRef grid_size[3]; LLVMValueRef front_facing; LLVMValueRef work_dim; LLVMValueRef block_size; diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c index 810f22c60ae..fd288f9cc42 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c @@ -1548,7 +1548,7 @@ emit_fetch_system_value( break; case TGSI_SEMANTIC_GRID_SIZE: - res = lp_build_extract_broadcast(gallivm, lp_type_int_vec(32, 96), bld_base->uint_bld.type, bld->system_values.grid_size, lp_build_const_int32(gallivm, swizzle)); + res = lp_build_broadcast_scalar(&bld_base->uint_bld, bld->system_values.grid_size[swizzle]); atype = TGSI_TYPE_UNSIGNED; break; diff --git a/src/gallium/drivers/llvmpipe/lp_state_cs.c b/src/gallium/drivers/llvmpipe/lp_state_cs.c index 8850ce54ab5..00cbeab1ab8 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_cs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_cs.c @@ -659,10 +659,9 @@ generate_compute(struct llvmpipe_context *lp, system_values.block_id[1] = grid_y_arg; system_values.block_id[2] = grid_z_arg; - LLVMValueRef gstids[3] = { grid_size_x_arg, grid_size_y_arg, grid_size_z_arg }; - system_values.grid_size = LLVMGetUndef(LLVMVectorType(int32_type, 3)); - for (i = 0; i < 3; i++) - system_values.grid_size = LLVMBuildInsertElement(builder, system_values.grid_size, gstids[i], lp_build_const_int32(gallivm, i), ""); + system_values.grid_size[0] = grid_size_x_arg; + system_values.grid_size[1] = grid_size_y_arg; + system_values.grid_size[2] = grid_size_z_arg; system_values.work_dim = work_dim_arg; system_values.draw_id = draw_id_arg;
