From e30255e0d2a32f7cc31d9e97318a440526ad05bd Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Sat, 14 Sep 2024 07:12:08 -0700 Subject: [PATCH] vulkan: Disable exceptions for getImageFormatProperties and account for errors. (#906) --- src/video_core/texture_cache/image.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/video_core/texture_cache/image.cpp b/src/video_core/texture_cache/image.cpp index 154171bf1..9e8c38f0d 100644 --- a/src/video_core/texture_cache/image.cpp +++ b/src/video_core/texture_cache/image.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#define VULKAN_HPP_NO_EXCEPTIONS #include "common/assert.h" #include "video_core/renderer_vulkan/liverpool_to_vk.h" #include "video_core/renderer_vulkan/vk_instance.h" @@ -150,6 +151,9 @@ Image::Image(const Vulkan::Instance& instance_, Vulkan::Scheduler& scheduler_, const auto supported_format = instance->GetSupportedFormat(info.pixel_format); const auto properties = instance->GetPhysicalDevice().getImageFormatProperties( supported_format, info.type, tiling, usage, flags); + const auto supported_samples = properties.result == vk::Result::eSuccess + ? properties.value.sampleCounts + : vk::SampleCountFlagBits::e1; const vk::ImageCreateInfo image_ci = { .flags = flags, @@ -162,7 +166,7 @@ Image::Image(const Vulkan::Instance& instance_, Vulkan::Scheduler& scheduler_, }, .mipLevels = static_cast(info.resources.levels), .arrayLayers = static_cast(info.resources.layers), - .samples = LiverpoolToVK::NumSamples(info.num_samples, properties.sampleCounts), + .samples = LiverpoolToVK::NumSamples(info.num_samples, supported_samples), .tiling = tiling, .usage = usage, .initialLayout = vk::ImageLayout::eUndefined,