vk_texture_cache: Fix unsupported blit format error checking

master
ameerj 2021-10-07 02:15:16 +07:00 committed by Fernando Sahmkow
parent f8339cd703
commit 89a7e566c7
2 changed files with 9 additions and 9 deletions

@ -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;

@ -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.