From f9d5611617d2498a05dddb036659ef37567a7753 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Wed, 12 Jul 2017 21:21:38 +0200 Subject: [PATCH] gallium/u_blitter: don't use TXF for scaled blits MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit There seems to be a rounding difference with F2I vs nearest filtering. The precise problem in the rounding is unknown. This fixes an incorrect output with OpenMAX encoding. Reviewed-by: Nicolai Hähnle --- src/gallium/auxiliary/util/u_blitter.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c index c38534dfeef..65c6f5d21fa 100644 --- a/src/gallium/auxiliary/util/u_blitter.c +++ b/src/gallium/auxiliary/util/u_blitter.c @@ -1777,15 +1777,17 @@ void util_blitter_blit_generic(struct blitter_context *blitter, return; } - if (blit_stencil || - (dstbox->width == abs(srcbox->width) && - dstbox->height == abs(srcbox->height))) { + bool is_scaled = dstbox->width != abs(srcbox->width) || + dstbox->height != abs(srcbox->height); + + if (blit_stencil || !is_scaled) filter = PIPE_TEX_FILTER_NEAREST; - } bool use_txf = false; + /* Don't support scaled blits. The TXF shader uses F2I for rounding. */ if (ctx->has_txf && + !is_scaled && filter == PIPE_TEX_FILTER_NEAREST && src->target != PIPE_TEXTURE_CUBE && src->target != PIPE_TEXTURE_CUBE_ARRAY) { -- 2.30.2