diff options
| author | 2020-12-25 02:04:31 -0300 | |
|---|---|---|
| committer | 2020-12-31 02:07:33 -0300 | |
| commit | dce8720780d7fbbe4741a68ec11232d6ea304b06 (patch) | |
| tree | 449c8051b70bc968c040ab36189b1e26e2ba4748 /src | |
| parent | renderer_vulkan: Create debug callback on separate file and throw (diff) | |
| download | yuzu-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.cpp | 7 |
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 | ||
| 140 | bool RendererVulkan::Init() { | 140 | bool 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 | ||
| 175 | void RendererVulkan::ShutDown() { | 178 | void RendererVulkan::ShutDown() { |