mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-04-10 09:48:58 +02:00
always have vulkan enabled
This commit is contained in:
parent
0b2a0e2f63
commit
4d82520c85
10 changed files with 117 additions and 142 deletions
|
|
@ -199,9 +199,6 @@ cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "WIN32 OR PLA
|
|||
cmake_dependent_option(ENABLE_OPENGL "Enable OpenGL" ON "NOT (WIN32 AND ARCHITECTURE_arm64) AND NOT APPLE" 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)
|
||||
|
||||
|
|
|
|||
|
|
@ -74,8 +74,6 @@ The following options are desktop only.
|
|||
- `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
|
||||
|
||||
|
|
|
|||
|
|
@ -87,9 +87,6 @@ target_link_libraries(qt_common PRIVATE gamemode::headers frontend_common)
|
|||
if (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)
|
||||
|
|
|
|||
|
|
@ -538,9 +538,7 @@ std::unique_ptr<ComboboxTranslationMap> ComboboxEnumeration(QObject* parent)
|
|||
PAIR(VramUsageMode, Aggressive, tr("Aggressive")),
|
||||
}});
|
||||
translations->insert({Settings::EnumMetadata<Settings::RendererBackend>::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)")),
|
||||
|
|
|
|||
|
|
@ -111,10 +111,108 @@ add_library(video_core STATIC
|
|||
rasterizer_interface.h
|
||||
renderer_base.cpp
|
||||
renderer_base.h
|
||||
|
||||
# Null
|
||||
renderer_null/null_rasterizer.cpp
|
||||
renderer_null/null_rasterizer.h
|
||||
renderer_null/renderer_null.cpp
|
||||
renderer_null/renderer_null.h
|
||||
|
||||
# Vulkan
|
||||
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
|
||||
|
||||
shader_cache.cpp
|
||||
shader_cache.h
|
||||
shader_environment.cpp
|
||||
|
|
@ -224,103 +322,6 @@ if (ENABLE_OPENGL)
|
|||
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)
|
||||
|
|
@ -383,9 +384,6 @@ endif()
|
|||
if (ENABLE_OPENGL)
|
||||
target_compile_definitions(video_core PUBLIC HAS_OPENGL)
|
||||
endif()
|
||||
if (ENABLE_VULKAN)
|
||||
target_compile_definitions(video_core PUBLIC HAS_VULKAN)
|
||||
endif()
|
||||
|
||||
if (ARCHITECTURE_x86_64)
|
||||
target_link_libraries(video_core PUBLIC xbyak::xbyak)
|
||||
|
|
|
|||
|
|
@ -18,9 +18,7 @@
|
|||
#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 {
|
||||
|
|
@ -34,10 +32,8 @@ std::unique_ptr<VideoCore::RendererBase> CreateRenderer(Core::System& system, Co
|
|||
case Settings::RendererBackend::OpenGL_SPIRV:
|
||||
return std::make_unique<OpenGL::RendererOpenGL>(emu_window, device_memory, gpu, std::move(context));
|
||||
#endif
|
||||
#ifdef HAS_VULKAN
|
||||
case Settings::RendererBackend::Vulkan:
|
||||
return std::make_unique<Vulkan::RendererVulkan>(emu_window, device_memory, gpu, std::move(context));
|
||||
#endif
|
||||
case Settings::RendererBackend::Null:
|
||||
return std::make_unique<Null::RendererNull>(emu_window, gpu, std::move(context));
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -269,13 +269,11 @@ private:
|
|||
std::unique_ptr<Core::Frontend::GraphicsContext> 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) {}
|
||||
|
|
@ -1027,16 +1025,11 @@ bool GRenderWindow::InitializeOpenGL() {
|
|||
}
|
||||
|
||||
bool GRenderWindow::InitializeVulkan() {
|
||||
#ifdef HAS_VULKAN
|
||||
auto child = new VulkanRenderWidget(this);
|
||||
child_widget = child;
|
||||
child_widget->windowHandle()->create();
|
||||
main_context = std::make_unique<DummyContext>();
|
||||
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() {
|
||||
|
|
|
|||
|
|
@ -3772,19 +3772,28 @@ 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;
|
||||
api_set = true;
|
||||
}
|
||||
#endif
|
||||
if (!api_set) {
|
||||
switch (api) {
|
||||
#ifdef HAS_OPENGL
|
||||
case Settings::RendererBackend::Vulkan:
|
||||
api = Settings::RendererBackend::OpenGL_GLSL;
|
||||
#else
|
||||
break;
|
||||
case Settings::RendererBackend::OpenGL_GLSL:
|
||||
api = Settings::RendererBackend::OpenGL_GLSL;
|
||||
break;
|
||||
case Settings::RendererBackend::OpenGL_SPIRV:
|
||||
api = Settings::RendererBackend::OpenGL_GLASM;
|
||||
break;
|
||||
case Settings::RendererBackend::OpenGL_GLASM:
|
||||
api = Settings::RendererBackend::Null;
|
||||
break;
|
||||
#else
|
||||
case Settings::RendererBackend::Vulkan:
|
||||
api = Settings::RendererBackend::Null;
|
||||
break;
|
||||
#endif
|
||||
case Settings::RendererBackend::Null:
|
||||
api = Settings::RendererBackend::Vulkan;
|
||||
break;
|
||||
}
|
||||
Settings::values.renderer_backend.SetValue(api);
|
||||
renderer_status_button->setChecked(api == Settings::RendererBackend::Vulkan);
|
||||
|
|
|
|||
|
|
@ -19,15 +19,12 @@
|
|||
#endif
|
||||
|
||||
#include <fmt/core.h>
|
||||
#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;
|
||||
|
|
@ -38,7 +35,6 @@ void CheckVulkan() {
|
|||
} catch (const Vulkan::vk::Exception& exception) {
|
||||
fmt::print(stderr, "Failed to initialize Vulkan: {}\n", exception.what());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool CheckEnvVars(bool* is_child) {
|
||||
|
|
|
|||
|
|
@ -11,13 +11,11 @@
|
|||
|
||||
#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"
|
||||
|
||||
|
|
@ -30,9 +28,7 @@ Record::Record(std::string_view name_, const std::vector<VkPresentModeKHR>& vsyn
|
|||
|
||||
Record::~Record() = default;
|
||||
|
||||
void PopulateRecords(std::vector<Record>& records, QWindow* window)
|
||||
#ifdef HAS_VULKAN
|
||||
try {
|
||||
void PopulateRecords(std::vector<Record>& records, QWindow* window) try {
|
||||
using namespace Vulkan;
|
||||
|
||||
// Create a test window with a Vulkan surface type for checking present modes.
|
||||
|
|
@ -80,8 +76,5 @@ try {
|
|||
} catch (const Vulkan::vk::Exception& exception) {
|
||||
LOG_ERROR(Frontend, "Failed to enumerate devices with error: {}", exception.what());
|
||||
}
|
||||
#else
|
||||
{}
|
||||
#endif
|
||||
|
||||
} // namespace VkDeviceInfo
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue