Module: Mesa Branch: main Commit: df7185d0d14542eeec7f4159b423537f34381d6e URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=df7185d0d14542eeec7f4159b423537f34381d6e
Author: Iago Toral Quiroga <[email protected]> Date: Tue May 18 08:19:32 2021 +0200 broadcom/compiler: don't emit TLB loads for components that don't exist This avoids debug builds to assert crash. Components that don't exist won't be used and will be eventually DCEd, so simply lower them to 0. Fixes CTS tests like these in debug builds: dEQP-VK.pipeline.logic_op.r8_uint.clear dEQP-VK.pipeline.logic_op.r8_uint.and dEQP-VK.pipeline.logic_op.r8_uint.and_reverse dEQP-VK.pipeline.logic_op.r8_uint.copy dEQP-VK.pipeline.logic_op.r8_uint.and_inverted dEQP-VK.pipeline.logic_op.r8_uint.no_op dEQP-VK.pipeline.logic_op.r8_uint.xor dEQP-VK.pipeline.logic_op.r8_uint.or Reviewed-by: Alejandro PiƱeiro <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10801> --- src/broadcom/compiler/v3d_nir_lower_logic_ops.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/broadcom/compiler/v3d_nir_lower_logic_ops.c b/src/broadcom/compiler/v3d_nir_lower_logic_ops.c index 2cd613b26a4..c5c30ab7c71 100644 --- a/src/broadcom/compiler/v3d_nir_lower_logic_ops.c +++ b/src/broadcom/compiler/v3d_nir_lower_logic_ops.c @@ -202,12 +202,23 @@ v3d_get_format_swizzle_for_rt(struct v3d_compile *c, int rt) } static nir_ssa_def * -v3d_nir_get_tlb_color(nir_builder *b, int rt, int sample) +v3d_nir_get_tlb_color(nir_builder *b, struct v3d_compile *c, int rt, int sample) { - nir_ssa_def *color[4]; - for (int i = 0; i < 4; i++) - color[i] = nir_load_tlb_color_v3d(b, 1, 32, nir_imm_int(b, rt), .base = sample, .component = i); + uint32_t num_components = + util_format_get_nr_components(c->fs_key->color_fmt[rt].format); + nir_ssa_def *color[4]; + for (int i = 0; i < 4; i++) { + if (i < num_components) { + color[i] = + nir_load_tlb_color_v3d(b, 1, 32, nir_imm_int(b, rt), + .base = sample, + .component = i); + } else { + /* These will be DCEd */ + color[i] = nir_imm_int(b, 0); + } + } return nir_vec4(b, color[0], color[1], color[2], color[3]); } @@ -257,7 +268,7 @@ static nir_ssa_def * v3d_nir_emit_logic_op(struct v3d_compile *c, nir_builder *b, nir_ssa_def *src, int rt, int sample) { - nir_ssa_def *dst = v3d_nir_get_tlb_color(b, rt, sample); + nir_ssa_def *dst = v3d_nir_get_tlb_color(b, c, rt, sample); nir_ssa_def *src_chans[4], *dst_chans[4]; for (unsigned i = 0; i < 4; i++) { _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
