Browse Source

vk_texture_cache: Fix unsupported blit format error checking

nce_cpp
ameerj 4 years ago
committed by Fernando Sahmkow
parent
commit
83aec496da
  1. 10
      src/video_core/renderer_vulkan/vk_texture_cache.cpp
  2. 8
      src/video_core/vulkan_common/vulkan_device.h

10
src/video_core/renderer_vulkan/vk_texture_cache.cpp

@ -1137,11 +1137,11 @@ bool Image::ScaleUp() {
const auto& device = runtime->device;
const PixelFormat format = StorageFormat(info.format);
const auto format_info = MaxwellToVK::SurfaceFormat(device, FormatType::Optimal, false, format);
const auto similar = device.GetSupportedFormat(
format_info.format, (VK_FORMAT_FEATURE_BLIT_SRC_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT),
FormatType::Optimal);
if (similar != format_info.format) {
return true;
const auto blit_usage = VK_FORMAT_FEATURE_BLIT_SRC_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT;
if (!device.IsFormatSupported(format_info.format, blit_usage, FormatType::Optimal)) {
LOG_ERROR(Render_Vulkan, "Device does not support scaling format {}", format);
// TODO: Use helper blits where applicable
return false;
}
if (!scaled_image) {
const u32 up = resolution.up_scale;

8
src/video_core/vulkan_common/vulkan_device.h

@ -40,6 +40,10 @@ public:
VkFormat GetSupportedFormat(VkFormat wanted_format, VkFormatFeatureFlags wanted_usage,
FormatType format_type) const;
/// Returns true if a format is supported.
bool IsFormatSupported(VkFormat wanted_format, VkFormatFeatureFlags wanted_usage,
FormatType format_type) const;
/// Reports a device loss.
void ReportLoss() const;
@ -370,10 +374,6 @@ private:
/// Returns true if the device natively supports blitting depth stencil images.
bool TestDepthStencilBlits() const;
/// Returns true if a format is supported.
bool IsFormatSupported(VkFormat wanted_format, VkFormatFeatureFlags wanted_usage,
FormatType format_type) const;
VkInstance instance; ///< Vulkan instance.
vk::DeviceDispatch dld; ///< Device function pointers.
vk::PhysicalDevice physical; ///< Physical device.

Loading…
Cancel
Save