diff options
| author | 2020-12-24 20:22:07 -0300 | |
|---|---|---|
| committer | 2020-12-24 21:07:24 -0300 | |
| commit | 1b9e08ab7821815a7c2023e16c575b24d37049ba (patch) | |
| tree | b608402862eed2e6e235877ce6e8c51201721134 | |
| parent | Merge pull request #5217 from lat9nq/save-on-boot (diff) | |
| download | yuzu-1b9e08ab7821815a7c2023e16c575b24d37049ba.tar.gz yuzu-1b9e08ab7821815a7c2023e16c575b24d37049ba.tar.xz yuzu-1b9e08ab7821815a7c2023e16c575b24d37049ba.zip | |
cmake: Always enable Vulkan
Removes the unnecesary burden of maintaining separate #ifdef paths and
allows us sharing generic Vulkan code across APIs.
| -rw-r--r-- | CMakeLists.txt | 2 | ||||
| -rw-r--r-- | externals/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | src/video_core/CMakeLists.txt | 141 | ||||
| -rw-r--r-- | src/video_core/video_core.cpp | 4 | ||||
| -rw-r--r-- | src/yuzu/CMakeLists.txt | 8 | ||||
| -rw-r--r-- | src/yuzu/bootmanager.cpp | 12 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.cpp | 11 | ||||
| -rw-r--r-- | src/yuzu/main.cpp | 10 | ||||
| -rw-r--r-- | src/yuzu_cmd/CMakeLists.txt | 15 | ||||
| -rw-r--r-- | src/yuzu_cmd/yuzu.cpp | 7 |
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 | ||
| 25 | option(ENABLE_CUBEB "Enables the cubeb audio backend" ON) | 25 | option(ENABLE_CUBEB "Enables the cubeb audio backend" ON) |
| 26 | 26 | ||
| 27 | option(ENABLE_VULKAN "Enables Vulkan backend" ON) | ||
| 28 | |||
| 29 | option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence" OFF) | 27 | option(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) | |||
| 61 | endif() | 61 | endif() |
| 62 | 62 | ||
| 63 | # Sirit | 63 | # Sirit |
| 64 | if (ENABLE_VULKAN) | 64 | add_subdirectory(sirit) |
| 65 | add_subdirectory(sirit) | ||
| 66 | endif() | ||
| 67 | 65 | ||
| 68 | # libzip | 66 | # libzip |
| 69 | find_package(Libzip 1.5) | 67 | find_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 | ||
| 197 | if (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 | ) | ||
| 264 | endif() | ||
| 265 | |||
| 266 | create_target_directory_groups(video_core) | 261 | create_target_directory_groups(video_core) |
| 267 | 262 | ||
| 268 | target_link_libraries(video_core PUBLIC common core) | 263 | target_link_libraries(video_core PUBLIC common core) |
| @@ -278,12 +273,8 @@ endif() | |||
| 278 | 273 | ||
| 279 | add_dependencies(video_core host_shaders) | 274 | add_dependencies(video_core host_shaders) |
| 280 | target_include_directories(video_core PRIVATE ${HOST_SHADERS_INCLUDE}) | 275 | target_include_directories(video_core PRIVATE ${HOST_SHADERS_INCLUDE}) |
| 281 | 276 | target_include_directories(video_core PRIVATE sirit ../../externals/Vulkan-Headers/include) | |
| 282 | if (ENABLE_VULKAN) | 277 | target_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) | ||
| 286 | endif() | ||
| 287 | 278 | ||
| 288 | if (ENABLE_NSIGHT_AFTERMATH) | 279 | if (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 | ||
| 19 | namespace { | 17 | namespace { |
| @@ -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) | |||
| 219 | target_link_libraries(yuzu PRIVATE Boost::boost glad Qt5::Widgets) | 219 | target_link_libraries(yuzu PRIVATE Boost::boost glad Qt5::Widgets) |
| 220 | target_link_libraries(yuzu PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads) | 220 | target_link_libraries(yuzu PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads) |
| 221 | 221 | ||
| 222 | if (ENABLE_VULKAN AND NOT WIN32) | 222 | target_include_directories(yuzu PRIVATE ../../externals/Vulkan-Headers/include) |
| 223 | if (NOT WIN32) | ||
| 223 | target_include_directories(yuzu PRIVATE ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) | 224 | target_include_directories(yuzu PRIVATE ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) |
| 224 | endif() | 225 | endif() |
| 225 | 226 | ||
| @@ -280,8 +281,3 @@ endif() | |||
| 280 | if (NOT APPLE) | 281 | if (NOT APPLE) |
| 281 | target_compile_definitions(yuzu PRIVATE HAS_OPENGL) | 282 | target_compile_definitions(yuzu PRIVATE HAS_OPENGL) |
| 282 | endif() | 283 | endif() |
| 283 | |||
| 284 | if (ENABLE_VULKAN) | ||
| 285 | target_include_directories(yuzu PRIVATE ../../externals/Vulkan-Headers/include) | ||
| 286 | target_compile_definitions(yuzu PRIVATE HAS_VULKAN) | ||
| 287 | endif() | ||
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 | ||
| 245 | class VulkanRenderWidget : public RenderWidget { | 244 | class VulkanRenderWidget : public RenderWidget { |
| 246 | public: | 245 | public: |
| 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 | ||
| 253 | static Core::Frontend::WindowSystemType GetWindowSystemType() { | 251 | static 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 | ||
| 600 | bool GRenderWindow::InitializeVulkan() { | 596 | bool 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 | ||
| 615 | bool GRenderWindow::LoadOpenGL() { | 605 | bool 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 | |||
| 23 | ConfigureGraphics::ConfigureGraphics(QWidget* parent) | 18 | ConfigureGraphics::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 | ||
| 220 | void ConfigureGraphics::RetrieveVulkanDevices() { | 215 | void 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 | ||
| 229 | Settings::RendererBackend ConfigureGraphics::GetCurrentGraphicsBackend() const { | 222 | Settings::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 | ||
| 2554 | void GMainWindow::UpdateUISettings() { | 2544 | void 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 | ||
| 18 | if (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) | ||
| 25 | endif() | ||
| 26 | |||
| 27 | create_target_directory_groups(yuzu-cmd) | 18 | create_target_directory_groups(yuzu-cmd) |
| 28 | 19 | ||
| 29 | target_link_libraries(yuzu-cmd PRIVATE common core input_common) | 20 | target_link_libraries(yuzu-cmd PRIVATE common core input_common) |
| @@ -33,6 +24,8 @@ if (MSVC) | |||
| 33 | endif() | 24 | endif() |
| 34 | target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} SDL2 Threads::Threads) | 25 | target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} SDL2 Threads::Threads) |
| 35 | 26 | ||
| 27 | target_include_directories(yuzu-cmd PRIVATE ../../externals/Vulkan-Headers/include) | ||
| 28 | |||
| 36 | if(UNIX AND NOT APPLE) | 29 | if(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") |
| 38 | endif() | 31 | endif() |
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>()); |