zink: enable unordered blit/resolve ops
can't do swapchain or u_blitter ops, but these should be fine Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17667>
This commit is contained in:
parent
731d7be375
commit
4cfa777e39
|
@ -58,12 +58,13 @@ blit_resolve(struct zink_context *ctx, const struct pipe_blit_info *info, bool *
|
|||
*needs_present_readback = zink_kopper_acquire_readback(ctx, src);
|
||||
|
||||
struct zink_batch *batch = &ctx->batch;
|
||||
zink_batch_no_rp(ctx);
|
||||
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);
|
||||
|
||||
zink_resource_setup_transfer_layouts(ctx, src, dst);
|
||||
|
||||
VkImageResolve region = {0};
|
||||
|
||||
region.srcSubresource.aspectMask = src->aspect;
|
||||
|
@ -101,7 +102,7 @@ blit_resolve(struct zink_context *ctx, const struct pipe_blit_info *info, bool *
|
|||
region.extent.width = info->dst.box.width;
|
||||
region.extent.height = info->dst.box.height;
|
||||
region.extent.depth = info->dst.box.depth;
|
||||
VKCTX(CmdResolveImage)(batch->state->cmdbuf, src->obj->image, src->layout,
|
||||
VKCTX(CmdResolveImage)(cmdbuf, src->obj->image, src->layout,
|
||||
dst->obj->image, dst->layout,
|
||||
1, ®ion);
|
||||
|
||||
|
@ -167,11 +168,13 @@ blit_native(struct zink_context *ctx, const struct pipe_blit_info *info, bool *n
|
|||
*needs_present_readback = zink_kopper_acquire_readback(ctx, src);
|
||||
|
||||
struct zink_batch *batch = &ctx->batch;
|
||||
zink_batch_no_rp(ctx);
|
||||
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);
|
||||
|
||||
zink_resource_setup_transfer_layouts(ctx, src, dst);
|
||||
VkImageBlit region = {0};
|
||||
region.srcSubresource.aspectMask = src->aspect;
|
||||
region.srcSubresource.mipLevel = info->src.level;
|
||||
|
@ -248,7 +251,7 @@ blit_native(struct zink_context *ctx, const struct pipe_blit_info *info, bool *n
|
|||
}
|
||||
assert(region.dstOffsets[0].z != region.dstOffsets[1].z);
|
||||
|
||||
VKCTX(CmdBlitImage)(batch->state->cmdbuf, src->obj->image, src->layout,
|
||||
VKCTX(CmdBlitImage)(cmdbuf, src->obj->image, src->layout,
|
||||
dst->obj->image, dst->layout,
|
||||
1, ®ion,
|
||||
zink_filter(info->filter));
|
||||
|
@ -372,8 +375,6 @@ zink_blit(struct pipe_context *pctx,
|
|||
util_blitter_blit(ctx->blitter, info);
|
||||
}
|
||||
end:
|
||||
src->obj->unordered_read = false;
|
||||
dst->obj->unordered_read = dst->obj->unordered_write = false;
|
||||
if (needs_present_readback)
|
||||
zink_kopper_present_readback(ctx, src);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue