summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt2
-rw-r--r--externals/CMakeLists.txt4
-rw-r--r--src/video_core/CMakeLists.txt141
-rw-r--r--src/video_core/video_core.cpp4
-rw-r--r--src/yuzu/CMakeLists.txt8
-rw-r--r--src/yuzu/bootmanager.cpp12
-rw-r--r--src/yuzu/configuration/configure_graphics.cpp11
-rw-r--r--src/yuzu/main.cpp10
-rw-r--r--src/yuzu_cmd/CMakeLists.txt15
-rw-r--r--src/yuzu_cmd/yuzu.cpp7
10 files changed, 76 insertions, 138 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 66bbd985a..eda555494 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,8 +24,6 @@ option(YUZU_ENABLE_BOXCAT "Enable the Boxcat service, a yuzu high-level implemen
24 24
25option(ENABLE_CUBEB "Enables the cubeb audio backend" ON) 25option(ENABLE_CUBEB "Enables the cubeb audio backend" ON)
26 26
27option(ENABLE_VULKAN "Enables Vulkan backend" ON)
28
29option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence" OFF) 27option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence" OFF)
30 28
31# Default to a Release build 29# Default to a Release build
diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt
index 421b35890..c629bbc5c 100644
--- a/externals/CMakeLists.txt
+++ b/externals/CMakeLists.txt
@@ -61,9 +61,7 @@ if (USE_DISCORD_PRESENCE)
61endif() 61endif()
62 62
63# Sirit 63# Sirit
64if (ENABLE_VULKAN) 64add_subdirectory(sirit)
65 add_subdirectory(sirit)
66endif()
67 65
68# libzip 66# libzip
69find_package(Libzip 1.5) 67find_package(Libzip 1.5)
diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt
index a021d61f5..26db24d0f 100644
--- a/src/video_core/CMakeLists.txt
+++ b/src/video_core/CMakeLists.txt
@@ -115,6 +115,70 @@ add_library(video_core STATIC
115 renderer_opengl/renderer_opengl.h 115 renderer_opengl/renderer_opengl.h
116 renderer_opengl/utils.cpp 116 renderer_opengl/utils.cpp
117 renderer_opengl/utils.h 117 renderer_opengl/utils.h
118 renderer_vulkan/fixed_pipeline_state.cpp
119 renderer_vulkan/fixed_pipeline_state.h
120 renderer_vulkan/maxwell_to_vk.cpp
121 renderer_vulkan/maxwell_to_vk.h
122 renderer_vulkan/nsight_aftermath_tracker.cpp
123 renderer_vulkan/nsight_aftermath_tracker.h
124 renderer_vulkan/renderer_vulkan.h
125 renderer_vulkan/renderer_vulkan.cpp
126 renderer_vulkan/vk_blit_screen.cpp
127 renderer_vulkan/vk_blit_screen.h
128 renderer_vulkan/vk_buffer_cache.cpp
129 renderer_vulkan/vk_buffer_cache.h
130 renderer_vulkan/vk_command_pool.cpp
131 renderer_vulkan/vk_command_pool.h
132 renderer_vulkan/vk_compute_pass.cpp
133 renderer_vulkan/vk_compute_pass.h
134 renderer_vulkan/vk_compute_pipeline.cpp
135 renderer_vulkan/vk_compute_pipeline.h
136 renderer_vulkan/vk_descriptor_pool.cpp
137 renderer_vulkan/vk_descriptor_pool.h
138 renderer_vulkan/vk_device.cpp
139 renderer_vulkan/vk_device.h
140 renderer_vulkan/vk_fence_manager.cpp
141 renderer_vulkan/vk_fence_manager.h
142 renderer_vulkan/vk_graphics_pipeline.cpp
143 renderer_vulkan/vk_graphics_pipeline.h
144 renderer_vulkan/vk_image.cpp
145 renderer_vulkan/vk_image.h
146 renderer_vulkan/vk_master_semaphore.cpp
147 renderer_vulkan/vk_master_semaphore.h
148 renderer_vulkan/vk_memory_manager.cpp
149 renderer_vulkan/vk_memory_manager.h
150 renderer_vulkan/vk_pipeline_cache.cpp
151 renderer_vulkan/vk_pipeline_cache.h
152 renderer_vulkan/vk_query_cache.cpp
153 renderer_vulkan/vk_query_cache.h
154 renderer_vulkan/vk_rasterizer.cpp
155 renderer_vulkan/vk_rasterizer.h
156 renderer_vulkan/vk_renderpass_cache.cpp
157 renderer_vulkan/vk_renderpass_cache.h
158 renderer_vulkan/vk_resource_pool.cpp
159 renderer_vulkan/vk_resource_pool.h
160 renderer_vulkan/vk_sampler_cache.cpp
161 renderer_vulkan/vk_sampler_cache.h
162 renderer_vulkan/vk_scheduler.cpp
163 renderer_vulkan/vk_scheduler.h
164 renderer_vulkan/vk_shader_decompiler.cpp
165 renderer_vulkan/vk_shader_decompiler.h
166 renderer_vulkan/vk_shader_util.cpp
167 renderer_vulkan/vk_shader_util.h
168 renderer_vulkan/vk_staging_buffer_pool.cpp
169 renderer_vulkan/vk_staging_buffer_pool.h
170 renderer_vulkan/vk_state_tracker.cpp
171 renderer_vulkan/vk_state_tracker.h
172 renderer_vulkan/vk_stream_buffer.cpp
173 renderer_vulkan/vk_stream_buffer.h
174 renderer_vulkan/vk_swapchain.cpp
175 renderer_vulkan/vk_swapchain.h
176 renderer_vulkan/vk_texture_cache.cpp
177 renderer_vulkan/vk_texture_cache.h
178 renderer_vulkan/vk_update_descriptor.cpp
179 renderer_vulkan/vk_update_descriptor.h
180 renderer_vulkan/wrapper.cpp
181 renderer_vulkan/wrapper.h
118 sampler_cache.cpp 182 sampler_cache.cpp
119 sampler_cache.h 183 sampler_cache.h
120 shader_cache.h 184 shader_cache.h
@@ -194,75 +258,6 @@ add_library(video_core STATIC
194 video_core.h 258 video_core.h
195) 259)
196 260
197if (ENABLE_VULKAN)
198 target_sources(video_core PRIVATE
199 renderer_vulkan/fixed_pipeline_state.cpp
200 renderer_vulkan/fixed_pipeline_state.h
201 renderer_vulkan/maxwell_to_vk.cpp
202 renderer_vulkan/maxwell_to_vk.h
203 renderer_vulkan/nsight_aftermath_tracker.cpp
204 renderer_vulkan/nsight_aftermath_tracker.h
205 renderer_vulkan/renderer_vulkan.h
206 renderer_vulkan/renderer_vulkan.cpp
207 renderer_vulkan/vk_blit_screen.cpp
208 renderer_vulkan/vk_blit_screen.h
209 renderer_vulkan/vk_buffer_cache.cpp
210 renderer_vulkan/vk_buffer_cache.h
211 renderer_vulkan/vk_command_pool.cpp
212 renderer_vulkan/vk_command_pool.h
213 renderer_vulkan/vk_compute_pass.cpp
214 renderer_vulkan/vk_compute_pass.h
215 renderer_vulkan/vk_compute_pipeline.cpp
216 renderer_vulkan/vk_compute_pipeline.h
217 renderer_vulkan/vk_descriptor_pool.cpp
218 renderer_vulkan/vk_descriptor_pool.h
219 renderer_vulkan/vk_device.cpp
220 renderer_vulkan/vk_device.h
221 renderer_vulkan/vk_fence_manager.cpp
222 renderer_vulkan/vk_fence_manager.h
223 renderer_vulkan/vk_graphics_pipeline.cpp
224 renderer_vulkan/vk_graphics_pipeline.h
225 renderer_vulkan/vk_image.cpp
226 renderer_vulkan/vk_image.h
227 renderer_vulkan/vk_master_semaphore.cpp
228 renderer_vulkan/vk_master_semaphore.h
229 renderer_vulkan/vk_memory_manager.cpp
230 renderer_vulkan/vk_memory_manager.h
231 renderer_vulkan/vk_pipeline_cache.cpp
232 renderer_vulkan/vk_pipeline_cache.h
233 renderer_vulkan/vk_query_cache.cpp
234 renderer_vulkan/vk_query_cache.h
235 renderer_vulkan/vk_rasterizer.cpp
236 renderer_vulkan/vk_rasterizer.h
237 renderer_vulkan/vk_renderpass_cache.cpp
238 renderer_vulkan/vk_renderpass_cache.h
239 renderer_vulkan/vk_resource_pool.cpp
240 renderer_vulkan/vk_resource_pool.h
241 renderer_vulkan/vk_sampler_cache.cpp
242 renderer_vulkan/vk_sampler_cache.h
243 renderer_vulkan/vk_scheduler.cpp
244 renderer_vulkan/vk_scheduler.h
245 renderer_vulkan/vk_shader_decompiler.cpp
246 renderer_vulkan/vk_shader_decompiler.h
247 renderer_vulkan/vk_shader_util.cpp
248 renderer_vulkan/vk_shader_util.h
249 renderer_vulkan/vk_staging_buffer_pool.cpp
250 renderer_vulkan/vk_staging_buffer_pool.h
251 renderer_vulkan/vk_state_tracker.cpp
252 renderer_vulkan/vk_state_tracker.h
253 renderer_vulkan/vk_stream_buffer.cpp
254 renderer_vulkan/vk_stream_buffer.h
255 renderer_vulkan/vk_swapchain.cpp
256 renderer_vulkan/vk_swapchain.h
257 renderer_vulkan/vk_texture_cache.cpp
258 renderer_vulkan/vk_texture_cache.h
259 renderer_vulkan/vk_update_descriptor.cpp
260 renderer_vulkan/vk_update_descriptor.h
261 renderer_vulkan/wrapper.cpp
262 renderer_vulkan/wrapper.h
263 )
264endif()
265
266create_target_directory_groups(video_core) 261create_target_directory_groups(video_core)
267 262
268target_link_libraries(video_core PUBLIC common core) 263target_link_libraries(video_core PUBLIC common core)
@@ -278,12 +273,8 @@ endif()
278 273
279add_dependencies(video_core host_shaders) 274add_dependencies(video_core host_shaders)
280target_include_directories(video_core PRIVATE ${HOST_SHADERS_INCLUDE}) 275target_include_directories(video_core PRIVATE ${HOST_SHADERS_INCLUDE})
281 276target_include_directories(video_core PRIVATE sirit ../../externals/Vulkan-Headers/include)
282if (ENABLE_VULKAN) 277target_link_libraries(video_core PRIVATE sirit)
283 target_include_directories(video_core PRIVATE sirit ../../externals/Vulkan-Headers/include)
284 target_compile_definitions(video_core PRIVATE HAS_VULKAN)
285 target_link_libraries(video_core PRIVATE sirit)
286endif()
287 278
288if (ENABLE_NSIGHT_AFTERMATH) 279if (ENABLE_NSIGHT_AFTERMATH)
289 if (NOT DEFINED ENV{NSIGHT_AFTERMATH_SDK}) 280 if (NOT DEFINED ENV{NSIGHT_AFTERMATH_SDK})
diff --git a/src/video_core/video_core.cpp b/src/video_core/video_core.cpp
index dd5cee4a1..837800bfe 100644
--- a/src/video_core/video_core.cpp
+++ b/src/video_core/video_core.cpp
@@ -11,9 +11,7 @@
11#include "video_core/gpu_synch.h" 11#include "video_core/gpu_synch.h"
12#include "video_core/renderer_base.h" 12#include "video_core/renderer_base.h"
13#include "video_core/renderer_opengl/renderer_opengl.h" 13#include "video_core/renderer_opengl/renderer_opengl.h"
14#ifdef HAS_VULKAN
15#include "video_core/renderer_vulkan/renderer_vulkan.h" 14#include "video_core/renderer_vulkan/renderer_vulkan.h"
16#endif
17#include "video_core/video_core.h" 15#include "video_core/video_core.h"
18 16
19namespace { 17namespace {
@@ -28,11 +26,9 @@ std::unique_ptr<VideoCore::RendererBase> CreateRenderer(
28 case Settings::RendererBackend::OpenGL: 26 case Settings::RendererBackend::OpenGL:
29 return std::make_unique<OpenGL::RendererOpenGL>(telemetry_session, emu_window, cpu_memory, 27 return std::make_unique<OpenGL::RendererOpenGL>(telemetry_session, emu_window, cpu_memory,
30 gpu, std::move(context)); 28 gpu, std::move(context));
31#ifdef HAS_VULKAN
32 case Settings::RendererBackend::Vulkan: 29 case Settings::RendererBackend::Vulkan:
33 return std::make_unique<Vulkan::RendererVulkan>(telemetry_session, emu_window, cpu_memory, 30 return std::make_unique<Vulkan::RendererVulkan>(telemetry_session, emu_window, cpu_memory,
34 gpu, std::move(context)); 31 gpu, std::move(context));
35#endif
36 default: 32 default:
37 return nullptr; 33 return nullptr;
38 } 34 }
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt
index f3e527e94..e1bab2112 100644
--- a/src/yuzu/CMakeLists.txt
+++ b/src/yuzu/CMakeLists.txt
@@ -219,7 +219,8 @@ target_link_libraries(yuzu PRIVATE common core input_common video_core)
219target_link_libraries(yuzu PRIVATE Boost::boost glad Qt5::Widgets) 219target_link_libraries(yuzu PRIVATE Boost::boost glad Qt5::Widgets)
220target_link_libraries(yuzu PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads) 220target_link_libraries(yuzu PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
221 221
222if (ENABLE_VULKAN AND NOT WIN32) 222target_include_directories(yuzu PRIVATE ../../externals/Vulkan-Headers/include)
223if (NOT WIN32)
223 target_include_directories(yuzu PRIVATE ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) 224 target_include_directories(yuzu PRIVATE ${Qt5Gui_PRIVATE_INCLUDE_DIRS})
224endif() 225endif()
225 226
@@ -280,8 +281,3 @@ endif()
280if (NOT APPLE) 281if (NOT APPLE)
281 target_compile_definitions(yuzu PRIVATE HAS_OPENGL) 282 target_compile_definitions(yuzu PRIVATE HAS_OPENGL)
282endif() 283endif()
283
284if (ENABLE_VULKAN)
285 target_include_directories(yuzu PRIVATE ../../externals/Vulkan-Headers/include)
286 target_compile_definitions(yuzu PRIVATE HAS_VULKAN)
287endif()
diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp
index 55c60935e..e124836b5 100644
--- a/src/yuzu/bootmanager.cpp
+++ b/src/yuzu/bootmanager.cpp
@@ -19,7 +19,7 @@
19#include <QOpenGLContext> 19#include <QOpenGLContext>
20#endif 20#endif
21 21
22#if !defined(WIN32) && HAS_VULKAN 22#if !defined(WIN32)
23#include <qpa/qplatformnativeinterface.h> 23#include <qpa/qplatformnativeinterface.h>
24#endif 24#endif
25 25
@@ -241,14 +241,12 @@ private:
241 std::unique_ptr<Core::Frontend::GraphicsContext> context; 241 std::unique_ptr<Core::Frontend::GraphicsContext> context;
242}; 242};
243 243
244#ifdef HAS_VULKAN
245class VulkanRenderWidget : public RenderWidget { 244class VulkanRenderWidget : public RenderWidget {
246public: 245public:
247 explicit VulkanRenderWidget(GRenderWindow* parent) : RenderWidget(parent) { 246 explicit VulkanRenderWidget(GRenderWindow* parent) : RenderWidget(parent) {
248 windowHandle()->setSurfaceType(QWindow::VulkanSurface); 247 windowHandle()->setSurfaceType(QWindow::VulkanSurface);
249 } 248 }
250}; 249};
251#endif
252 250
253static Core::Frontend::WindowSystemType GetWindowSystemType() { 251static Core::Frontend::WindowSystemType GetWindowSystemType() {
254 // Determine WSI type based on Qt platform. 252 // Determine WSI type based on Qt platform.
@@ -268,7 +266,6 @@ static Core::Frontend::EmuWindow::WindowSystemInfo GetWindowSystemInfo(QWindow*
268 Core::Frontend::EmuWindow::WindowSystemInfo wsi; 266 Core::Frontend::EmuWindow::WindowSystemInfo wsi;
269 wsi.type = GetWindowSystemType(); 267 wsi.type = GetWindowSystemType();
270 268
271#ifdef HAS_VULKAN
272 // Our Win32 Qt external doesn't have the private API. 269 // Our Win32 Qt external doesn't have the private API.
273#if defined(WIN32) || defined(__APPLE__) 270#if defined(WIN32) || defined(__APPLE__)
274 wsi.render_surface = window ? reinterpret_cast<void*>(window->winId()) : nullptr; 271 wsi.render_surface = window ? reinterpret_cast<void*>(window->winId()) : nullptr;
@@ -281,7 +278,6 @@ static Core::Frontend::EmuWindow::WindowSystemInfo GetWindowSystemInfo(QWindow*
281 wsi.render_surface = window ? reinterpret_cast<void*>(window->winId()) : nullptr; 278 wsi.render_surface = window ? reinterpret_cast<void*>(window->winId()) : nullptr;
282#endif 279#endif
283 wsi.render_surface_scale = window ? static_cast<float>(window->devicePixelRatio()) : 1.0f; 280 wsi.render_surface_scale = window ? static_cast<float>(window->devicePixelRatio()) : 1.0f;
284#endif
285 281
286 return wsi; 282 return wsi;
287} 283}
@@ -598,18 +594,12 @@ bool GRenderWindow::InitializeOpenGL() {
598} 594}
599 595
600bool GRenderWindow::InitializeVulkan() { 596bool GRenderWindow::InitializeVulkan() {
601#ifdef HAS_VULKAN
602 auto child = new VulkanRenderWidget(this); 597 auto child = new VulkanRenderWidget(this);
603 child_widget = child; 598 child_widget = child;
604 child_widget->windowHandle()->create(); 599 child_widget->windowHandle()->create();
605 main_context = std::make_unique<DummyContext>(); 600 main_context = std::make_unique<DummyContext>();
606 601
607 return true; 602 return true;
608#else
609 QMessageBox::critical(this, tr("Vulkan not available!"),
610 tr("yuzu has not been compiled with Vulkan support."));
611 return false;
612#endif
613} 603}
614 604
615bool GRenderWindow::LoadOpenGL() { 605bool GRenderWindow::LoadOpenGL() {
diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp
index 6fda0ce35..b78a5dff0 100644
--- a/src/yuzu/configuration/configure_graphics.cpp
+++ b/src/yuzu/configuration/configure_graphics.cpp
@@ -4,22 +4,17 @@
4 4
5#include <QColorDialog> 5#include <QColorDialog>
6#include <QComboBox> 6#include <QComboBox>
7#ifdef HAS_VULKAN
8#include <QVulkanInstance> 7#include <QVulkanInstance>
9#endif
10 8
11#include "common/common_types.h" 9#include "common/common_types.h"
12#include "common/logging/log.h" 10#include "common/logging/log.h"
13#include "core/core.h" 11#include "core/core.h"
14#include "core/settings.h" 12#include "core/settings.h"
15#include "ui_configure_graphics.h" 13#include "ui_configure_graphics.h"
14#include "video_core/renderer_vulkan/renderer_vulkan.h"
16#include "yuzu/configuration/configuration_shared.h" 15#include "yuzu/configuration/configuration_shared.h"
17#include "yuzu/configuration/configure_graphics.h" 16#include "yuzu/configuration/configure_graphics.h"
18 17
19#ifdef HAS_VULKAN
20#include "video_core/renderer_vulkan/renderer_vulkan.h"
21#endif
22
23ConfigureGraphics::ConfigureGraphics(QWidget* parent) 18ConfigureGraphics::ConfigureGraphics(QWidget* parent)
24 : QWidget(parent), ui(new Ui::ConfigureGraphics) { 19 : QWidget(parent), ui(new Ui::ConfigureGraphics) {
25 vulkan_device = Settings::values.vulkan_device.GetValue(); 20 vulkan_device = Settings::values.vulkan_device.GetValue();
@@ -218,12 +213,10 @@ void ConfigureGraphics::UpdateDeviceComboBox() {
218} 213}
219 214
220void ConfigureGraphics::RetrieveVulkanDevices() { 215void ConfigureGraphics::RetrieveVulkanDevices() {
221#ifdef HAS_VULKAN
222 vulkan_devices.clear(); 216 vulkan_devices.clear();
223 for (auto& name : Vulkan::RendererVulkan::EnumerateDevices()) { 217 for (const auto& name : Vulkan::RendererVulkan::EnumerateDevices()) {
224 vulkan_devices.push_back(QString::fromStdString(name)); 218 vulkan_devices.push_back(QString::fromStdString(name));
225 } 219 }
226#endif
227} 220}
228 221
229Settings::RendererBackend ConfigureGraphics::GetCurrentGraphicsBackend() const { 222Settings::RendererBackend ConfigureGraphics::GetCurrentGraphicsBackend() const {
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index 44ca3db8b..7aa515226 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -622,11 +622,6 @@ void GMainWindow::InitializeWidgets() {
622 }); 622 });
623 renderer_status_button->toggle(); 623 renderer_status_button->toggle();
624 624
625#ifndef HAS_VULKAN
626 renderer_status_button->setChecked(false);
627 renderer_status_button->setCheckable(false);
628 renderer_status_button->setDisabled(true);
629#else
630 renderer_status_button->setChecked(Settings::values.renderer_backend.GetValue() == 625 renderer_status_button->setChecked(Settings::values.renderer_backend.GetValue() ==
631 Settings::RendererBackend::Vulkan); 626 Settings::RendererBackend::Vulkan);
632 connect(renderer_status_button, &QPushButton::clicked, [this] { 627 connect(renderer_status_button, &QPushButton::clicked, [this] {
@@ -641,7 +636,6 @@ void GMainWindow::InitializeWidgets() {
641 636
642 Settings::Apply(Core::System::GetInstance()); 637 Settings::Apply(Core::System::GetInstance());
643 }); 638 });
644#endif // HAS_VULKAN
645 statusBar()->insertPermanentWidget(0, renderer_status_button); 639 statusBar()->insertPermanentWidget(0, renderer_status_button);
646 640
647 statusBar()->setVisible(true); 641 statusBar()->setVisible(true);
@@ -1254,9 +1248,7 @@ void GMainWindow::ShutdownGame() {
1254 emu_frametime_label->setVisible(false); 1248 emu_frametime_label->setVisible(false);
1255 async_status_button->setEnabled(true); 1249 async_status_button->setEnabled(true);
1256 multicore_status_button->setEnabled(true); 1250 multicore_status_button->setEnabled(true);
1257#ifdef HAS_VULKAN
1258 renderer_status_button->setEnabled(true); 1251 renderer_status_button->setEnabled(true);
1259#endif
1260 1252
1261 emulation_running = false; 1253 emulation_running = false;
1262 1254
@@ -2545,10 +2537,8 @@ void GMainWindow::UpdateStatusButtons() {
2545 Settings::values.use_asynchronous_gpu_emulation.GetValue() || 2537 Settings::values.use_asynchronous_gpu_emulation.GetValue() ||
2546 Settings::values.use_multi_core.GetValue()); 2538 Settings::values.use_multi_core.GetValue());
2547 async_status_button->setChecked(Settings::values.use_asynchronous_gpu_emulation.GetValue()); 2539 async_status_button->setChecked(Settings::values.use_asynchronous_gpu_emulation.GetValue());
2548#ifdef HAS_VULKAN
2549 renderer_status_button->setChecked(Settings::values.renderer_backend.GetValue() == 2540 renderer_status_button->setChecked(Settings::values.renderer_backend.GetValue() ==
2550 Settings::RendererBackend::Vulkan); 2541 Settings::RendererBackend::Vulkan);
2551#endif
2552} 2542}
2553 2543
2554void GMainWindow::UpdateUISettings() { 2544void GMainWindow::UpdateUISettings() {
diff --git a/src/yuzu_cmd/CMakeLists.txt b/src/yuzu_cmd/CMakeLists.txt
index 57f9916f6..0b3f2cb54 100644
--- a/src/yuzu_cmd/CMakeLists.txt
+++ b/src/yuzu_cmd/CMakeLists.txt
@@ -4,26 +4,17 @@ add_executable(yuzu-cmd
4 config.cpp 4 config.cpp
5 config.h 5 config.h
6 default_ini.h 6 default_ini.h
7 emu_window/emu_window_sdl2_gl.cpp
8 emu_window/emu_window_sdl2_gl.h
9 emu_window/emu_window_sdl2.cpp 7 emu_window/emu_window_sdl2.cpp
10 emu_window/emu_window_sdl2.h 8 emu_window/emu_window_sdl2.h
11 emu_window/emu_window_sdl2_gl.cpp 9 emu_window/emu_window_sdl2_gl.cpp
12 emu_window/emu_window_sdl2_gl.h 10 emu_window/emu_window_sdl2_gl.h
11 emu_window/emu_window_sdl2_vk.cpp
12 emu_window/emu_window_sdl2_vk.h
13 resource.h 13 resource.h
14 yuzu.cpp 14 yuzu.cpp
15 yuzu.rc 15 yuzu.rc
16) 16)
17 17
18if (ENABLE_VULKAN)
19 target_sources(yuzu-cmd PRIVATE
20 emu_window/emu_window_sdl2_vk.cpp
21 emu_window/emu_window_sdl2_vk.h)
22
23 target_include_directories(yuzu-cmd PRIVATE ../../externals/Vulkan-Headers/include)
24 target_compile_definitions(yuzu-cmd PRIVATE HAS_VULKAN)
25endif()
26
27create_target_directory_groups(yuzu-cmd) 18create_target_directory_groups(yuzu-cmd)
28 19
29target_link_libraries(yuzu-cmd PRIVATE common core input_common) 20target_link_libraries(yuzu-cmd PRIVATE common core input_common)
@@ -33,6 +24,8 @@ if (MSVC)
33endif() 24endif()
34target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} SDL2 Threads::Threads) 25target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} SDL2 Threads::Threads)
35 26
27target_include_directories(yuzu-cmd PRIVATE ../../externals/Vulkan-Headers/include)
28
36if(UNIX AND NOT APPLE) 29if(UNIX AND NOT APPLE)
37 install(TARGETS yuzu-cmd RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin") 30 install(TARGETS yuzu-cmd RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
38endif() 31endif()
diff --git a/src/yuzu_cmd/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp
index 1ebc04af5..2497c71ae 100644
--- a/src/yuzu_cmd/yuzu.cpp
+++ b/src/yuzu_cmd/yuzu.cpp
@@ -35,9 +35,7 @@
35#include "yuzu_cmd/config.h" 35#include "yuzu_cmd/config.h"
36#include "yuzu_cmd/emu_window/emu_window_sdl2.h" 36#include "yuzu_cmd/emu_window/emu_window_sdl2.h"
37#include "yuzu_cmd/emu_window/emu_window_sdl2_gl.h" 37#include "yuzu_cmd/emu_window/emu_window_sdl2_gl.h"
38#ifdef HAS_VULKAN
39#include "yuzu_cmd/emu_window/emu_window_sdl2_vk.h" 38#include "yuzu_cmd/emu_window/emu_window_sdl2_vk.h"
40#endif
41 39
42#ifdef _WIN32 40#ifdef _WIN32
43// windows.h needs to be included before shellapi.h 41// windows.h needs to be included before shellapi.h
@@ -173,13 +171,8 @@ int main(int argc, char** argv) {
173 emu_window = std::make_unique<EmuWindow_SDL2_GL>(&input_subsystem, fullscreen); 171 emu_window = std::make_unique<EmuWindow_SDL2_GL>(&input_subsystem, fullscreen);
174 break; 172 break;
175 case Settings::RendererBackend::Vulkan: 173 case Settings::RendererBackend::Vulkan:
176#ifdef HAS_VULKAN
177 emu_window = std::make_unique<EmuWindow_SDL2_VK>(&input_subsystem); 174 emu_window = std::make_unique<EmuWindow_SDL2_VK>(&input_subsystem);
178 break; 175 break;
179#else
180 LOG_CRITICAL(Frontend, "Vulkan backend has not been compiled!");
181 return 1;
182#endif
183 } 176 }
184 177
185 system.SetContentProvider(std::make_unique<FileSys::ContentProviderUnion>()); 178 system.SetContentProvider(std::make_unique<FileSys::ContentProviderUnion>());