From cdff4af38da1d832e35d8c057d698f38c64b2932 Mon Sep 17 00:00:00 2001 From: DanielSvoboda Date: Sun, 4 Aug 2024 17:17:34 -0300 Subject: [PATCH] add-SurfaceFormat (#365) [Debug] liverpool_to_vk.cpp:SurfaceFormat:395: Unreachable code! CUSA24620 Unknown data_format=7 and num_format=7 CUSA03082 Unknown data_format=2 and num_format=4 CUSA19345 Unknown data_format=34 and num_format=7 CUSA02411 Unknown data_format=1 and num_format=9 A duplicate was also removed. --- .../renderer_vulkan/liverpool_to_vk.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp index 82ccf5af..01526265 100644 --- a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp +++ b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp @@ -342,6 +342,7 @@ std::span GetAllFormats() { vk::Format::eR16G16Unorm, vk::Format::eR16G16B16A16Sscaled, vk::Format::eR16G16Sscaled, + vk::Format::eE5B9G9R9UfloatPack32, }; return formats; } @@ -410,10 +411,6 @@ vk::Format SurfaceFormat(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat nu num_format == AmdGpu::NumberFormat::Unorm) { return vk::Format::eR16G16Unorm; } - if (data_format == AmdGpu::DataFormat::Format10_11_11 && - num_format == AmdGpu::NumberFormat::Float) { - return vk::Format::eB10G11R11UfloatPack32; - } if (data_format == AmdGpu::DataFormat::Format2_10_10_10 && num_format == AmdGpu::NumberFormat::Unorm) { return vk::Format::eA2B10G10R10UnormPack32; @@ -550,6 +547,20 @@ vk::Format SurfaceFormat(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat nu if (data_format == AmdGpu::DataFormat::Format8 && num_format == AmdGpu::NumberFormat::Srgb) { return vk::Format::eR8Srgb; } + if (data_format == AmdGpu::DataFormat::Format11_11_10 && + num_format == AmdGpu::NumberFormat::Float) { + return vk::Format::eB10G11R11UfloatPack32; + } + if (data_format == AmdGpu::DataFormat::Format16 && num_format == AmdGpu::NumberFormat::Uint) { + return vk::Format::eR16Uint; + } + if (data_format == AmdGpu::DataFormat::Format5_9_9_9 && + num_format == AmdGpu::NumberFormat::Float) { + return vk::Format::eE5B9G9R9UfloatPack32; + } + if (data_format == AmdGpu::DataFormat::Format8 && num_format == AmdGpu::NumberFormat::Snorm) { + return vk::Format::eR8Snorm; + } UNREACHABLE_MSG("Unknown data_format={} and num_format={}", u32(data_format), u32(num_format)); }