summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ameerj2021-10-07 02:15:16 -0400
committerGravatar Fernando Sahmkow2021-11-16 22:11:30 +0100
commit89a7e566c7a101d688e96641cc2a485f2da54d4b (patch)
tree4befc90f801f552f2efba6f477396b6f359524ce /src
parentvk_texture_cache: Fix early returns on unsupported scales (diff)
downloadyuzu-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.cpp10
-rw-r--r--src/video_core/vulkan_common/vulkan_device.h8
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.