diff options
| author | 2021-10-07 02:15:16 -0400 | |
|---|---|---|
| committer | 2021-11-16 22:11:30 +0100 | |
| commit | 89a7e566c7a101d688e96641cc2a485f2da54d4b (patch) | |
| tree | 4befc90f801f552f2efba6f477396b6f359524ce /src | |
| parent | vk_texture_cache: Fix early returns on unsupported scales (diff) | |
| download | yuzu-89a7e566c7a101d688e96641cc2a485f2da54d4b.tar.gz yuzu-89a7e566c7a101d688e96641cc2a485f2da54d4b.tar.xz yuzu-89a7e566c7a101d688e96641cc2a485f2da54d4b.zip | |
vk_texture_cache: Fix unsupported blit format error checking
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.cpp | 10 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.h | 8 |
2 files changed, 9 insertions, 9 deletions
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index 1ab2b1fe9..65506f75e 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp | |||
| @@ -1137,11 +1137,11 @@ bool Image::ScaleUp() { | |||
| 1137 | const auto& device = runtime->device; | 1137 | const auto& device = runtime->device; |
| 1138 | const PixelFormat format = StorageFormat(info.format); | 1138 | const PixelFormat format = StorageFormat(info.format); |
| 1139 | const auto format_info = MaxwellToVK::SurfaceFormat(device, FormatType::Optimal, false, format); | 1139 | const auto format_info = MaxwellToVK::SurfaceFormat(device, FormatType::Optimal, false, format); |
| 1140 | const auto similar = device.GetSupportedFormat( | 1140 | const auto blit_usage = VK_FORMAT_FEATURE_BLIT_SRC_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT; |
| 1141 | format_info.format, (VK_FORMAT_FEATURE_BLIT_SRC_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT), | 1141 | if (!device.IsFormatSupported(format_info.format, blit_usage, FormatType::Optimal)) { |
| 1142 | FormatType::Optimal); | 1142 | LOG_ERROR(Render_Vulkan, "Device does not support scaling format {}", format); |
| 1143 | if (similar != format_info.format) { | 1143 | // TODO: Use helper blits where applicable |
| 1144 | return true; | 1144 | return false; |
| 1145 | } | 1145 | } |
| 1146 | if (!scaled_image) { | 1146 | if (!scaled_image) { |
| 1147 | const u32 up = resolution.up_scale; | 1147 | const u32 up = resolution.up_scale; |
diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index 2d5daf6cd..10653ac6b 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h | |||
| @@ -40,6 +40,10 @@ public: | |||
| 40 | VkFormat GetSupportedFormat(VkFormat wanted_format, VkFormatFeatureFlags wanted_usage, | 40 | VkFormat GetSupportedFormat(VkFormat wanted_format, VkFormatFeatureFlags wanted_usage, |
| 41 | FormatType format_type) const; | 41 | FormatType format_type) const; |
| 42 | 42 | ||
| 43 | /// Returns true if a format is supported. | ||
| 44 | bool IsFormatSupported(VkFormat wanted_format, VkFormatFeatureFlags wanted_usage, | ||
| 45 | FormatType format_type) const; | ||
| 46 | |||
| 43 | /// Reports a device loss. | 47 | /// Reports a device loss. |
| 44 | void ReportLoss() const; | 48 | void ReportLoss() const; |
| 45 | 49 | ||
| @@ -370,10 +374,6 @@ private: | |||
| 370 | /// Returns true if the device natively supports blitting depth stencil images. | 374 | /// Returns true if the device natively supports blitting depth stencil images. |
| 371 | bool TestDepthStencilBlits() const; | 375 | bool TestDepthStencilBlits() const; |
| 372 | 376 | ||
| 373 | /// Returns true if a format is supported. | ||
| 374 | bool IsFormatSupported(VkFormat wanted_format, VkFormatFeatureFlags wanted_usage, | ||
| 375 | FormatType format_type) const; | ||
| 376 | |||
| 377 | VkInstance instance; ///< Vulkan instance. | 377 | VkInstance instance; ///< Vulkan instance. |
| 378 | vk::DeviceDispatch dld; ///< Device function pointers. | 378 | vk::DeviceDispatch dld; ///< Device function pointers. |
| 379 | vk::PhysicalDevice physical; ///< Physical device. | 379 | vk::PhysicalDevice physical; ///< Physical device. |