aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorMike Blumenkrantz <[email protected]>2020-06-14 00:03:31 -0400
committerMarge Bot <[email protected]>2020-07-14 12:57:22 +0000
commitab78831baa6329ad1b43dfd0203e6be508e4194d (patch)
tree9d27cc446fc7d1cdc5b05bfe29728792f49702f1 /src/gallium/drivers
parent34fe561895bed253070b7dadaa86b4473ad7b51a (diff)
zink: try copy_region hook for blits where we can't do a regular blit or resolve
in cases where the formats match, we can likely just pass this through for now fixes a ton of spec@!opengl 1.1@depthstencil-default_fb-blit piglit tests Reviewed-by: Erik Faye-Lund <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5888>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/zink/zink_blit.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/gallium/drivers/zink/zink_blit.c b/src/gallium/drivers/zink/zink_blit.c
index 74e1024b616..6dd3caaece1 100644
--- a/src/gallium/drivers/zink/zink_blit.c
+++ b/src/gallium/drivers/zink/zink_blit.c
@@ -4,6 +4,7 @@
#include "zink_screen.h"
#include "util/u_blitter.h"
+#include "util/u_surface.h"
#include "util/format/u_format.h"
static bool
@@ -182,6 +183,12 @@ zink_blit(struct pipe_context *pctx,
return;
}
+ struct zink_resource *src = zink_resource(info->src.resource);
+ struct zink_resource *dst = zink_resource(info->dst.resource);
+ /* if we're copying between resources with matching aspects then we can probably just copy_region */
+ if (src->aspect == dst->aspect && util_try_blit_via_copy_region(pctx, info))
+ return;
+
if (!util_blitter_is_blit_supported(ctx->blitter, info)) {
debug_printf("blit unsupported %s -> %s\n",
util_format_short_name(info->src.resource->format),