hwcontext_vulkan: add the mapped software frame as an upload dependency

We do uploads asynchronously, and we map the software frames in
order to avoid 2-stage copying. However, whilst we added a dependency
upon the mapped buffers, we did not add the original frame backing
those buffers as a dependency.

This caused issues on RADV, particularly with RGB images.
This commit is contained in:
Lynne 2024-11-18 06:16:45 +01:00
parent 1876026f83
commit d0ab49e3e7
No known key found for this signature in database
GPG Key ID: A2FEA5F03F034464

View File

@ -4154,8 +4154,18 @@ static int vulkan_transfer_frame(AVHWFramesContext *hwfc,
if (err < 0) if (err < 0)
goto end; goto end;
/* No need to declare buf deps for synchronous transfers */ /* No need to declare buf deps for synchronous transfers (downloads) */
if (upload) { if (upload) {
/* Add the software frame backing the buffers if we're host mapping */
if (host_mapped) {
err = ff_vk_exec_add_dep_sw_frame(&p->vkctx, exec, swf);
if (err < 0) {
ff_vk_exec_discard_deps(&p->vkctx, exec);
goto end;
}
}
/* Add the buffers as a dependency */
err = ff_vk_exec_add_dep_buf(&p->vkctx, exec, bufs, nb_bufs, 1); err = ff_vk_exec_add_dep_buf(&p->vkctx, exec, bufs, nb_bufs, 1);
if (err < 0) { if (err < 0) {
ff_vk_exec_discard_deps(&p->vkctx, exec); ff_vk_exec_discard_deps(&p->vkctx, exec);