From 1516b6bd9a5307ad37f10b1b1c614e399f4bce2d Mon Sep 17 00:00:00 2001 From: Yevhenii Kharchenko Date: Thu, 4 Feb 2021 12:23:30 +0200 Subject: [PATCH] st/mesa: fix PBO download for TEXTURE_1D_ARRAY textures MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Fixes 'nir_tex_src_coord' param was provided to NIR 'txf' operation as a vec3 for TEXTURE_1D_ARRAY target, causing an assert. Only following targets require vec3: TEXTURE_2D_ARRAY, TEXTURE_3D, TEXTURE_CUBE, TEXTURE_CUBE_ARRAY. The rest must use vec2. Packing layer value into Y-coordinate the same way it was done in 'create_fs' in commit 2bf6dfac. Fixes: a01ad311 ("st/mesa: Add NIR versions of the PBO upload/download shaders. ") Signed-off-by: Yevhenii Kharchenko Reviewed-by: Marek Olšák Part-of: --- src/mesa/state_tracker/st_pbo.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/mesa/state_tracker/st_pbo.c b/src/mesa/state_tracker/st_pbo.c index b4326aa..ddd3a19 100644 --- a/src/mesa/state_tracker/st_pbo.c +++ b/src/mesa/state_tracker/st_pbo.c @@ -486,9 +486,14 @@ create_fs(struct st_context *st, bool download, src_layer = nir_iadd(&b, layer, layer_offset); } - texcoord = nir_vec3(&b, nir_channel(&b, texcoord, 0), - nir_channel(&b, texcoord, 1), - src_layer); + if (target == PIPE_TEXTURE_1D_ARRAY) { + texcoord = nir_vec2(&b, nir_channel(&b, texcoord, 0), + src_layer); + } else { + texcoord = nir_vec3(&b, nir_channel(&b, texcoord, 0), + nir_channel(&b, texcoord, 1), + src_layer); + } } } else { texcoord = pbo_addr; -- 2.7.4