From 8baed872126b331aa8d789b78986c0100c6d853a Mon Sep 17 00:00:00 2001 From: Ilia Mirkin Date: Sat, 10 May 2014 17:51:21 -0400 Subject: [PATCH] nv50,nvc0: fix blit 3d path for 1d array textures Need to adjust coordinates since the shader receives the array index as depth in z, but the TEX instruction expects it to be the second coordinate for a 1D array texture. This fixes fbo-generatemipmap-array. Signed-off-by: Ilia Mirkin Reviewed-by: Ben Skeggs Cc: "10.2" --- src/gallium/drivers/nouveau/nv50/nv50_surface.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gallium/drivers/nouveau/nv50/nv50_surface.c b/src/gallium/drivers/nouveau/nv50/nv50_surface.c index df3bc86..d02f5fe 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_surface.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_surface.c @@ -698,6 +698,12 @@ nv50_blitter_make_fp(struct pipe_context *pipe, tc = ureg_DECL_fs_input( ureg, TGSI_SEMANTIC_GENERIC, 0, TGSI_INTERPOLATE_LINEAR); + if (ptarg == PIPE_TEXTURE_1D_ARRAY) { + /* Adjust coordinates. Depth is in z, but TEX expects it to be in y. */ + tc = ureg_swizzle(tc, TGSI_SWIZZLE_X, TGSI_SWIZZLE_Z, + TGSI_SWIZZLE_Z, TGSI_SWIZZLE_Z); + } + data = ureg_DECL_temporary(ureg); if (tex_s) { -- 2.7.4