summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/renderer_vulkan.cpp
diff options
context:
space:
mode:
authorliamwhite <liamwhite@users.noreply.github.com>2023-06-28 18:53:17 +0200
committerGitHub <noreply@github.com>2023-06-28 18:53:17 +0200
commitb60b70e86d7c32b06a7580ddc286279a83587e11 (patch)
treeea6092ba2bda4b2f685926ba133faedd5c65fa57 /src/video_core/renderer_vulkan/renderer_vulkan.cpp
parentMerge pull request #10933 from merryhime/dunno (diff)
parentrenderer_vulkan: Prevent crashes when blitting depth stencil (diff)
downloadyuzu-b60b70e86d7c32b06a7580ddc286279a83587e11.tar
yuzu-b60b70e86d7c32b06a7580ddc286279a83587e11.tar.gz
yuzu-b60b70e86d7c32b06a7580ddc286279a83587e11.tar.bz2
yuzu-b60b70e86d7c32b06a7580ddc286279a83587e11.tar.lz
yuzu-b60b70e86d7c32b06a7580ddc286279a83587e11.tar.xz
yuzu-b60b70e86d7c32b06a7580ddc286279a83587e11.tar.zst
yuzu-b60b70e86d7c32b06a7580ddc286279a83587e11.zip
Diffstat (limited to 'src/video_core/renderer_vulkan/renderer_vulkan.cpp')
-rw-r--r--src/video_core/renderer_vulkan/renderer_vulkan.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp
index ddf28ca28..454bb66a4 100644
--- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp
+++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp
@@ -12,6 +12,7 @@
#include <fmt/format.h>
#include "common/logging/log.h"
+#include "common/polyfill_ranges.h"
#include "common/scope_exit.h"
#include "common/settings.h"
#include "common/telemetry.h"
@@ -65,6 +66,21 @@ std::string BuildCommaSeparatedExtensions(
return fmt::format("{}", fmt::join(available_extensions, ","));
}
+DebugCallback MakeDebugCallback(const vk::Instance& instance, const vk::InstanceDispatch& dld) {
+ if (!Settings::values.renderer_debug) {
+ return DebugCallback{};
+ }
+ const std::optional properties = vk::EnumerateInstanceExtensionProperties(dld);
+ const auto it = std::ranges::find_if(*properties, [](const auto& prop) {
+ return std::strcmp(VK_EXT_DEBUG_UTILS_EXTENSION_NAME, prop.extensionName) == 0;
+ });
+ if (it != properties->end()) {
+ return CreateDebugUtilsCallback(instance);
+ } else {
+ return CreateDebugReportCallback(instance);
+ }
+}
+
} // Anonymous namespace
Device CreateDevice(const vk::Instance& instance, const vk::InstanceDispatch& dld,
@@ -87,7 +103,7 @@ RendererVulkan::RendererVulkan(Core::TelemetrySession& telemetry_session_,
cpu_memory(cpu_memory_), gpu(gpu_), library(OpenLibrary(context.get())),
instance(CreateInstance(*library, dld, VK_API_VERSION_1_1, render_window.GetWindowInfo().type,
Settings::values.renderer_debug.GetValue())),
- debug_callback(Settings::values.renderer_debug ? CreateDebugCallback(instance) : nullptr),
+ debug_callback(MakeDebugCallback(instance, dld)),
surface(CreateSurface(instance, render_window.GetWindowInfo())),
device(CreateDevice(instance, dld, *surface)), memory_allocator(device), state_tracker(),
scheduler(device, state_tracker),