summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Fonseca <jrfonseca@tungstengraphics.com>2008-07-03 15:02:56 +0900
committerJosé Fonseca <jrfonseca@tungstengraphics.com>2008-07-03 15:06:24 +0900
commit8ccab313561d8cca3caf8d76504119bf5eb2e9ae (patch)
treec67d0038ccebfcf5a7ae146babe6c2a21cdaabd0
parent27d8d6f44faa61a61c330d032111eee64dd8b8c7 (diff)
gallium: Use surface_copy for 1:1 blits.
-rw-r--r--src/gallium/auxiliary/util/u_blit.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/util/u_blit.c b/src/gallium/auxiliary/util/u_blit.c
index ae779335dc..c9e3abc88b 100644
--- a/src/gallium/auxiliary/util/u_blit.c
+++ b/src/gallium/auxiliary/util/u_blit.c
@@ -308,6 +308,16 @@ util_blit_pixels(struct blit_state *ctx,
}
assert(screen->is_format_supported(screen, src->format, PIPE_TEXTURE));
+ assert(screen->is_format_supported(screen, dst->format, PIPE_TEXTURE));
+
+ if(dst->format == src->format && (dstX1 - dstX0) == srcW && (dstY1 - dstY0) == srcH) {
+ pipe->surface_copy(pipe, FALSE,
+ dst, dstX0, dstY0, /* dest */
+ src, srcX0, srcY0, /* src */
+ srcW, srcH); /* size */
+ return;
+ }
+
assert(screen->is_format_supported(screen, dst->format, PIPE_SURFACE));
/*