zink: use u_blitter when format-reinterpreting
authorErik Faye-Lund <erik.faye-lund@collabora.com>
Fri, 1 Nov 2019 09:38:13 +0000 (10:38 +0100)
committerErik Faye-Lund <erik.faye-lund@collabora.com>
Wed, 6 Nov 2019 11:37:36 +0000 (11:37 +0000)
src/gallium/drivers/zink/zink_context.c

index 1fd6a3da5a7df40cb238cd1dea2c884c31b30917..30d19c6ffa285afb79c3ad7d0730e8fbaa613268 100644 (file)
@@ -1268,6 +1268,11 @@ blit_resolve(struct zink_context *ctx, const struct pipe_blit_info *info)
    struct zink_resource *src = zink_resource(info->src.resource);
    struct zink_resource *dst = zink_resource(info->dst.resource);
 
+   struct zink_screen *screen = zink_screen(ctx->base.screen);
+   if (src->format != zink_get_format(screen, info->src.format) ||
+       dst->format != zink_get_format(screen, info->dst.format))
+      return false;
+
    struct zink_batch *batch = zink_batch_no_rp(ctx);
 
    zink_batch_reference_resoure(batch, src);
@@ -1325,6 +1330,11 @@ blit_native(struct zink_context *ctx, const struct pipe_blit_info *info)
    struct zink_resource *src = zink_resource(info->src.resource);
    struct zink_resource *dst = zink_resource(info->dst.resource);
 
+   struct zink_screen *screen = zink_screen(ctx->base.screen);
+   if (src->format != zink_get_format(screen, info->src.format) ||
+       dst->format != zink_get_format(screen, info->dst.format))
+      return false;
+
    struct zink_batch *batch = zink_batch_no_rp(ctx);
    zink_batch_reference_resoure(batch, src);
    zink_batch_reference_resoure(batch, dst);