From: Marek Olšák Date: Wed, 12 Jul 2017 19:21:38 +0000 (+0200) Subject: gallium/u_blitter: don't use TXF for scaled blits X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f9d5611617d2498a05dddb036659ef37567a7753;p=mesa.git gallium/u_blitter: don't use TXF for scaled blits 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 --- 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) {