vk_texture_cache: Fix unsupported blit format error checking
This commit is contained in:
parent
f8339cd703
commit
89a7e566c7
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user