add volk
This commit is contained in:
parent
255b27a55d
commit
0f2d9c589f
78
engine/3rdparty/volk/xmake.lua
vendored
78
engine/3rdparty/volk/xmake.lua
vendored
@ -1,78 +0,0 @@
|
|||||||
package("volk")
|
|
||||||
|
|
||||||
set_homepage("https://github.com/zeux/volk")
|
|
||||||
set_description("volk is a meta-loader for Vulkan")
|
|
||||||
set_license("MIT")
|
|
||||||
|
|
||||||
add_urls("https://github.com/zeux/volk/archive/$(version).tar.gz", {version = function (version)
|
|
||||||
return version:ge("1.3.226") and format("sdk-%s", version:gsub("%+", ".")) or version
|
|
||||||
end})
|
|
||||||
add_urls("https://github.com/zeux/volk.git")
|
|
||||||
add_versions("1.2.190", "07f03720b8c70a626c98cc9545350538122bca9f853e6ed20ccad5a25d55fa4b")
|
|
||||||
add_versions("1.2.162", "ac4d9d6e88dee5a83ad176e2da57f1989ca2c6df155a0aeb5e18e9471aa4d777")
|
|
||||||
add_versions("1.3.204", "7776e7f3c70f199579da33d2ccd7152ca8b96182fa98c31fbe80880cef0fdf70")
|
|
||||||
add_versions("1.3.231+1", "fac8d3d295e88bcc6bfb2b729d2c4babb2ea04ccb39fd918a3471b2d756789b9")
|
|
||||||
|
|
||||||
add_deps("vulkan-headers")
|
|
||||||
|
|
||||||
add_configs("header_only", {description = "Header only.", default = false, type = "boolean"})
|
|
||||||
add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
|
|
||||||
|
|
||||||
if is_plat("linux") then
|
|
||||||
add_syslinks("dl")
|
|
||||||
end
|
|
||||||
|
|
||||||
on_install("windows", "linux", "macosx", "mingw", "iphoneos", "android", function (package)
|
|
||||||
if not package:config("header_only") then
|
|
||||||
local defines = ""
|
|
||||||
if is_plat("windows") then
|
|
||||||
defines = [[add_defines("VK_USE_PLATFORM_WIN32_KHR", {public = true})]]
|
|
||||||
elseif is_plat("linux") then
|
|
||||||
defines = [[add_defines("VK_USE_PLATFORM_XLIB_KHR", {public = true})]]
|
|
||||||
elseif is_plat("macosx") then
|
|
||||||
defines = [[add_defines("VK_USE_PLATFORM_MACOS_MVK", {public = true})]]
|
|
||||||
end
|
|
||||||
io.writefile("xmake.lua", format([[
|
|
||||||
add_rules("mode.debug", "mode.release")
|
|
||||||
add_requires("vulkan-headers")
|
|
||||||
%s
|
|
||||||
target("volk")
|
|
||||||
set_kind("static")
|
|
||||||
add_files("volk.c")
|
|
||||||
add_headerfiles("volk.h")
|
|
||||||
add_packages("vulkan-headers")
|
|
||||||
if is_plat("linux") then
|
|
||||||
add_syslinks("dl")
|
|
||||||
end
|
|
||||||
]],defines))
|
|
||||||
else
|
|
||||||
io.writefile("xmake.lua", [[
|
|
||||||
add_requires("vulkan-headers")
|
|
||||||
target("volk")
|
|
||||||
set_kind("headeronly")
|
|
||||||
add_headerfiles("volk.h")
|
|
||||||
add_packages("vulkan-headers")
|
|
||||||
if is_plat("linux") then
|
|
||||||
add_syslinks("dl")
|
|
||||||
end
|
|
||||||
]])
|
|
||||||
|
|
||||||
os.cp("volk.c", package:installdir("include"))
|
|
||||||
end
|
|
||||||
|
|
||||||
import("package.tools.xmake").install(package)
|
|
||||||
end)
|
|
||||||
|
|
||||||
on_test(function (package)
|
|
||||||
local defines
|
|
||||||
if package:config("header_only") then
|
|
||||||
defines = "VOLK_IMPLEMENTATION"
|
|
||||||
end
|
|
||||||
|
|
||||||
assert(package:check_csnippets({test = [[
|
|
||||||
#include <volk.h>
|
|
||||||
void test() {
|
|
||||||
volkInitialize();
|
|
||||||
}
|
|
||||||
]]}, {configs = {defines = defines}}))
|
|
||||||
end)
|
|
||||||
4
engine/3rdparty/xmake.lua
vendored
4
engine/3rdparty/xmake.lua
vendored
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
includes("**/xmake.lua")
|
includes("**/xmake.lua")
|
||||||
add_requires("spdlog")
|
add_requires("spdlog")
|
||||||
add_requires("glfw","glm")
|
add_requires("tinyobjloader")
|
||||||
add_requires("tinyobjloader")
|
add_requires("vulkansdk")
|
||||||
3179
engine/src/3rdparty/volk/volk.c
vendored
Normal file
3179
engine/src/3rdparty/volk/volk.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2069
engine/src/3rdparty/volk/volk.h
vendored
Normal file
2069
engine/src/3rdparty/volk/volk.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
19558
engine/src/3rdparty/vulkan-memory-allocator/vk_mem_alloc.h
vendored
Normal file
19558
engine/src/3rdparty/vulkan-memory-allocator/vk_mem_alloc.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
@ -15,7 +15,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
#include <map>
|
||||||
namespace vulkanapi {
|
namespace vulkanapi {
|
||||||
#define _USE_GRAPHIC_DEBUG
|
#define Z_USE_GRAPHIC_DEBUG
|
||||||
class CommandBuffer;
|
class CommandBuffer;
|
||||||
using std::string;
|
using std::string;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
|
|||||||
@ -24,11 +24,11 @@ namespace vulkanapi {
|
|||||||
extensions.data(), // const char * const * ppEnabledExtensionNames
|
extensions.data(), // const char * const * ppEnabledExtensionNames
|
||||||
&Creator.desiredPhysicalDeviceFeatures // const VkPhysicalDeviceFeatures * pEnabledFeatures
|
&Creator.desiredPhysicalDeviceFeatures // const VkPhysicalDeviceFeatures * pEnabledFeatures
|
||||||
};
|
};
|
||||||
#ifdef _USE_GRAPHIC_DEBUG
|
#ifdef Z_USE_GRAPHIC_DEBUG
|
||||||
auto layers = Creator.EnabledLayerNames();
|
auto layers = Creator.EnabledLayerNames();
|
||||||
device_create_info.enabledLayerCount = layers.size();
|
device_create_info.enabledLayerCount = layers.size();
|
||||||
device_create_info.ppEnabledLayerNames = layers.data();
|
device_create_info.ppEnabledLayerNames = layers.data();
|
||||||
#endif // _USE_GRAPHIC_DEBUG
|
#endif // Z_USE_GRAPHIC_DEBUG
|
||||||
VkResult result = vkCreateDevice(mPhysical, &device_create_info, nullptr, &mPtr);
|
VkResult result = vkCreateDevice(mPhysical, &device_create_info, nullptr, &mPtr);
|
||||||
if ((result != VK_SUCCESS) || (mPtr == VK_NULL_HANDLE)) {
|
if ((result != VK_SUCCESS) || (mPtr == VK_NULL_HANDLE)) {
|
||||||
zlog::error("Could not create logical device. VkResult {}", result);
|
zlog::error("Could not create logical device. VkResult {}", result);
|
||||||
|
|||||||
@ -18,7 +18,7 @@ namespace vulkanapi {
|
|||||||
void DeviceCreator::AddWindowExtension()
|
void DeviceCreator::AddWindowExtension()
|
||||||
{
|
{
|
||||||
AddExtension(VK_KHR_SWAPCHAIN_EXTENSION_NAME);
|
AddExtension(VK_KHR_SWAPCHAIN_EXTENSION_NAME);
|
||||||
#ifdef _USE_GRAPHIC_DEBUG
|
#ifdef Z_USE_GRAPHIC_DEBUG
|
||||||
AddLayer("VK_LAYER_KHRONOS_validation");
|
AddLayer("VK_LAYER_KHRONOS_validation");
|
||||||
AddLayer("VK_LAYER_RENDERDOC_Capture");
|
AddLayer("VK_LAYER_RENDERDOC_Capture");
|
||||||
#endif
|
#endif
|
||||||
@ -59,9 +59,9 @@ namespace vulkanapi {
|
|||||||
device = available_devices[i];
|
device = available_devices[i];
|
||||||
if (!CheckProperty(device))continue;
|
if (!CheckProperty(device))continue;
|
||||||
if (!CheckExtension(device))continue;
|
if (!CheckExtension(device))continue;
|
||||||
#ifdef _USE_GRAPHIC_DEBUG
|
#ifdef Z_USE_GRAPHIC_DEBUG
|
||||||
if (!CheckLayer(device))continue;
|
if (!CheckLayer(device))continue;
|
||||||
#endif // _USE_GRAPHIC_DEBUG
|
#endif // Z_USE_GRAPHIC_DEBUG
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -123,7 +123,7 @@ namespace vulkanapi {
|
|||||||
{
|
{
|
||||||
desiredExtensions.push_back(extensionName);
|
desiredExtensions.push_back(extensionName);
|
||||||
}
|
}
|
||||||
#ifdef _USE_GRAPHIC_DEBUG
|
#ifdef Z_USE_GRAPHIC_DEBUG
|
||||||
void DeviceCreator::AddLayer(string layerName)
|
void DeviceCreator::AddLayer(string layerName)
|
||||||
{
|
{
|
||||||
desiredLayers.push_back(layerName);
|
desiredLayers.push_back(layerName);
|
||||||
|
|||||||
@ -37,7 +37,7 @@ namespace vulkanapi {
|
|||||||
void QueueCreateInfos(vector<VkDeviceQueueCreateInfo>& queue_create_infos,
|
void QueueCreateInfos(vector<VkDeviceQueueCreateInfo>& queue_create_infos,
|
||||||
vector<vector<float>>& queue_prioritie,
|
vector<vector<float>>& queue_prioritie,
|
||||||
vector<VkQueueFamilyProperties>& queue_families);
|
vector<VkQueueFamilyProperties>& queue_families);
|
||||||
#ifdef _USE_GRAPHIC_DEBUG
|
#ifdef Z_USE_GRAPHIC_DEBUG
|
||||||
public:
|
public:
|
||||||
vector<string> desiredLayers;
|
vector<string> desiredLayers;
|
||||||
void AddLayer(string layerName);
|
void AddLayer(string layerName);
|
||||||
|
|||||||
@ -15,7 +15,7 @@ namespace vulkanapi {
|
|||||||
Creator.engineVersion, // uint32_t engineVersion
|
Creator.engineVersion, // uint32_t engineVersion
|
||||||
Creator.apiVersion // uint32_t apiVersion
|
Creator.apiVersion // uint32_t apiVersion
|
||||||
};
|
};
|
||||||
#ifdef _USE_GRAPHIC_DEBUG
|
#ifdef Z_USE_GRAPHIC_DEBUG
|
||||||
Creator.AddDebugExtension();
|
Creator.AddDebugExtension();
|
||||||
#endif
|
#endif
|
||||||
Creator.AddWindowExtension();
|
Creator.AddWindowExtension();
|
||||||
@ -31,7 +31,7 @@ namespace vulkanapi {
|
|||||||
static_cast<uint32_t>(extensions.size()), // uint32_t enabledExtensionCount
|
static_cast<uint32_t>(extensions.size()), // uint32_t enabledExtensionCount
|
||||||
extensions.data() // const char * const * ppEnabledExtensionNames
|
extensions.data() // const char * const * ppEnabledExtensionNames
|
||||||
};
|
};
|
||||||
#ifdef _USE_GRAPHIC_DEBUG
|
#ifdef Z_USE_GRAPHIC_DEBUG
|
||||||
VkDebugUtilsMessengerCreateInfoEXT debugInfo = Creator.DebugUtilsLayerNext();
|
VkDebugUtilsMessengerCreateInfoEXT debugInfo = Creator.DebugUtilsLayerNext();
|
||||||
instance_create_info.pNext = &debugInfo;
|
instance_create_info.pNext = &debugInfo;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -8,7 +8,7 @@ namespace vulkanapi {
|
|||||||
, engineName("zengine")
|
, engineName("zengine")
|
||||||
, engineVersion(VK_MAKE_VERSION(1, 0, 0))
|
, engineVersion(VK_MAKE_VERSION(1, 0, 0))
|
||||||
, apiVersion(VK_API_VERSION_1_0)
|
, apiVersion(VK_API_VERSION_1_0)
|
||||||
#ifdef _USE_GRAPHIC_DEBUG
|
#ifdef Z_USE_GRAPHIC_DEBUG
|
||||||
, messageSeverity(VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT)
|
, messageSeverity(VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT)
|
||||||
, messageType(VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT)
|
, messageType(VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT)
|
||||||
, debugCallback(Instance::DebugCallback)
|
, debugCallback(Instance::DebugCallback)
|
||||||
@ -28,13 +28,13 @@ namespace vulkanapi {
|
|||||||
{
|
{
|
||||||
AddExtension(VK_KHR_WIN32_SURFACE_EXTENSION_NAME);
|
AddExtension(VK_KHR_WIN32_SURFACE_EXTENSION_NAME);
|
||||||
AddExtension(VK_KHR_SURFACE_EXTENSION_NAME);
|
AddExtension(VK_KHR_SURFACE_EXTENSION_NAME);
|
||||||
//AddExtension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
|
AddExtension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
|
||||||
//AddExtension(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME);
|
AddExtension(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME);
|
||||||
}
|
}
|
||||||
void InstanceCreator::AddDebugExtension()
|
void InstanceCreator::AddDebugExtension()
|
||||||
{
|
{
|
||||||
AddLayer("VK_LAYER_KHRONOS_validation");
|
AddLayer("VK_LAYER_KHRONOS_validation");
|
||||||
AddLayer("VK_LAYER_RENDERDOC_Capture");
|
//AddLayer("VK_LAYER_RENDERDOC_Capture");//设备很可能不支持
|
||||||
//AddLayer("VK_LAYER_LUNARG_api_dump");
|
//AddLayer("VK_LAYER_LUNARG_api_dump");
|
||||||
AddExtension(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
|
AddExtension(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
|
||||||
AddExtension(VK_EXT_DEBUG_REPORT_EXTENSION_NAME);
|
AddExtension(VK_EXT_DEBUG_REPORT_EXTENSION_NAME);
|
||||||
@ -75,7 +75,7 @@ namespace vulkanapi {
|
|||||||
return _layers;
|
return _layers;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _USE_GRAPHIC_DEBUG
|
#ifdef Z_USE_GRAPHIC_DEBUG
|
||||||
VkDebugUtilsMessengerCreateInfoEXT InstanceCreator::DebugUtilsLayerNext()
|
VkDebugUtilsMessengerCreateInfoEXT InstanceCreator::DebugUtilsLayerNext()
|
||||||
{
|
{
|
||||||
VkDebugUtilsMessengerCreateInfoEXT createInfo{};
|
VkDebugUtilsMessengerCreateInfoEXT createInfo{};
|
||||||
|
|||||||
@ -24,7 +24,7 @@ namespace vulkanapi {
|
|||||||
vector<char const*> EnabledExtensionNames();
|
vector<char const*> EnabledExtensionNames();
|
||||||
vector<char const*> EnabledLayerNames();
|
vector<char const*> EnabledLayerNames();
|
||||||
public:
|
public:
|
||||||
#ifdef _USE_GRAPHIC_DEBUG
|
#ifdef Z_USE_GRAPHIC_DEBUG
|
||||||
VkDebugUtilsMessageSeverityFlagsEXT messageSeverity;
|
VkDebugUtilsMessageSeverityFlagsEXT messageSeverity;
|
||||||
VkDebugUtilsMessageTypeFlagsEXT messageType;
|
VkDebugUtilsMessageTypeFlagsEXT messageType;
|
||||||
PFN_vkDebugUtilsMessengerCallbackEXT debugCallback;
|
PFN_vkDebugUtilsMessengerCallbackEXT debugCallback;
|
||||||
|
|||||||
@ -5,8 +5,11 @@ target("zengine")
|
|||||||
set_kind("binary")
|
set_kind("binary")
|
||||||
set_rundir(".")
|
set_rundir(".")
|
||||||
add_deps("zcoro","zlog")
|
add_deps("zcoro","zlog")
|
||||||
add_packages("vulkansdk","volk","vulkan-memory-allocator","tinyobjloader","assimp")
|
add_packages("vulkansdk","tinyobjloader","assimp")
|
||||||
add_includedirs("src/engine")
|
add_includedirs("src/engine")
|
||||||
|
add_includedirs("src/3rdparty/volk", "src/3rdparty/vulkan-memory-allocator")
|
||||||
add_syslinks("user32")
|
add_syslinks("user32")
|
||||||
add_files("src/*.cpp", "src/**.cpp")
|
add_files("src/*.cpp", "src/**.cpp")
|
||||||
add_headerfiles("src/**.h")
|
add_files("src/3rdparty/**.c")
|
||||||
|
add_headerfiles("src/**.h")
|
||||||
|
add_headerfiles("src/3rdparty/**.h")
|
||||||
Loading…
Reference in New Issue
Block a user