From d2084a280a8c3347513ed8de5a85b95bc1abf4ce Mon Sep 17 00:00:00 2001 From: lizzie Date: Sat, 7 Mar 2026 19:40:19 +0000 Subject: [PATCH] [video_core] Properly disable OpenGL, add ENABLE_VULKAN option and allow full-null backend Signed-off-by: lizzie --- CMakeLists.txt | 3 + docs/Options.md | 6 +- src/qt_common/CMakeLists.txt | 3 + src/qt_common/config/shared_translation.cpp | 2 + src/video_core/CMakeLists.txt | 303 ++++++++++---------- src/video_core/video_core.cpp | 10 + src/yuzu/bootmanager.cpp | 11 +- src/yuzu/main_window.cpp | 7 +- src/yuzu/startup_checks.cpp | 6 +- src/yuzu/vk_device_info.cpp | 10 +- 10 files changed, 206 insertions(+), 155 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4490df21cb..9d496898f0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -199,6 +199,9 @@ cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "WIN32 OR PLA cmake_dependent_option(ENABLE_OPENGL "Enable OpenGL" ON "NOT WIN32 OR NOT ARCHITECTURE_arm64" OFF) mark_as_advanced(FORCE ENABLE_OPENGL) +option(ENABLE_VULKAN "Enable Vulkan" ON) +mark_as_advanced(FORCE ENABLE_VULKAN) + option(ENABLE_WEB_SERVICE "Enable web services (telemetry, etc.)" ON) option(ENABLE_WIFI_SCAN "Enable WiFi scanning" OFF) diff --git a/docs/Options.md b/docs/Options.md index 55aead805f..b26606ee76 100644 --- a/docs/Options.md +++ b/docs/Options.md @@ -70,10 +70,12 @@ These options control executables and build flavors. The following options are desktop only. -- `ENABLE_LIBUSB` (ON) Enable the use of the libusb input frontend (HIGHLY RECOMMENDED) -- `ENABLE_OPENGL` (ON) Enable the OpenGL graphics frontend +- `ENABLE_LIBUSB` (ON) Enable the use of the libusb input backend (HIGHLY RECOMMENDED) +- `ENABLE_OPENGL` (ON) Enable the OpenGL graphics backend - Unavailable on Windows/ARM64 - You probably shouldn't turn this off. +- `ENABLE_VULKAN` (ON) Enable the Vulkan graphics backend + - Only turn this off for builds that depend entirely on OpenGL. ### Qt diff --git a/src/qt_common/CMakeLists.txt b/src/qt_common/CMakeLists.txt index 65f5b1ee2b..364ddf47f9 100644 --- a/src/qt_common/CMakeLists.txt +++ b/src/qt_common/CMakeLists.txt @@ -85,6 +85,9 @@ target_link_libraries(qt_common PRIVATE gamemode::headers frontend_common) if (NOT APPLE AND ENABLE_OPENGL) target_compile_definitions(qt_common PUBLIC HAS_OPENGL) endif() +if (ENABLE_VULKAN) + target_compile_definitions(qt_common PUBLIC HAS_VULKAN) +endif() if (UNIX AND NOT APPLE) if (DEFINED Qt6Gui_PRIVATE_INCLUDE_DIRS) diff --git a/src/qt_common/config/shared_translation.cpp b/src/qt_common/config/shared_translation.cpp index d1ed32134c..e53d9624d2 100644 --- a/src/qt_common/config/shared_translation.cpp +++ b/src/qt_common/config/shared_translation.cpp @@ -538,7 +538,9 @@ std::unique_ptr ComboboxEnumeration(QObject* parent) PAIR(VramUsageMode, Aggressive, tr("Aggressive")), }}); translations->insert({Settings::EnumMetadata::Index(), { +#ifdef HAS_VULKAN PAIR(RendererBackend, Vulkan, tr("Vulkan")), +#endif #ifdef HAS_OPENGL PAIR(RendererBackend, OpenGL_GLSL, tr("OpenGL GLSL")), PAIR(RendererBackend, OpenGL_GLASM, tr("OpenGL GLASM (Assembly Shaders, NVIDIA Only)")), diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt index a58a73cd3c..3ae21802e0 100644 --- a/src/video_core/CMakeLists.txt +++ b/src/video_core/CMakeLists.txt @@ -115,135 +115,6 @@ add_library(video_core STATIC renderer_null/null_rasterizer.h renderer_null/renderer_null.cpp renderer_null/renderer_null.h - renderer_opengl/present/filters.cpp - renderer_opengl/present/filters.h - renderer_opengl/present/fsr.cpp - renderer_opengl/present/fsr.h - renderer_opengl/present/fxaa.cpp - renderer_opengl/present/fxaa.h - renderer_opengl/present/layer.cpp - renderer_opengl/present/layer.h - renderer_opengl/present/present_uniforms.h - renderer_opengl/present/smaa.cpp - renderer_opengl/present/smaa.h - renderer_opengl/present/util.h - renderer_opengl/present/window_adapt_pass.cpp - renderer_opengl/present/window_adapt_pass.h - renderer_opengl/blit_image.cpp - renderer_opengl/blit_image.h - renderer_opengl/gl_blit_screen.cpp - renderer_opengl/gl_blit_screen.h - renderer_opengl/gl_buffer_cache_base.cpp - renderer_opengl/gl_buffer_cache.cpp - renderer_opengl/gl_buffer_cache.h - renderer_opengl/gl_compute_pipeline.cpp - renderer_opengl/gl_compute_pipeline.h - renderer_opengl/gl_device.cpp - renderer_opengl/gl_device.h - renderer_opengl/gl_fence_manager.cpp - renderer_opengl/gl_fence_manager.h - renderer_opengl/gl_graphics_pipeline.cpp - renderer_opengl/gl_graphics_pipeline.h - renderer_opengl/gl_rasterizer.cpp - renderer_opengl/gl_rasterizer.h - renderer_opengl/gl_resource_manager.cpp - renderer_opengl/gl_resource_manager.h - renderer_opengl/gl_shader_cache.cpp - renderer_opengl/gl_shader_cache.h - renderer_opengl/gl_shader_manager.cpp - renderer_opengl/gl_shader_manager.h - renderer_opengl/gl_shader_context.h - renderer_opengl/gl_shader_util.cpp - renderer_opengl/gl_shader_util.h - renderer_opengl/gl_state_tracker.cpp - renderer_opengl/gl_state_tracker.h - renderer_opengl/gl_staging_buffer_pool.cpp - renderer_opengl/gl_staging_buffer_pool.h - renderer_opengl/gl_texture_cache.cpp - renderer_opengl/gl_texture_cache.h - renderer_opengl/gl_texture_cache_base.cpp - renderer_opengl/gl_query_cache.cpp - renderer_opengl/gl_query_cache.h - renderer_opengl/maxwell_to_gl.h - renderer_opengl/renderer_opengl.cpp - renderer_opengl/renderer_opengl.h - renderer_opengl/util_shaders.cpp - renderer_opengl/util_shaders.h - renderer_vulkan/present/anti_alias_pass.h - renderer_vulkan/present/filters.cpp - renderer_vulkan/present/filters.h - renderer_vulkan/present/fsr.cpp - renderer_vulkan/present/fsr.h - renderer_vulkan/present/fxaa.cpp - renderer_vulkan/present/fxaa.h - renderer_vulkan/present/layer.cpp - renderer_vulkan/present/layer.h - renderer_vulkan/present/present_push_constants.h - renderer_vulkan/present/smaa.cpp - renderer_vulkan/present/smaa.h - renderer_vulkan/present/util.cpp - renderer_vulkan/present/util.h - renderer_vulkan/present/window_adapt_pass.cpp - renderer_vulkan/present/window_adapt_pass.h - renderer_vulkan/blit_image.cpp - renderer_vulkan/blit_image.h - renderer_vulkan/fixed_pipeline_state.cpp - renderer_vulkan/fixed_pipeline_state.h - renderer_vulkan/maxwell_to_vk.cpp - renderer_vulkan/maxwell_to_vk.h - renderer_vulkan/pipeline_helper.h - renderer_vulkan/pipeline_statistics.cpp - renderer_vulkan/pipeline_statistics.h - renderer_vulkan/renderer_vulkan.h - renderer_vulkan/renderer_vulkan.cpp - renderer_vulkan/vk_blit_screen.cpp - renderer_vulkan/vk_blit_screen.h - renderer_vulkan/vk_buffer_cache_base.cpp - renderer_vulkan/vk_buffer_cache.cpp - renderer_vulkan/vk_buffer_cache.h - renderer_vulkan/vk_command_pool.cpp - renderer_vulkan/vk_command_pool.h - renderer_vulkan/vk_compute_pass.cpp - renderer_vulkan/vk_compute_pass.h - renderer_vulkan/vk_compute_pipeline.cpp - renderer_vulkan/vk_compute_pipeline.h - renderer_vulkan/vk_descriptor_pool.cpp - renderer_vulkan/vk_descriptor_pool.h - renderer_vulkan/vk_fence_manager.cpp - renderer_vulkan/vk_fence_manager.h - renderer_vulkan/vk_graphics_pipeline.cpp - renderer_vulkan/vk_graphics_pipeline.h - renderer_vulkan/vk_master_semaphore.cpp - renderer_vulkan/vk_master_semaphore.h - renderer_vulkan/vk_pipeline_cache.cpp - renderer_vulkan/vk_pipeline_cache.h - renderer_vulkan/vk_present_manager.cpp - renderer_vulkan/vk_present_manager.h - renderer_vulkan/vk_query_cache.cpp - renderer_vulkan/vk_query_cache.h - renderer_vulkan/vk_rasterizer.cpp - renderer_vulkan/vk_rasterizer.h - renderer_vulkan/vk_render_pass_cache.cpp - renderer_vulkan/vk_render_pass_cache.h - renderer_vulkan/vk_resource_pool.cpp - renderer_vulkan/vk_resource_pool.h - renderer_vulkan/vk_scheduler.cpp - renderer_vulkan/vk_scheduler.h - renderer_vulkan/vk_shader_util.cpp - renderer_vulkan/vk_shader_util.h - renderer_vulkan/vk_staging_buffer_pool.cpp - renderer_vulkan/vk_staging_buffer_pool.h - renderer_vulkan/vk_state_tracker.cpp - renderer_vulkan/vk_state_tracker.h - renderer_vulkan/vk_swapchain.cpp - renderer_vulkan/vk_swapchain.h - renderer_vulkan/vk_texture_cache.cpp - renderer_vulkan/vk_texture_cache.h - renderer_vulkan/vk_texture_cache_base.cpp - renderer_vulkan/vk_turbo_mode.cpp - renderer_vulkan/vk_turbo_mode.h - renderer_vulkan/vk_update_descriptor.cpp - renderer_vulkan/vk_update_descriptor.h shader_cache.cpp shader_cache.h shader_environment.cpp @@ -293,26 +164,164 @@ add_library(video_core STATIC transform_feedback.h video_core.cpp video_core.h - vulkan_common/vulkan_debug_callback.cpp - vulkan_common/vulkan_debug_callback.h - vulkan_common/vulkan_device.cpp - vulkan_common/vulkan_device.h - vulkan_common/vulkan_instance.cpp - vulkan_common/vulkan_instance.h - vulkan_common/vulkan_library.cpp - vulkan_common/vulkan_library.h - vulkan_common/vulkan_memory_allocator.cpp - vulkan_common/vulkan_memory_allocator.h - vulkan_common/vulkan_surface.cpp - vulkan_common/vulkan_surface.h - vulkan_common/vulkan_wrapper.cpp - vulkan_common/vulkan_wrapper.h - vulkan_common/nsight_aftermath_tracker.cpp - vulkan_common/nsight_aftermath_tracker.h - vulkan_common/vma.h - vulkan_common/vulkan.h ) +if (ENABLE_OPENGL) + target_sources(video_core PRIVATE + renderer_opengl/present/filters.cpp + renderer_opengl/present/filters.h + renderer_opengl/present/fsr.cpp + renderer_opengl/present/fsr.h + renderer_opengl/present/fxaa.cpp + renderer_opengl/present/fxaa.h + renderer_opengl/present/layer.cpp + renderer_opengl/present/layer.h + renderer_opengl/present/present_uniforms.h + renderer_opengl/present/smaa.cpp + renderer_opengl/present/smaa.h + renderer_opengl/present/util.h + renderer_opengl/present/window_adapt_pass.cpp + renderer_opengl/present/window_adapt_pass.h + renderer_opengl/blit_image.cpp + renderer_opengl/blit_image.h + renderer_opengl/gl_blit_screen.cpp + renderer_opengl/gl_blit_screen.h + renderer_opengl/gl_buffer_cache_base.cpp + renderer_opengl/gl_buffer_cache.cpp + renderer_opengl/gl_buffer_cache.h + renderer_opengl/gl_compute_pipeline.cpp + renderer_opengl/gl_compute_pipeline.h + renderer_opengl/gl_device.cpp + renderer_opengl/gl_device.h + renderer_opengl/gl_fence_manager.cpp + renderer_opengl/gl_fence_manager.h + renderer_opengl/gl_graphics_pipeline.cpp + renderer_opengl/gl_graphics_pipeline.h + renderer_opengl/gl_rasterizer.cpp + renderer_opengl/gl_rasterizer.h + renderer_opengl/gl_resource_manager.cpp + renderer_opengl/gl_resource_manager.h + renderer_opengl/gl_shader_cache.cpp + renderer_opengl/gl_shader_cache.h + renderer_opengl/gl_shader_manager.cpp + renderer_opengl/gl_shader_manager.h + renderer_opengl/gl_shader_context.h + renderer_opengl/gl_shader_util.cpp + renderer_opengl/gl_shader_util.h + renderer_opengl/gl_state_tracker.cpp + renderer_opengl/gl_state_tracker.h + renderer_opengl/gl_staging_buffer_pool.cpp + renderer_opengl/gl_staging_buffer_pool.h + renderer_opengl/gl_texture_cache.cpp + renderer_opengl/gl_texture_cache.h + renderer_opengl/gl_texture_cache_base.cpp + renderer_opengl/gl_query_cache.cpp + renderer_opengl/gl_query_cache.h + renderer_opengl/maxwell_to_gl.h + renderer_opengl/renderer_opengl.cpp + renderer_opengl/renderer_opengl.h + renderer_opengl/util_shaders.cpp + renderer_opengl/util_shaders.h + ) +endif() +if (ENABLE_VULKAN) + target_sources(video_core PRIVATE + renderer_vulkan/present/anti_alias_pass.h + renderer_vulkan/present/filters.cpp + renderer_vulkan/present/filters.h + renderer_vulkan/present/fsr.cpp + renderer_vulkan/present/fsr.h + renderer_vulkan/present/fxaa.cpp + renderer_vulkan/present/fxaa.h + renderer_vulkan/present/layer.cpp + renderer_vulkan/present/layer.h + renderer_vulkan/present/present_push_constants.h + renderer_vulkan/present/smaa.cpp + renderer_vulkan/present/smaa.h + renderer_vulkan/present/util.cpp + renderer_vulkan/present/util.h + renderer_vulkan/present/window_adapt_pass.cpp + renderer_vulkan/present/window_adapt_pass.h + renderer_vulkan/blit_image.cpp + renderer_vulkan/blit_image.h + renderer_vulkan/fixed_pipeline_state.cpp + renderer_vulkan/fixed_pipeline_state.h + renderer_vulkan/maxwell_to_vk.cpp + renderer_vulkan/maxwell_to_vk.h + renderer_vulkan/pipeline_helper.h + renderer_vulkan/pipeline_statistics.cpp + renderer_vulkan/pipeline_statistics.h + renderer_vulkan/renderer_vulkan.h + renderer_vulkan/renderer_vulkan.cpp + renderer_vulkan/vk_blit_screen.cpp + renderer_vulkan/vk_blit_screen.h + renderer_vulkan/vk_buffer_cache_base.cpp + renderer_vulkan/vk_buffer_cache.cpp + renderer_vulkan/vk_buffer_cache.h + renderer_vulkan/vk_command_pool.cpp + renderer_vulkan/vk_command_pool.h + renderer_vulkan/vk_compute_pass.cpp + renderer_vulkan/vk_compute_pass.h + renderer_vulkan/vk_compute_pipeline.cpp + renderer_vulkan/vk_compute_pipeline.h + renderer_vulkan/vk_descriptor_pool.cpp + renderer_vulkan/vk_descriptor_pool.h + renderer_vulkan/vk_fence_manager.cpp + renderer_vulkan/vk_fence_manager.h + renderer_vulkan/vk_graphics_pipeline.cpp + renderer_vulkan/vk_graphics_pipeline.h + renderer_vulkan/vk_master_semaphore.cpp + renderer_vulkan/vk_master_semaphore.h + renderer_vulkan/vk_pipeline_cache.cpp + renderer_vulkan/vk_pipeline_cache.h + renderer_vulkan/vk_present_manager.cpp + renderer_vulkan/vk_present_manager.h + renderer_vulkan/vk_query_cache.cpp + renderer_vulkan/vk_query_cache.h + renderer_vulkan/vk_rasterizer.cpp + renderer_vulkan/vk_rasterizer.h + renderer_vulkan/vk_render_pass_cache.cpp + renderer_vulkan/vk_render_pass_cache.h + renderer_vulkan/vk_resource_pool.cpp + renderer_vulkan/vk_resource_pool.h + renderer_vulkan/vk_scheduler.cpp + renderer_vulkan/vk_scheduler.h + renderer_vulkan/vk_shader_util.cpp + renderer_vulkan/vk_shader_util.h + renderer_vulkan/vk_staging_buffer_pool.cpp + renderer_vulkan/vk_staging_buffer_pool.h + renderer_vulkan/vk_state_tracker.cpp + renderer_vulkan/vk_state_tracker.h + renderer_vulkan/vk_swapchain.cpp + renderer_vulkan/vk_swapchain.h + renderer_vulkan/vk_texture_cache.cpp + renderer_vulkan/vk_texture_cache.h + renderer_vulkan/vk_texture_cache_base.cpp + renderer_vulkan/vk_turbo_mode.cpp + renderer_vulkan/vk_turbo_mode.h + renderer_vulkan/vk_update_descriptor.cpp + renderer_vulkan/vk_update_descriptor.h + vulkan_common/vulkan_debug_callback.cpp + vulkan_common/vulkan_debug_callback.h + vulkan_common/vulkan_device.cpp + vulkan_common/vulkan_device.h + vulkan_common/vulkan_instance.cpp + vulkan_common/vulkan_instance.h + vulkan_common/vulkan_library.cpp + vulkan_common/vulkan_library.h + vulkan_common/vulkan_memory_allocator.cpp + vulkan_common/vulkan_memory_allocator.h + vulkan_common/vulkan_surface.cpp + vulkan_common/vulkan_surface.h + vulkan_common/vulkan_wrapper.cpp + vulkan_common/vulkan_wrapper.h + vulkan_common/nsight_aftermath_tracker.cpp + vulkan_common/nsight_aftermath_tracker.h + vulkan_common/vma.h + vulkan_common/vulkan.h + ) +endif() + target_link_libraries(video_core PUBLIC common core) target_link_libraries(video_core PUBLIC glad shader_recompiler stb bc_decoder gpu_logging) diff --git a/src/video_core/video_core.cpp b/src/video_core/video_core.cpp index 4a9751e208..d8d9ea4821 100644 --- a/src/video_core/video_core.cpp +++ b/src/video_core/video_core.cpp @@ -9,12 +9,18 @@ #include "common/logging/log.h" #include "common/settings.h" #include "core/core.h" +#include "core/frontend/emu_window.h" +#include "core/frontend/graphics_context.h" #include "video_core/host1x/gpu_device_memory_manager.h" #include "video_core/host1x/host1x.h" #include "video_core/renderer_base.h" #include "video_core/renderer_null/renderer_null.h" +#ifdef HAS_OPENGL #include "video_core/renderer_opengl/renderer_opengl.h" +#endif +#ifdef HAS_VULKAN #include "video_core/renderer_vulkan/renderer_vulkan.h" +#endif #include "video_core/video_core.h" namespace { @@ -25,12 +31,16 @@ std::unique_ptr CreateRenderer( auto& device_memory = system.Host1x().MemoryManager(); switch (Settings::values.renderer_backend.GetValue()) { +#ifdef HAS_OPENGL case Settings::RendererBackend::OpenGL_GLSL: case Settings::RendererBackend::OpenGL_GLASM: case Settings::RendererBackend::OpenGL_SPIRV: return std::make_unique(emu_window, device_memory, gpu, std::move(context)); +#endif +#ifdef HAS_VULKAN case Settings::RendererBackend::Vulkan: return std::make_unique(emu_window, device_memory, gpu, std::move(context)); +#endif case Settings::RendererBackend::Null: return std::make_unique(emu_window, gpu, std::move(context)); default: diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp index 72a5157fc4..ca7150959f 100644 --- a/src/yuzu/bootmanager.cpp +++ b/src/yuzu/bootmanager.cpp @@ -269,11 +269,13 @@ private: std::unique_ptr context; }; +#ifdef HAS_VULKAN struct VulkanRenderWidget : public RenderWidget { explicit VulkanRenderWidget(GRenderWindow* parent) : RenderWidget(parent) { windowHandle()->setSurfaceType(QWindow::VulkanSurface); } }; +#endif struct NullRenderWidget : public RenderWidget { explicit NullRenderWidget(GRenderWindow* parent) : RenderWidget(parent) {} @@ -1019,19 +1021,22 @@ bool GRenderWindow::InitializeOpenGL() { return true; #else - QMessageBox::warning(this, tr("OpenGL not available!"), - tr("Eden has not been compiled with OpenGL support.")); + QMessageBox::warning(this, tr("OpenGL not available!"), tr("Eden has not been compiled with OpenGL support.")); return false; #endif } bool GRenderWindow::InitializeVulkan() { +#ifdef HAS_VULKAN auto child = new VulkanRenderWidget(this); child_widget = child; child_widget->windowHandle()->create(); main_context = std::make_unique(); - return true; +#else + QMessageBox::warning(this, tr("Vulkan not available!"), tr("Eden has not been compiled with Vulkan support.")); + return false; +#endif } void GRenderWindow::InitializeNull() { diff --git a/src/yuzu/main_window.cpp b/src/yuzu/main_window.cpp index 399b3bd976..d7d5ed2958 100644 --- a/src/yuzu/main_window.cpp +++ b/src/yuzu/main_window.cpp @@ -3773,9 +3773,14 @@ void MainWindow::OnToggleAdaptingFilter() { void MainWindow::OnToggleGraphicsAPI() { auto api = Settings::values.renderer_backend.GetValue(); + bool api_set = false; +#ifdef HAS_VULKAN if (api != Settings::RendererBackend::Vulkan) { api = Settings::RendererBackend::Vulkan; - } else { + api_set = true; + } +#endif + if (!api_set) { #ifdef HAS_OPENGL api = Settings::RendererBackend::OpenGL_GLSL; #else diff --git a/src/yuzu/startup_checks.cpp b/src/yuzu/startup_checks.cpp index 2e77c7cd06..ba5a2391f7 100644 --- a/src/yuzu/startup_checks.cpp +++ b/src/yuzu/startup_checks.cpp @@ -1,7 +1,6 @@ // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -#include "video_core/vulkan_common/vulkan_wrapper.h" #ifdef _WIN32 #include @@ -17,11 +16,15 @@ #endif #include +#ifdef HAS_VULKAN +#include "video_core/vulkan_common/vulkan_wrapper.h" #include "video_core/vulkan_common/vulkan_instance.h" #include "video_core/vulkan_common/vulkan_library.h" +#endif #include "yuzu/startup_checks.h" void CheckVulkan() { +#ifdef HAS_VULKAN // Just start the Vulkan loader, this will crash if something is wrong try { Vulkan::vk::InstanceDispatch dld; @@ -32,6 +35,7 @@ void CheckVulkan() { } catch (const Vulkan::vk::Exception& exception) { fmt::print(stderr, "Failed to initialize Vulkan: {}\n", exception.what()); } +#endif } bool CheckEnvVars(bool* is_child) { diff --git a/src/yuzu/vk_device_info.cpp b/src/yuzu/vk_device_info.cpp index 45faecb95d..31f4dee1c1 100644 --- a/src/yuzu/vk_device_info.cpp +++ b/src/yuzu/vk_device_info.cpp @@ -11,11 +11,13 @@ #include "common/dynamic_library.h" #include "common/logging/log.h" +#ifdef HAS_VULKAN #include "video_core/vulkan_common/vulkan_device.h" #include "video_core/vulkan_common/vulkan_instance.h" #include "video_core/vulkan_common/vulkan_library.h" #include "video_core/vulkan_common/vulkan_surface.h" #include "video_core/vulkan_common/vulkan_wrapper.h" +#endif #include "vulkan/vulkan_core.h" #include "yuzu/vk_device_info.h" @@ -28,7 +30,9 @@ Record::Record(std::string_view name_, const std::vector& vsyn Record::~Record() = default; -void PopulateRecords(std::vector& records, QWindow* window) try { +void PopulateRecords(std::vector& records, QWindow* window) +#ifdef HAS_VULKAN +try { using namespace Vulkan; // Create a test window with a Vulkan surface type for checking present modes. @@ -76,4 +80,8 @@ void PopulateRecords(std::vector& records, QWindow* window) try { } catch (const Vulkan::vk::Exception& exception) { LOG_ERROR(Frontend, "Failed to enumerate devices with error: {}", exception.what()); } +#else +{} +#endif + } // namespace VkDeviceInfo