From 15b9a373cca527cf011a626867aaf919cdcd7afb Mon Sep 17 00:00:00 2001 From: PavelBARABANOV Date: Sun, 16 Nov 2025 20:07:30 +0300 Subject: [PATCH] [vk] Add Android-specific sRGB fallback format --- src/video_core/vulkan_common/vulkan_device.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 1565edcca2..6baddecb38 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -93,17 +93,15 @@ constexpr std::array VK_FORMAT_A4B4G4R4_UNORM_PACK16{ // B10G11R11_UFLOAT (R11G11B10F) - PRIMARY HDR format for Nintendo Switch // Nintendo Switch hardware validation: FULL support (COLOR_ATTACHMENT + STORAGE_IMAGE + BLEND) // Reference: vp_gpuinfo_nintendo_switch_v2_495_0_0_0 - All required feature bits present -// -// Fallback strategy: Degrade to LDR instead of expensive HDR emulation -// - RGBA8 UNORM/SRGB: Universal support, 32-bit (same size as B10G11R11), acceptable quality -// - RGB10A2: Better precision if available, still 32-bit -// - RGBA16F: Last resort only if RGB8 variants fail (should never happen) constexpr std::array B10G11R11_UFLOAT_PACK32{ - VK_FORMAT_A8B8G8R8_UNORM_PACK32, // Primary fallback: RGBA8 LDR (32-bit, universal) - VK_FORMAT_A2B10G10R10_UNORM_PACK32, // Better precision: RGB10A2 (32-bit, common) - VK_FORMAT_A8B8G8R8_SRGB_PACK32, // sRGB variant (for gamma-correct fallback) - VK_FORMAT_R16G16B16A16_SFLOAT, // Emergency fallback: RGBA16F (64-bit, should never reach) - VK_FORMAT_UNDEFINED, + #ifdef ANDROID + VK_FORMAT_A8B8G8R8_SRGB_PACK32, // sRGB variant (for gamma-correct fallback) + #else + VK_FORMAT_A8B8G8R8_UNORM_PACK32, // Primary fallback: RGBA8 LDR (32-bit, universal) + VK_FORMAT_A2B10G10R10_UNORM_PACK32, // Better precision: RGB10A2 (32-bit, common) + #endif + VK_FORMAT_R16G16B16A16_SFLOAT, // Emergency fallback: RGBA16F (64-bit, should never reach) + VK_FORMAT_UNDEFINED, }; } // namespace Alternatives