Module: Mesa Branch: staging/22.2 Commit: dc8ea3363c29767a84f60fa9150c212c76d08542 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=dc8ea3363c29767a84f60fa9150c212c76d08542
Author: Mike Blumenkrantz <[email protected]> Date: Wed Aug 17 11:50:22 2022 -0400 st_pbo/compute: fix 1D coord dimension by pre-trimming vectors cc: mesa-stable Acked-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18118> (cherry picked from commit 2fa5afd639d0431b6f38da09a3f33a23220004dd) --- .pick_status.json | 2 +- src/mesa/state_tracker/st_pbo_compute.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 2147dd0023e..afb1708835c 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -13189,7 +13189,7 @@ "description": "st_pbo/compute: fix 1D coord dimension by pre-trimming vectors", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/mesa/state_tracker/st_pbo_compute.c b/src/mesa/state_tracker/st_pbo_compute.c index 16ad0fd2f29..c5c8807aa8b 100644 --- a/src/mesa/state_tracker/st_pbo_compute.c +++ b/src/mesa/state_tracker/st_pbo_compute.c @@ -633,8 +633,13 @@ create_conversion_shader(struct st_context *st, enum pipe_texture_target target, nir_channel(&b, start, 1), nir_channel(&b, global_id, 2)); } - nir_ssa_def *max = nir_iadd(&b, nir_pad_vector_imm_int(&b, sd.offset, 0, 3), sd.range); - nir_push_if(&b, nir_ball(&b, nir_ilt(&b, coord, nir_trim_vector(&b, max, coord_components)))); + coord = nir_trim_vector(&b, coord, coord_components); + nir_ssa_def *offset = coord_components > 2 ? + nir_pad_vector_imm_int(&b, sd.offset, 0, 3) : + nir_trim_vector(&b, sd.offset, coord_components); + nir_ssa_def *range = nir_trim_vector(&b, sd.range, coord_components); + nir_ssa_def *max = nir_iadd(&b, offset, range); + nir_push_if(&b, nir_ball(&b, nir_ilt(&b, coord, max))); nir_tex_instr *txf = nir_tex_instr_create(b.shader, 3); txf->is_array = glsl_sampler_type_is_array(sampler->type); txf->op = nir_texop_txf;
