This commit is contained in:
ouczbs 2024-03-11 17:25:43 +08:00
parent 255b27a55d
commit 0f2d9c589f
13 changed files with 24829 additions and 98 deletions

View File

@ -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)

View File

@ -1,5 +1,5 @@
includes("**/xmake.lua")
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

File diff suppressed because it is too large Load Diff

2069
engine/src/3rdparty/volk/volk.h vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -15,7 +15,7 @@
#include <vector>
#include <map>
namespace vulkanapi {
#define _USE_GRAPHIC_DEBUG
#define Z_USE_GRAPHIC_DEBUG
class CommandBuffer;
using std::string;
using std::vector;

View File

@ -24,11 +24,11 @@ namespace vulkanapi {
extensions.data(), // const char * const * ppEnabledExtensionNames
&Creator.desiredPhysicalDeviceFeatures // const VkPhysicalDeviceFeatures * pEnabledFeatures
};
#ifdef _USE_GRAPHIC_DEBUG
#ifdef Z_USE_GRAPHIC_DEBUG
auto layers = Creator.EnabledLayerNames();
device_create_info.enabledLayerCount = layers.size();
device_create_info.ppEnabledLayerNames = layers.data();
#endif // _USE_GRAPHIC_DEBUG
#endif // Z_USE_GRAPHIC_DEBUG
VkResult result = vkCreateDevice(mPhysical, &device_create_info, nullptr, &mPtr);
if ((result != VK_SUCCESS) || (mPtr == VK_NULL_HANDLE)) {
zlog::error("Could not create logical device. VkResult {}", result);

View File

@ -18,7 +18,7 @@ namespace vulkanapi {
void DeviceCreator::AddWindowExtension()
{
AddExtension(VK_KHR_SWAPCHAIN_EXTENSION_NAME);
#ifdef _USE_GRAPHIC_DEBUG
#ifdef Z_USE_GRAPHIC_DEBUG
AddLayer("VK_LAYER_KHRONOS_validation");
AddLayer("VK_LAYER_RENDERDOC_Capture");
#endif
@ -59,9 +59,9 @@ namespace vulkanapi {
device = available_devices[i];
if (!CheckProperty(device))continue;
if (!CheckExtension(device))continue;
#ifdef _USE_GRAPHIC_DEBUG
#ifdef Z_USE_GRAPHIC_DEBUG
if (!CheckLayer(device))continue;
#endif // _USE_GRAPHIC_DEBUG
#endif // Z_USE_GRAPHIC_DEBUG
return true;
}
return false;
@ -123,7 +123,7 @@ namespace vulkanapi {
{
desiredExtensions.push_back(extensionName);
}
#ifdef _USE_GRAPHIC_DEBUG
#ifdef Z_USE_GRAPHIC_DEBUG
void DeviceCreator::AddLayer(string layerName)
{
desiredLayers.push_back(layerName);

View File

@ -37,7 +37,7 @@ namespace vulkanapi {
void QueueCreateInfos(vector<VkDeviceQueueCreateInfo>& queue_create_infos,
vector<vector<float>>& queue_prioritie,
vector<VkQueueFamilyProperties>& queue_families);
#ifdef _USE_GRAPHIC_DEBUG
#ifdef Z_USE_GRAPHIC_DEBUG
public:
vector<string> desiredLayers;
void AddLayer(string layerName);

View File

@ -15,7 +15,7 @@ namespace vulkanapi {
Creator.engineVersion, // uint32_t engineVersion
Creator.apiVersion // uint32_t apiVersion
};
#ifdef _USE_GRAPHIC_DEBUG
#ifdef Z_USE_GRAPHIC_DEBUG
Creator.AddDebugExtension();
#endif
Creator.AddWindowExtension();
@ -31,7 +31,7 @@ namespace vulkanapi {
static_cast<uint32_t>(extensions.size()), // uint32_t enabledExtensionCount
extensions.data() // const char * const * ppEnabledExtensionNames
};
#ifdef _USE_GRAPHIC_DEBUG
#ifdef Z_USE_GRAPHIC_DEBUG
VkDebugUtilsMessengerCreateInfoEXT debugInfo = Creator.DebugUtilsLayerNext();
instance_create_info.pNext = &debugInfo;
#endif

View File

@ -8,7 +8,7 @@ namespace vulkanapi {
, engineName("zengine")
, engineVersion(VK_MAKE_VERSION(1, 0, 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)
, 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)
@ -28,13 +28,13 @@ namespace vulkanapi {
{
AddExtension(VK_KHR_WIN32_SURFACE_EXTENSION_NAME);
AddExtension(VK_KHR_SURFACE_EXTENSION_NAME);
//AddExtension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
//AddExtension(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME);
AddExtension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
AddExtension(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME);
}
void InstanceCreator::AddDebugExtension()
{
AddLayer("VK_LAYER_KHRONOS_validation");
AddLayer("VK_LAYER_RENDERDOC_Capture");
//AddLayer("VK_LAYER_RENDERDOC_Capture");//设备很可能不支持
//AddLayer("VK_LAYER_LUNARG_api_dump");
AddExtension(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
AddExtension(VK_EXT_DEBUG_REPORT_EXTENSION_NAME);
@ -75,7 +75,7 @@ namespace vulkanapi {
return _layers;
}
#ifdef _USE_GRAPHIC_DEBUG
#ifdef Z_USE_GRAPHIC_DEBUG
VkDebugUtilsMessengerCreateInfoEXT InstanceCreator::DebugUtilsLayerNext()
{
VkDebugUtilsMessengerCreateInfoEXT createInfo{};

View File

@ -24,7 +24,7 @@ namespace vulkanapi {
vector<char const*> EnabledExtensionNames();
vector<char const*> EnabledLayerNames();
public:
#ifdef _USE_GRAPHIC_DEBUG
#ifdef Z_USE_GRAPHIC_DEBUG
VkDebugUtilsMessageSeverityFlagsEXT messageSeverity;
VkDebugUtilsMessageTypeFlagsEXT messageType;
PFN_vkDebugUtilsMessengerCallbackEXT debugCallback;

View File

@ -5,8 +5,11 @@ target("zengine")
set_kind("binary")
set_rundir(".")
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/3rdparty/volk", "src/3rdparty/vulkan-memory-allocator")
add_syslinks("user32")
add_files("src/*.cpp", "src/**.cpp")
add_headerfiles("src/**.h")
add_files("src/3rdparty/**.c")
add_headerfiles("src/**.h")
add_headerfiles("src/3rdparty/**.h")