diff --git a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp index 3ae19a82..57593e91 100644 --- a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp +++ b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp @@ -287,8 +287,8 @@ vk::BorderColor BorderColor(AmdGpu::BorderColor color) { std::span GetAllFormats() { static constexpr std::array formats{ + vk::Format::eA2B10G10R10SnormPack32, vk::Format::eA2B10G10R10UnormPack32, - vk::Format::eA2R10G10B10SnormPack32, vk::Format::eA2R10G10B10UnormPack32, vk::Format::eB5G6R5UnormPack16, vk::Format::eB8G8R8A8Srgb, @@ -424,6 +424,10 @@ vk::Format SurfaceFormat(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat nu num_format == AmdGpu::NumberFormat::Unorm) { return vk::Format::eA2B10G10R10UnormPack32; } + if (data_format == AmdGpu::DataFormat::Format2_10_10_10 && + num_format == AmdGpu::NumberFormat::Snorm) { + return vk::Format::eA2B10G10R10SnormPack32; + } if (data_format == AmdGpu::DataFormat::FormatBc7 && num_format == AmdGpu::NumberFormat::Srgb) { return vk::Format::eBc7SrgbBlock; } @@ -472,14 +476,6 @@ vk::Format SurfaceFormat(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat nu num_format == AmdGpu::NumberFormat::Snorm) { return vk::Format::eR16G16Snorm; } - if (data_format == AmdGpu::DataFormat::Format2_10_10_10 && - num_format == AmdGpu::NumberFormat::Unorm) { - return vk::Format::eA2R10G10B10UnormPack32; - } - if (data_format == AmdGpu::DataFormat::Format2_10_10_10 && - num_format == AmdGpu::NumberFormat::Snorm) { - return vk::Format::eA2R10G10B10SnormPack32; - } if (data_format == AmdGpu::DataFormat::Format10_11_11 && num_format == AmdGpu::NumberFormat::Float) { return vk::Format::eB10G11R11UfloatPack32; diff --git a/src/video_core/renderer_vulkan/vk_shader_cache.cpp b/src/video_core/renderer_vulkan/vk_shader_cache.cpp index 76255712..9250f84c 100644 --- a/src/video_core/renderer_vulkan/vk_shader_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_shader_cache.cpp @@ -107,7 +107,7 @@ Shader::Info MakeShaderInfo(const GuestProgram& pgm, const AmdGpu::Liverpool::Re ShaderCache::ShaderCache(const Instance& instance_, AmdGpu::Liverpool* liverpool_) : instance{instance_}, liverpool{liverpool_}, inst_pool{8192}, block_pool{512} { profile = Shader::Profile{ - .supported_spirv = 0x00010600U, + .supported_spirv = instance.ApiVersion() >= VK_API_VERSION_1_3 ? 0x00010600U : 0x00010500U, .subgroup_size = instance.SubgroupSize(), .support_explicit_workgroup_layout = true, };