summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>2023-05-11 09:54:01 -0400
committerMarge Bot <emma+marge@anholt.net>2023-05-15 22:52:57 +0000
commitcc13c96b336f62a8eb3baa9e35f056a02f6efd7c (patch)
tree613062ffb925d09df3e39bfe8e08b03eb2ae2507
parent58532057c56bfecad38bf589ee17139ab5757306 (diff)
downloadmesa-cc13c96b336f62a8eb3baa9e35f056a02f6efd7c.tar.gz
zink: reorder some native blit code
no functional changes, but this will make it more convenient to reject certain blits Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22960>
-rw-r--r--src/gallium/drivers/zink/zink_blit.c39
1 files changed, 20 insertions, 19 deletions
diff --git a/src/gallium/drivers/zink/zink_blit.c b/src/gallium/drivers/zink/zink_blit.c
index 019a6eda785..69b2f02f035 100644
--- a/src/gallium/drivers/zink/zink_blit.c
+++ b/src/gallium/drivers/zink/zink_blit.c
@@ -173,25 +173,6 @@ blit_native(struct zink_context *ctx, const struct pipe_blit_info *info, bool *n
return false;
- apply_dst_clears(ctx, info, false);
- zink_fb_clears_apply_region(ctx, info->src.resource, zink_rect_from_box(&info->src.box));
-
- if (src->obj->dt)
- *needs_present_readback = zink_kopper_acquire_readback(ctx, src);
-
- struct zink_batch *batch = &ctx->batch;
- zink_resource_setup_transfer_layouts(ctx, src, dst);
- VkCommandBuffer cmdbuf = *needs_present_readback ?
- ctx->batch.state->cmdbuf :
- zink_get_cmdbuf(ctx, src, dst);
- zink_batch_reference_resource_rw(batch, src, false);
- zink_batch_reference_resource_rw(batch, dst, true);
-
- bool marker = zink_cmd_debug_marker_begin(ctx, cmdbuf, "blit_native(%s->%s, %dx%d->%dx%d)",
- util_format_short_name(info->src.format),
- util_format_short_name(info->src.format),
- info->src.box.width, info->src.box.height,
- info->dst.box.width, info->dst.box.height);
VkImageBlit region = {0};
region.srcSubresource.aspectMask = src->aspect;
region.srcSubresource.mipLevel = info->src.level;
@@ -268,6 +249,26 @@ blit_native(struct zink_context *ctx, const struct pipe_blit_info *info, bool *n
}
assert(region.dstOffsets[0].z != region.dstOffsets[1].z);
+ apply_dst_clears(ctx, info, false);
+ zink_fb_clears_apply_region(ctx, info->src.resource, zink_rect_from_box(&info->src.box));
+
+ if (src->obj->dt)
+ *needs_present_readback = zink_kopper_acquire_readback(ctx, src);
+
+ struct zink_batch *batch = &ctx->batch;
+ zink_resource_setup_transfer_layouts(ctx, src, dst);
+ VkCommandBuffer cmdbuf = *needs_present_readback ?
+ ctx->batch.state->cmdbuf :
+ zink_get_cmdbuf(ctx, src, dst);
+ zink_batch_reference_resource_rw(batch, src, false);
+ zink_batch_reference_resource_rw(batch, dst, true);
+
+ bool marker = zink_cmd_debug_marker_begin(ctx, cmdbuf, "blit_native(%s->%s, %dx%d->%dx%d)",
+ util_format_short_name(info->src.format),
+ util_format_short_name(info->src.format),
+ info->src.box.width, info->src.box.height,
+ info->dst.box.width, info->dst.box.height);
+
VKCTX(CmdBlitImage)(cmdbuf, src->obj->image, src->layout,
dst->obj->image, dst->layout,
1, &region,