mirror of
https://github.com/antopilo/Nuake.git
synced 2026-09-15 20:08:54 +03:00
Added VMA
This commit is contained in:
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -31,3 +31,6 @@
|
||||
[submodule "Nuake/dependencies/glfw"]
|
||||
path = Nuake/dependencies/glfw
|
||||
url = https://github.com/antopilo/glfw.git
|
||||
[submodule "Nuake/dependencies/vma"]
|
||||
path = Nuake/dependencies/vma
|
||||
url = https://github.com/antopilo/VulkanMemoryAllocatorPremake5.git
|
||||
|
||||
1
Nuake/dependencies/vma
Submodule
1
Nuake/dependencies/vma
Submodule
Submodule Nuake/dependencies/vma added at 5a53a19894
27
Nuake/dependencies/vma_p5.lua
Normal file
27
Nuake/dependencies/vma_p5.lua
Normal file
@@ -0,0 +1,27 @@
|
||||
group "Dependencies"
|
||||
project "vma"
|
||||
location "vma"
|
||||
kind "StaticLib"
|
||||
language "C++"
|
||||
cppdialect "C++20"
|
||||
staticruntime "on"
|
||||
|
||||
-- Include the headers
|
||||
includedirs {
|
||||
"vma/include",
|
||||
"../src/Vendors/vulkan",
|
||||
}
|
||||
|
||||
files {
|
||||
"vma/include/**.h",
|
||||
"vma/include/**.cpp"
|
||||
}
|
||||
|
||||
filter "configurations:Debug"
|
||||
runtime "Debug"
|
||||
symbols "on"
|
||||
|
||||
filter "configurations:Release"
|
||||
runtime "Release"
|
||||
optimize "on"
|
||||
group ""
|
||||
@@ -1,9 +1,12 @@
|
||||
#include "VulkanRenderer.h"
|
||||
|
||||
#include "src/Core/Logger.h"
|
||||
#include <src/Rendering/RenderCommand.h>
|
||||
|
||||
#include "src/Window.h"
|
||||
#include <GLFW/glfw3.h>
|
||||
#include <src/Rendering/RenderCommand.h>
|
||||
|
||||
|
||||
|
||||
using namespace Nuake;
|
||||
|
||||
@@ -47,6 +50,71 @@ void VkRenderer::Initialize()
|
||||
|
||||
InitSync();
|
||||
|
||||
VmaVulkanFunctions vulkanFunctions = {};
|
||||
vulkanFunctions.vkGetInstanceProcAddr = vkGetInstanceProcAddr;
|
||||
vulkanFunctions.vkGetDeviceProcAddr = vkGetDeviceProcAddr;
|
||||
vulkanFunctions.vkAllocateMemory = vkAllocateMemory;
|
||||
vulkanFunctions.vkFreeMemory = vkFreeMemory;
|
||||
vulkanFunctions.vkMapMemory = vkMapMemory;
|
||||
vulkanFunctions.vkUnmapMemory = vkUnmapMemory;
|
||||
vulkanFunctions.vkFlushMappedMemoryRanges = vkFlushMappedMemoryRanges;
|
||||
vulkanFunctions.vkInvalidateMappedMemoryRanges = vkInvalidateMappedMemoryRanges;
|
||||
vulkanFunctions.vkBindBufferMemory = vkBindBufferMemory;
|
||||
vulkanFunctions.vkBindImageMemory = vkBindImageMemory;
|
||||
vulkanFunctions.vkGetBufferMemoryRequirements = vkGetBufferMemoryRequirements;
|
||||
vulkanFunctions.vkGetImageMemoryRequirements = vkGetImageMemoryRequirements;
|
||||
vulkanFunctions.vkCreateBuffer = vkCreateBuffer;
|
||||
vulkanFunctions.vkDestroyBuffer = vkDestroyBuffer;
|
||||
vulkanFunctions.vkCreateImage = vkCreateImage;
|
||||
vulkanFunctions.vkDestroyImage = vkDestroyImage;
|
||||
vulkanFunctions.vkCmdCopyBuffer = vkCmdCopyBuffer;
|
||||
|
||||
// Optional: Include extension functions if needed
|
||||
vulkanFunctions.vkGetBufferMemoryRequirements2KHR = vkGetBufferMemoryRequirements2KHR;
|
||||
vulkanFunctions.vkGetImageMemoryRequirements2KHR = vkGetImageMemoryRequirements2KHR;
|
||||
vulkanFunctions.vkBindBufferMemory2KHR = vkBindBufferMemory2KHR;
|
||||
vulkanFunctions.vkBindImageMemory2KHR = vkBindImageMemory2KHR;
|
||||
|
||||
// Pass the vulkanFunctions struct to the VMA allocator
|
||||
VmaAllocatorCreateInfo allocatorInfo = {};
|
||||
allocatorInfo.physicalDevice = GPU;
|
||||
allocatorInfo.device = Device;
|
||||
allocatorInfo.instance = Instance;
|
||||
allocatorInfo.flags = VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT;
|
||||
allocatorInfo.pVulkanFunctions = {
|
||||
allocatorInfo.pVulkanFunctions = new VmaVulkanFunctions{
|
||||
.vkGetInstanceProcAddr = vkGetInstanceProcAddr,
|
||||
.vkGetDeviceProcAddr = vkGetDeviceProcAddr,
|
||||
.vkGetPhysicalDeviceProperties = vkGetPhysicalDeviceProperties,
|
||||
.vkGetPhysicalDeviceMemoryProperties = vkGetPhysicalDeviceMemoryProperties,
|
||||
.vkAllocateMemory = vkAllocateMemory,
|
||||
.vkFreeMemory = vkFreeMemory,
|
||||
.vkMapMemory = vkMapMemory,
|
||||
.vkUnmapMemory = vkUnmapMemory,
|
||||
.vkFlushMappedMemoryRanges = vkFlushMappedMemoryRanges,
|
||||
.vkInvalidateMappedMemoryRanges = vkInvalidateMappedMemoryRanges,
|
||||
.vkBindBufferMemory = vkBindBufferMemory,
|
||||
.vkBindImageMemory = vkBindImageMemory,
|
||||
.vkGetBufferMemoryRequirements = vkGetBufferMemoryRequirements,
|
||||
.vkGetImageMemoryRequirements = vkGetImageMemoryRequirements,
|
||||
.vkCreateBuffer = vkCreateBuffer,
|
||||
.vkDestroyBuffer = vkDestroyBuffer,
|
||||
.vkCreateImage = vkCreateImage,
|
||||
.vkDestroyImage = vkDestroyImage,
|
||||
.vkCmdCopyBuffer = vkCmdCopyBuffer,
|
||||
.vkGetBufferMemoryRequirements2KHR = vkGetBufferMemoryRequirements2KHR,
|
||||
.vkGetImageMemoryRequirements2KHR = vkGetImageMemoryRequirements2KHR,
|
||||
.vkBindBufferMemory2KHR = vkBindBufferMemory2KHR,
|
||||
.vkBindImageMemory2KHR = vkBindImageMemory2KHR,
|
||||
}
|
||||
};
|
||||
|
||||
vmaCreateAllocator(&allocatorInfo, &Allocator);
|
||||
|
||||
MainDeletionQueue.push_function([&]() {
|
||||
vmaDestroyAllocator(Allocator);
|
||||
});
|
||||
|
||||
IsInitialized = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,12 +5,15 @@
|
||||
#include <volk/volk.h>
|
||||
#include "vkb/VkBootstrap.h"
|
||||
|
||||
#include "vk_mem_alloc.h"
|
||||
|
||||
#include <functional>
|
||||
|
||||
namespace Nuake
|
||||
{
|
||||
// Since we need to delete things in order, and manually doing it in the cleanup is
|
||||
// too tedious to maintain. We will use a queue of destructor to execute in inverse order
|
||||
// of insertion
|
||||
// too tedious to maintain. We will use a queue of destructor to execute in inverse order
|
||||
// of insertion
|
||||
struct DeletionQueue
|
||||
{
|
||||
std::deque<std::function<void()>> Deletors;
|
||||
@@ -101,6 +104,8 @@ namespace Nuake
|
||||
|
||||
DeletionQueue MainDeletionQueue;
|
||||
|
||||
VmaAllocator Allocator;
|
||||
|
||||
public:
|
||||
static VkRenderer& Get()
|
||||
{
|
||||
|
||||
19
premake5.lua
19
premake5.lua
@@ -45,7 +45,8 @@ workspace "Nuake"
|
||||
outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}"
|
||||
local globalDefines = {
|
||||
"TRACY_ENABLE",
|
||||
"TRACY_ON_DEMAND"
|
||||
"TRACY_ON_DEMAND",
|
||||
"NK_VK"
|
||||
}
|
||||
|
||||
group "Dependencies"
|
||||
@@ -60,6 +61,7 @@ group "Dependencies"
|
||||
include "Nuake/dependencies/yoga_p5.lua"
|
||||
include "Nuake/dependencies/msdf-atlas-gen_p5.lua"
|
||||
include "Nuake/dependencies/freetype_p5.lua"
|
||||
include "Nuake/dependencies/vma_p5.lua"
|
||||
group ""
|
||||
|
||||
include "NuakeNet/premake5.lua"
|
||||
@@ -91,6 +93,7 @@ project "Nuake"
|
||||
|
||||
"_MBCS",
|
||||
"IMGUI_DEFINE_MATH_OPERATORS",
|
||||
"NK_VK"
|
||||
}
|
||||
|
||||
targetdir ("bin/" .. outputdir .. "/%{prj.name}")
|
||||
@@ -142,7 +145,10 @@ project "Nuake"
|
||||
"%{prj.name}/src/Vendors/incbin/*.c",
|
||||
"%{prj.name}/src/Vendors/incbin/*.h",
|
||||
"%{prj.name}/src/Vendors/nanosvg/*.h",
|
||||
|
||||
"%{prj.name}/src/Vendors/volk/*.c",
|
||||
"%{prj.name}/src/Vendors/volk/*.h",
|
||||
"%{prj.name}/src/Vendors/vkb/*.cpp",
|
||||
"%{prj.name}/src/Vendors/vkb/*.h",
|
||||
-- Modules System
|
||||
"%{prj.name}/src/Modules/Modules.h",
|
||||
"%{prj.name}/src/Modules/Modules.cpp",
|
||||
@@ -160,11 +166,13 @@ project "Nuake"
|
||||
"%{prj.name}/src/Vendors/wren/src/include",
|
||||
"%{prj.name}/src/Vendors/incbin",
|
||||
"%{prj.name}/src/Vendors/nanosvg",
|
||||
"%{prj.name}/src/Vendors/vulkan",
|
||||
"%{prj.name}/src/Vendors/vkb",
|
||||
"%{prj.name}/dependencies/build",
|
||||
"%{prj.name}/dependencies/soloud/include",
|
||||
"%{prj.name}/dependencies/Coral/Coral.Native/Include",
|
||||
"%{prj.name}/dependencies/recastnavigation/DebugUtils/Include",
|
||||
"%{prj.name}/dependencies/recastnavigation/Detour/Include",
|
||||
"%{prj.name}/dependencies/recastnavigation/Detour/Include",
|
||||
"%{prj.name}/dependencies/recastnavigation/DetourCrowd/Include",
|
||||
"%{prj.name}/dependencies/recastnavigation/DetourTileCache/Include",
|
||||
"%{prj.name}/dependencies/recastnavigation/Recast/Include",
|
||||
@@ -175,14 +183,15 @@ project "Nuake"
|
||||
"%{prj.name}/dependencies/freetype/include",
|
||||
"%{prj.name}/dependencies/tracy/public/tracy",
|
||||
"%{prj.name}/dependencies/entt/src",
|
||||
|
||||
"%{prj.name}/dependencies/vma/include"
|
||||
}
|
||||
|
||||
links
|
||||
{
|
||||
"soloud",
|
||||
"tracy",
|
||||
"yoga"
|
||||
"yoga",
|
||||
"vma"
|
||||
}
|
||||
|
||||
filter "system:linux"
|
||||
|
||||
Reference in New Issue
Block a user