aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLynne <dev@lynne.ee>2024-11-18 06:16:45 +0100
committerLynne <dev@lynne.ee>2024-11-18 07:54:20 +0100
commitd0ab49e3e74e07dce6c3b8b0567812fdd9a708a5 (patch)
tree59f1bcae6ec042df640da545a3c4bacd28373b01
parent1876026f83bd1d270b014bab35139445245b5d1b (diff)
downloadffmpeg-d0ab49e3e74e07dce6c3b8b0567812fdd9a708a5.tar.gz
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.
-rw-r--r--libavutil/hwcontext_vulkan.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
index c2abaf8466..6a3f015031 100644
--- a/libavutil/hwcontext_vulkan.c
+++ b/libavutil/hwcontext_vulkan.c
@@ -4154,8 +4154,18 @@ static int vulkan_transfer_frame(AVHWFramesContext *hwfc,
if (err < 0)
goto end;
- /* No need to declare buf deps for synchronous transfers */
+ /* No need to declare buf deps for synchronous transfers (downloads) */
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);
if (err < 0) {
ff_vk_exec_discard_deps(&p->vkctx, exec);