From c107d9edcf6363c0390a0645fcda15741e17fa01 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Sun, 24 May 2026 10:07:28 +0800 Subject: [PATCH] [Fix] (MG_Backend/DirectVulkan): use RGBA format as RGB format - some drivers (Adreno as I tested) lacks VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT on 24-bit RGB formats, use 32-bit ones as a fallback. --- .../MG_Backend/DirectVulkan/Renderer/VulkanRenderer.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.cpp b/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.cpp index 64af8d27..1b4142ed 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.cpp +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.cpp @@ -2350,7 +2350,11 @@ void main() { "GetOrCreatePipeline: blend is enabled on draw buffer %u but no complete texture attachment is bound", i); textureExternalIndex = texture->GetExternalIndex(); - colorAttachmentFormat = MG_Util::ConvertTextureInternalFormatToVkEnum(texture->GetFormat()); + auto* textureResource = m_textureManager->SyncTextureAndGetDescriptor(*texture); + MOBILEGL_ASSERT(textureResource != nullptr, + "GetOrCreatePipeline: failed to sync blend color attachment textureId=%d", + texture->GetExternalIndex()); + colorAttachmentFormat = textureResource->format; } #if MOBILEGL_LOG_ACTIVE_LEVEL <= MOBILEGL_LOG_LEVEL_DEBUG