mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 06:40:11 +01:00
zink: use res->queue to auto-handle queue transitions back to gfx queue
much simpler Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21733>
This commit is contained in:
parent
d7b04c110b
commit
d862d708e2
3 changed files with 11 additions and 10 deletions
|
|
@ -3744,10 +3744,10 @@ zink_resource_image_barrier(struct zink_context *ctx, struct zink_resource *res,
|
|||
if (res->obj->needs_zs_evaluate)
|
||||
imb.pNext = &res->obj->zs_evaluate;
|
||||
res->obj->needs_zs_evaluate = false;
|
||||
if (res->dmabuf_acquire) {
|
||||
imb.srcQueueFamilyIndex = VK_QUEUE_FAMILY_FOREIGN_EXT;
|
||||
if (res->queue != zink_screen(ctx->base.screen)->gfx_queue && res->queue != VK_QUEUE_FAMILY_IGNORED) {
|
||||
imb.srcQueueFamilyIndex = res->queue;
|
||||
imb.dstQueueFamilyIndex = zink_screen(ctx->base.screen)->gfx_queue;
|
||||
res->dmabuf_acquire = false;
|
||||
res->queue = VK_QUEUE_FAMILY_IGNORED;
|
||||
}
|
||||
bool marker = zink_cmd_debug_marker_begin(ctx, cmdbuf, "image_barrier(%s->%s)", vk_ImageLayout_to_str(res->layout), vk_ImageLayout_to_str(new_layout));
|
||||
VKCTX(CmdPipelineBarrier)(
|
||||
|
|
@ -3791,10 +3791,10 @@ zink_resource_image_barrier2(struct zink_context *ctx, struct zink_resource *res
|
|||
if (res->obj->needs_zs_evaluate)
|
||||
imb.pNext = &res->obj->zs_evaluate;
|
||||
res->obj->needs_zs_evaluate = false;
|
||||
if (res->dmabuf_acquire) {
|
||||
imb.srcQueueFamilyIndex = VK_QUEUE_FAMILY_FOREIGN_EXT;
|
||||
if (res->queue != zink_screen(ctx->base.screen)->gfx_queue && res->queue != VK_QUEUE_FAMILY_IGNORED) {
|
||||
imb.srcQueueFamilyIndex = res->queue;
|
||||
imb.dstQueueFamilyIndex = zink_screen(ctx->base.screen)->gfx_queue;
|
||||
res->dmabuf_acquire = false;
|
||||
res->queue = VK_QUEUE_FAMILY_IGNORED;
|
||||
}
|
||||
VkDependencyInfo dep = {
|
||||
VK_STRUCTURE_TYPE_DEPENDENCY_INFO,
|
||||
|
|
@ -4366,7 +4366,7 @@ zink_flush_resource(struct pipe_context *pctx,
|
|||
}
|
||||
ctx->batch.swapchain = res;
|
||||
} else if (res->dmabuf)
|
||||
res->dmabuf_acquire = true;
|
||||
res->queue = VK_QUEUE_FAMILY_FOREIGN_EXT;
|
||||
}
|
||||
|
||||
static struct pipe_stream_output_target *
|
||||
|
|
|
|||
|
|
@ -1232,8 +1232,10 @@ resource_create(struct pipe_screen *pscreen,
|
|||
res->need_2D = (screen->need_2D_zs && util_format_is_depth_or_stencil(templ->format)) ||
|
||||
(screen->need_2D_sparse && (templ->flags & PIPE_RESOURCE_FLAG_SPARSE));
|
||||
}
|
||||
res->dmabuf = res->dmabuf_acquire = whandle && whandle->type == WINSYS_HANDLE_TYPE_FD;
|
||||
res->layout = res->dmabuf_acquire ? VK_IMAGE_LAYOUT_PREINITIALIZED : VK_IMAGE_LAYOUT_UNDEFINED;
|
||||
res->dmabuf = whandle && whandle->type == WINSYS_HANDLE_TYPE_FD;
|
||||
if (res->dmabuf)
|
||||
res->queue = VK_QUEUE_FAMILY_FOREIGN_EXT;
|
||||
res->layout = res->dmabuf ? VK_IMAGE_LAYOUT_PREINITIALIZED : VK_IMAGE_LAYOUT_UNDEFINED;
|
||||
res->linear = linear;
|
||||
res->aspect = aspect_from_format(templ->format);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1236,7 +1236,6 @@ struct zink_resource {
|
|||
};
|
||||
|
||||
bool swapchain;
|
||||
bool dmabuf_acquire;
|
||||
bool dmabuf;
|
||||
unsigned dt_stride;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue