From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 2DC6B4E205 for ; Mon, 10 Mar 2025 03:09:31 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7FE4168E7E3; Mon, 10 Mar 2025 05:08:50 +0200 (EET) Received: from vidala.pars.ee (vidala.pars.ee [116.203.72.101]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 18E5468E7AF for ; Mon, 10 Mar 2025 05:08:40 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; s=202405r; d=lynne.ee; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1741576119; bh=AumDwTwMp2nhGjMc/VHBejz fxycaAE908XoVQVuF48k=; b=AaUEaoij0joKyS3hPbVCFZk7yPuu+ng8r0FftkEMlXMCC/FuB4 RqWrIxZjbCatSHoWDhsko+ZRXln4Dgl9xf8NyB2tSts3BbQkQ6/TgAA1zwK150pgWEvNCPiOsWo jl/wOEf5grVPxLimpf79H4s7GBADLibKKU6HRTBIVIfNaJ3FK1p+RqdC4OgBFbO5lPH79waBXVO 5UfUkSNwIhGhE6pytGnGO3OatTK9guqjMbuO5EzNm0t0v6rcoHpxjZQOesBMXsmH00+yZuO2gED wyYhI/np5mMJTtHb09IMfdcB2n+r21H2j2JwUZrHLF1BKy7BCh3oIBUn+deMmhudysQ==; DKIM-Signature: v=1; a=ed25519-sha256; s=202405e; d=lynne.ee; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1741576119; bh=AumDwTwMp2nhGjMc/VHBejz fxycaAE908XoVQVuF48k=; b=+e7q4rvW078JkA65MWc+cM+B/QklNyiyQlEWE9R/y9l12i2VIq TOZq8/vpLhwGhQlQJwL7cdNiwj1vd8AN1VCw==; From: Lynne To: ffmpeg-devel@ffmpeg.org Date: Mon, 10 Mar 2025 04:08:23 +0100 Message-ID: <20250310030837.60814-4-dev@lynne.ee> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250310030837.60814-1-dev@lynne.ee> References: <20250310030837.60814-1-dev@lynne.ee> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 04/13] vulkan: workaround BGR storage image undefined behaviour X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Lynne Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --- libavutil/vulkan.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index 7f6c9cc039..7b0f77b076 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -1746,6 +1746,29 @@ static VkFormat map_fmt_to_rep(VkFormat fmt, enum FFVkShaderRepFormat rep_fmt) return VK_FORMAT_UNDEFINED; } +static void bgr_workaround(AVVulkanFramesContext *vkfc, + VkImageViewCreateInfo *ci) +{ + if (!(vkfc->usage & VK_IMAGE_USAGE_STORAGE_BIT)) + return; + switch (ci->format) { +#define REMAP(src, dst) \ + case src: \ + ci->format = dst; \ + return; + REMAP(VK_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_R8G8B8A8_UNORM) + REMAP(VK_FORMAT_B8G8R8A8_SINT, VK_FORMAT_R8G8B8A8_SINT) + REMAP(VK_FORMAT_B8G8R8A8_UINT, VK_FORMAT_R8G8B8A8_UINT) + REMAP(VK_FORMAT_B8G8R8_UNORM, VK_FORMAT_R8G8B8_UNORM) + REMAP(VK_FORMAT_B8G8R8_SINT, VK_FORMAT_R8G8B8_SINT) + REMAP(VK_FORMAT_B8G8R8_UINT, VK_FORMAT_R8G8B8_UINT) + REMAP(VK_FORMAT_A2B10G10R10_UNORM_PACK32, VK_FORMAT_A2R10G10B10_UNORM_PACK32) +#undef REMAP + default: + return; + } +} + int ff_vk_create_imageview(FFVulkanContext *s, VkImageView *img_view, VkImageAspectFlags *aspect, AVFrame *f, int plane, enum FFVkShaderRepFormat rep_fmt) @@ -1777,6 +1800,7 @@ int ff_vk_create_imageview(FFVulkanContext *s, .layerCount = 1, }, }; + bgr_workaround(vkfc, &view_create_info); if (view_create_info.format == VK_FORMAT_UNDEFINED) { av_log(s, AV_LOG_ERROR, "Unable to find a compatible representation " "of format %i and mode %i\n", @@ -1838,6 +1862,7 @@ int ff_vk_create_imageviews(FFVulkanContext *s, FFVkExecContext *e, .layerCount = 1, }, }; + bgr_workaround(vkfc, &view_create_info); if (view_create_info.format == VK_FORMAT_UNDEFINED) { av_log(s, AV_LOG_ERROR, "Unable to find a compatible representation " "of format %i and mode %i\n", -- 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".