summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/auxiliary/util/u_blitter.c10
1 files 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) {