summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2020-12-25 02:04:31 -0300
committerGravatar ReinUsesLisp2020-12-31 02:07:33 -0300
commitdce8720780d7fbbe4741a68ec11232d6ea304b06 (patch)
tree449c8051b70bc968c040ab36189b1e26e2ba4748 /src
parentrenderer_vulkan: Create debug callback on separate file and throw (diff)
downloadyuzu-dce8720780d7fbbe4741a68ec11232d6ea304b06.tar.gz
yuzu-dce8720780d7fbbe4741a68ec11232d6ea304b06.tar.xz
yuzu-dce8720780d7fbbe4741a68ec11232d6ea304b06.zip
renderer_vulkan: Catch and report exceptions
Move more Vulkan code to report errors with exceptions and report them through a log before notifying it with an error boolean for backwards compatibility. In the future we can replace the rasterizer two-step initialization to always use exceptions.
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_vulkan/renderer_vulkan.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp
index 8e01dc191..ccdc86ed7 100644
--- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp
+++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp
@@ -137,7 +137,7 @@ void RendererVulkan::SwapBuffers(const Tegra::FramebufferConfig* framebuffer) {
137 render_window.OnFrameDisplayed(); 137 render_window.OnFrameDisplayed();
138} 138}
139 139
140bool RendererVulkan::Init() { 140bool RendererVulkan::Init() try {
141 library = OpenLibrary(); 141 library = OpenLibrary();
142 std::tie(instance, instance_version) = CreateInstance( 142 std::tie(instance, instance_version) = CreateInstance(
143 library, dld, render_window.GetWindowInfo().type, true, Settings::values.renderer_debug); 143 library, dld, render_window.GetWindowInfo().type, true, Settings::values.renderer_debug);
@@ -168,8 +168,11 @@ bool RendererVulkan::Init() {
168 blit_screen = 168 blit_screen =
169 std::make_unique<VKBlitScreen>(cpu_memory, render_window, *rasterizer, *device, 169 std::make_unique<VKBlitScreen>(cpu_memory, render_window, *rasterizer, *device,
170 *memory_manager, *swapchain, *scheduler, screen_info); 170 *memory_manager, *swapchain, *scheduler, screen_info);
171
172 return true; 171 return true;
172
173} catch (const vk::Exception& exception) {
174 LOG_ERROR(Render_Vulkan, "Vulkan initialization failed with error: {}", exception.what());
175 return false;
173} 176}
174 177
175void RendererVulkan::ShutDown() { 178void RendererVulkan::ShutDown() {