Module: Mesa Branch: main Commit: 50fe37070fb6b35a1468297f48021d58a9c94463 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=50fe37070fb6b35a1468297f48021d58a9c94463
Author: Samuel Pitoiset <[email protected]> Date: Wed Nov 16 10:35:19 2022 +0000 aco: fix FS inputs loads in WQM with 16-bit p_wqm needs to use the same size. Fixes: 16d2c7ad557 ("aco/gfx11: perform FS input loads in WQM") Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Rhys Perry <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19788> --- src/amd/compiler/aco_instruction_selection.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index 60b006539f1..86fe1585787 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -5347,7 +5347,10 @@ emit_interp_instr_gfx11(isel_context* ctx, unsigned idx, unsigned component, Tem res = bld.vinterp_inreg(aco_opcode::v_interp_p2_f32_inreg, bld.def(v1), p, coord2, p10); } /* lds_param_load must be done in WQM, and the result kept valid for helper lanes. */ - emit_wqm(bld, res, dst, true); + if (dst.regClass() != v2b) + emit_wqm(bld, res, dst, true); + else + emit_extract_vector(ctx, emit_wqm(bld, res, Temp(0, s1), true), 0, dst); } void @@ -5417,7 +5420,10 @@ emit_interp_mov_instr(isel_context* ctx, unsigned idx, unsigned component, unsig Temp res = bld.vop1_dpp(aco_opcode::v_mov_b32, bld.def(v1), p, dpp_ctrl); /* lds_param_load must be done in WQM, and the result kept valid for helper lanes. */ - emit_wqm(bld, res, dst, true); + if (dst.regClass() != v2b) + emit_wqm(bld, res, dst, true); + else + emit_extract_vector(ctx, emit_wqm(bld, res, Temp(0, s1), true), 0, dst); } } else { bld.vintrp(aco_opcode::v_interp_mov_f32, Definition(dst), Operand::c32(vertex_id),
