From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id 14D534CA3D
	for <ffmpegdev@gitmailbox.com>; Sat, 12 Apr 2025 07:24:48 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AD88768C69F;
	Sat, 12 Apr 2025 10:23:18 +0300 (EEST)
Received: from vidala.pars.ee (vidala.pars.ee [116.203.72.101])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0167868C53B
 for <ffmpeg-devel@ffmpeg.org>; Sat, 12 Apr 2025 10:23:01 +0300 (EEST)
DKIM-Signature: v=1; a=rsa-sha256; s=202405r; d=lynne.ee; c=relaxed/relaxed;
 h=Message-ID:Date:Subject:To:From; t=1744442581; bh=45ljgWZce25Je3U/mV6gMbn
 3hEmBPXcLDQLtmPY/SqU=; b=W3Noq6c2edHb0tazuVV6XUWgw+eyj2C2PL4dCUUQBGm1fAoh6w
 uOLjfC7Tq3NpjdmYBo7KpmyHkyhI9aJXLxZr5jULhFRnX46QNL3p+pM112GlyDO5wei2H9xpgiu
 pCPgjiS5lWlkss1tJvUgrDqhfQ4s2xCcMJf1OIhEWvzA5HXmymBHRJp/n0AOpGh/Jd7Z/JllwaF
 CF9pAjtb/wjWx8iB4KrefwPaa0ylFh7S5SsfpiWzk3U8NvXOZU6nNV1MTjwAv5C9yhL7IgJreLD
 31IU4clb0k9YeDfZoQFM0JzTg9LWz2ytIg4M4pS/WnECSnCafJ+1VmfMj151iAH1+Tw==;
DKIM-Signature: v=1; a=ed25519-sha256; s=202405e; d=lynne.ee; c=relaxed/relaxed;
 h=Message-ID:Date:Subject:To:From; t=1744442581; bh=45ljgWZce25Je3U/mV6gMbn
 3hEmBPXcLDQLtmPY/SqU=; b=ohko07ZYyUWRLVpdt9tHSSOe/fbt6vvObwjcsNWxfoL7z+qB9c
 3C0q3xXpEk9afoYjjmC0QAfwp5LAf6rUWsDA==;
From: Lynne <dev@lynne.ee>
To: ffmpeg-devel@ffmpeg.org
Date: Sat, 12 Apr 2025 09:22:40 +0200
Message-ID: <20250412072256.77815-9-dev@lynne.ee>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <20250412072256.77815-1-dev@lynne.ee>
References: <20250412072256.77815-1-dev@lynne.ee>
MIME-Version: 1.0
Subject: [FFmpeg-devel] [PATCH 09/18] vulkan_ffv1: fix reset shader
 dependencies
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Cc: Lynne <dev@lynne.ee>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/20250412072256.77815-9-dev@lynne.ee/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

Without a barrier upfront, the reset shader may read data fields not
yet set by the setup shader.
---
 libavcodec/vulkan_ffv1.c | 36 +++++++++++++++++-------------------
 1 file changed, 17 insertions(+), 19 deletions(-)

diff --git a/libavcodec/vulkan_ffv1.c b/libavcodec/vulkan_ffv1.c
index ccff927200..d90db291aa 100644
--- a/libavcodec/vulkan_ffv1.c
+++ b/libavcodec/vulkan_ffv1.c
@@ -375,31 +375,29 @@ static int vk_ffv1_end_frame(AVCodecContext *avctx)
     fp->tmp_data = NULL;
 
     /* Entry barrier for the slice state */
-    if (!(f->picture.f->flags & AV_FRAME_FLAG_KEY)) {
-        buf_bar[nb_buf_bar++] = (VkBufferMemoryBarrier2) {
-            .sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2,
-            .srcStageMask = slice_state->stage,
-            .dstStageMask = VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,
-            .srcAccessMask = slice_state->access,
-            .dstAccessMask = VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT,
-            .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
-            .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
-            .buffer = slice_state->buf,
-            .offset = 0,
-            .size = VK_WHOLE_SIZE,
-        };
-    }
+    buf_bar[nb_buf_bar++] = (VkBufferMemoryBarrier2) {
+        .sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2,
+        .srcStageMask = slice_state->stage,
+        .dstStageMask = VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,
+        .srcAccessMask = slice_state->access,
+        .dstAccessMask = VK_ACCESS_2_SHADER_STORAGE_READ_BIT |
+                         VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT,
+        .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
+        .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
+        .buffer = slice_state->buf,
+        .offset = 0,
+        .size = fp->slice_data_size*f->slice_count,
+    };
 
     vk->CmdPipelineBarrier2(exec->buf, &(VkDependencyInfo) {
         .sType = VK_STRUCTURE_TYPE_DEPENDENCY_INFO,
         .pBufferMemoryBarriers = buf_bar,
         .bufferMemoryBarrierCount = nb_buf_bar,
     });
-    if (nb_buf_bar) {
-        slice_state->stage = buf_bar[1].dstStageMask;
-        slice_state->access = buf_bar[1].dstAccessMask;
-        nb_buf_bar = 0;
-    }
+    slice_state->stage = buf_bar[0].dstStageMask;
+    slice_state->access = buf_bar[0].dstAccessMask;
+    nb_buf_bar = 0;
+    nb_img_bar = 0;
 
     /* Setup shader */
     ff_vk_shader_update_desc_buffer(&ctx->s, exec, &fv->setup,
-- 
2.47.2
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".