diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-12-25 06:42:03 +0100 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-12-31 06:07:33 +0100 |
commit | 53ea06dc17ccf9232aa3326a4621500058f9d253 (patch) | |
tree | 944449c1810bd515d2b7882c2b2b15cf4a32f9e7 /src/video_core/renderer_vulkan/renderer_vulkan.cpp | |
parent | renderer_vulkan: Throw when enumerating devices fails (diff) | |
download | yuzu-53ea06dc17ccf9232aa3326a4621500058f9d253.tar yuzu-53ea06dc17ccf9232aa3326a4621500058f9d253.tar.gz yuzu-53ea06dc17ccf9232aa3326a4621500058f9d253.tar.bz2 yuzu-53ea06dc17ccf9232aa3326a4621500058f9d253.tar.lz yuzu-53ea06dc17ccf9232aa3326a4621500058f9d253.tar.xz yuzu-53ea06dc17ccf9232aa3326a4621500058f9d253.tar.zst yuzu-53ea06dc17ccf9232aa3326a4621500058f9d253.zip |
Diffstat (limited to 'src/video_core/renderer_vulkan/renderer_vulkan.cpp')
-rw-r--r-- | src/video_core/renderer_vulkan/renderer_vulkan.cpp | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp index f64318f25..fdce11b06 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp +++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp @@ -133,10 +133,8 @@ bool RendererVulkan::Init() try { debug_callback = CreateDebugCallback(instance); } surface = CreateSurface(instance, render_window); - if (!PickDevices()) { - return false; - } + InitializeDevice(); Report(); memory_manager = std::make_unique<VKMemoryManager>(*device); @@ -178,21 +176,16 @@ void RendererVulkan::ShutDown() { device.reset(); } -bool RendererVulkan::PickDevices() { +void RendererVulkan::InitializeDevice() { const std::vector<VkPhysicalDevice> devices = instance.EnumeratePhysicalDevices(); const s32 device_index = Settings::values.vulkan_device.GetValue(); if (device_index < 0 || device_index >= static_cast<s32>(devices.size())) { LOG_ERROR(Render_Vulkan, "Invalid device index {}!", device_index); - return false; - } - const vk::PhysicalDevice physical_device(devices[static_cast<std::size_t>(device_index)], dld); - if (!VKDevice::IsSuitable(physical_device, *surface)) { - return false; + throw vk::Exception(VK_ERROR_INITIALIZATION_FAILED); } - + const vk::PhysicalDevice physical_device(devices[static_cast<size_t>(device_index)], dld); device = std::make_unique<VKDevice>(*instance, instance_version, physical_device, *surface, dld); - return device->Create(); } void RendererVulkan::Report() const { |