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") | ||||
| 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 <map> | ||||
| namespace vulkanapi {  | ||||
| #define _USE_GRAPHIC_DEBUG | ||||
| #define Z_USE_GRAPHIC_DEBUG | ||||
| class CommandBuffer; | ||||
| using std::string; | ||||
| using std::vector; | ||||
|  | ||||
| @ -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); | ||||
|  | ||||
| @ -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); | ||||
|  | ||||
| @ -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); | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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{}; | ||||
|  | ||||
| @ -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; | ||||
|  | ||||
| @ -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") | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user