diff --git a/CMakeLists.txt b/CMakeLists.txt index 179a30e48..6c09be209 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -199,6 +199,11 @@ if (ENABLE_QT) endif() endif() +if (ENABLE_VULKAN) + # Vulkan Memory Allocator + set(VMA_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/externals/vma/include) +endif() + # Ensure libusb is properly configured (based on dolphin libusb include) if(NOT APPLE) include(FindPkgConfig) diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt index 2d980e63f..ce9431399 100644 --- a/src/video_core/CMakeLists.txt +++ b/src/video_core/CMakeLists.txt @@ -79,6 +79,8 @@ add_library(video_core STATIC renderer_vulkan/vk_format_reinterpreter.h renderer_vulkan/vk_instance.cpp renderer_vulkan/vk_instance.h + renderer_vulkan/vk_memory.cpp + renderer_vulkan/vk_memory.h renderer_vulkan/vk_pipeline_builder.cpp renderer_vulkan/vk_pipeline_builder.h renderer_vulkan/vk_rasterizer_cache.cpp @@ -180,6 +182,6 @@ if (ARCHITECTURE_x86_64) endif() if (ENABLE_VULKAN) - target_include_directories(video_core PRIVATE ${Vulkan_INCLUDE_DIRS}) + target_include_directories(video_core PRIVATE ${Vulkan_INCLUDE_DIRS} ${VMA_INCLUDE_DIR}) target_link_libraries(video_core PRIVATE ${Vulkan_LIBRARIES} ${SHADERC_DEP}) endif() diff --git a/src/video_core/renderer_vulkan/vk_memory.cpp b/src/video_core/renderer_vulkan/vk_memory.cpp new file mode 100644 index 000000000..d9e10f443 --- /dev/null +++ b/src/video_core/renderer_vulkan/vk_memory.cpp @@ -0,0 +1,6 @@ +// Copyright 2022 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#define VMA_IMPLEMENTATION +#include "vk_memory.h" diff --git a/src/video_core/renderer_vulkan/vk_memory.h b/src/video_core/renderer_vulkan/vk_memory.h new file mode 100644 index 000000000..67fc8a044 --- /dev/null +++ b/src/video_core/renderer_vulkan/vk_memory.h @@ -0,0 +1,19 @@ +// Copyright 2022 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include + +#ifndef VMA_STATIC_VULKAN_FUNCTIONS +#define VMA_STATIC_VULKAN_FUNCTIONS 0 +#endif + +#ifndef VMA_DYNAMIC_VULKAN_FUNCTIONS +#define VMA_DYNAMIC_VULKAN_FUNCTIONS 1 +#endif + +// Include Vulkan memory allocator +#define VMA_VULKAN_VERSION 1001000 // Vulkan 1.1 +#include "vk_mem_alloc.h"