From 146ba4106f459fd37d130a34da02ef737ac166e4 Mon Sep 17 00:00:00 2001 From: Gergely Kis Date: Thu, 26 Sep 2024 21:46:48 +0200 Subject: [PATCH] Move Vulkan includes to a central godot_vulkan.h header Also fixes Vulkan build problem with recent Clang. --- drivers/vulkan/godot_vulkan.h | 42 +++++++++++++++++++ .../vulkan/rendering_context_driver_vulkan.h | 6 +-- .../vulkan/rendering_device_driver_vulkan.h | 6 +-- drivers/vulkan/vulkan_hooks.h | 6 +-- ...endering_context_driver_vulkan_android.cpp | 6 +-- platform/ios/display_server_ios.h | 6 +-- platform/ios/os_ios.mm | 6 +-- ...endering_context_driver_vulkan_wayland.cpp | 6 +-- .../rendering_context_driver_vulkan_x11.cpp | 6 +-- ...endering_context_driver_vulkan_windows.cpp | 6 +-- ...VKEnumStringHelper-use-godot-vulkan.patch} | 10 ++--- ...-volk.patch => VMA-use-godot-vulkan.patch} | 15 +++---- thirdparty/vulkan/vk_enum_string_helper.h | 6 +-- thirdparty/vulkan/vk_mem_alloc.h | 6 +-- 14 files changed, 64 insertions(+), 69 deletions(-) create mode 100644 drivers/vulkan/godot_vulkan.h rename thirdparty/vulkan/patches/{VKEnumStringHelper-use-volk.patch => VKEnumStringHelper-use-godot-vulkan.patch} (73%) rename thirdparty/vulkan/patches/{VMA-use-volk.patch => VMA-use-godot-vulkan.patch} (54%) diff --git a/drivers/vulkan/godot_vulkan.h b/drivers/vulkan/godot_vulkan.h new file mode 100644 index 00000000000..f911c5520a8 --- /dev/null +++ b/drivers/vulkan/godot_vulkan.h @@ -0,0 +1,42 @@ +/**************************************************************************/ +/* godot_vulkan.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef GODOT_VULKAN_H +#define GODOT_VULKAN_H + +#ifdef USE_VOLK +#include +#else +#include +#define VK_NO_STDINT_H +#include +#endif + +#endif // GODOT_VULKAN_H diff --git a/drivers/vulkan/rendering_context_driver_vulkan.h b/drivers/vulkan/rendering_context_driver_vulkan.h index f9352d617b8..26de3862061 100644 --- a/drivers/vulkan/rendering_context_driver_vulkan.h +++ b/drivers/vulkan/rendering_context_driver_vulkan.h @@ -40,11 +40,7 @@ #define VK_TRACK_DEVICE_MEMORY #endif -#ifdef USE_VOLK -#include -#else -#include -#endif +#include "drivers/vulkan/godot_vulkan.h" class RenderingContextDriverVulkan : public RenderingContextDriver { public: diff --git a/drivers/vulkan/rendering_device_driver_vulkan.h b/drivers/vulkan/rendering_device_driver_vulkan.h index 81f4256941e..cc15c0a0fef 100644 --- a/drivers/vulkan/rendering_device_driver_vulkan.h +++ b/drivers/vulkan/rendering_device_driver_vulkan.h @@ -43,11 +43,7 @@ #endif #include "thirdparty/vulkan/vk_mem_alloc.h" -#ifdef USE_VOLK -#include -#else -#include -#endif +#include "drivers/vulkan/godot_vulkan.h" // Design principles: // - Vulkan structs are zero-initialized and fields not requiring a non-zero value are omitted (except in cases where expresivity reasons apply). diff --git a/drivers/vulkan/vulkan_hooks.h b/drivers/vulkan/vulkan_hooks.h index bb30b29cec9..82bcc9a0644 100644 --- a/drivers/vulkan/vulkan_hooks.h +++ b/drivers/vulkan/vulkan_hooks.h @@ -31,11 +31,7 @@ #ifndef VULKAN_HOOKS_H #define VULKAN_HOOKS_H -#ifdef USE_VOLK -#include -#else -#include -#endif +#include "drivers/vulkan/godot_vulkan.h" class VulkanHooks { private: diff --git a/platform/android/rendering_context_driver_vulkan_android.cpp b/platform/android/rendering_context_driver_vulkan_android.cpp index a306a121f88..51fb1ca18fa 100644 --- a/platform/android/rendering_context_driver_vulkan_android.cpp +++ b/platform/android/rendering_context_driver_vulkan_android.cpp @@ -32,11 +32,7 @@ #ifdef VULKAN_ENABLED -#ifdef USE_VOLK -#include -#else -#include -#endif +#include "drivers/vulkan/godot_vulkan.h" const char *RenderingContextDriverVulkanAndroid::_get_platform_surface_extension() const { return VK_KHR_ANDROID_SURFACE_EXTENSION_NAME; diff --git a/platform/ios/display_server_ios.h b/platform/ios/display_server_ios.h index bbb758074d9..0631b50f0ad 100644 --- a/platform/ios/display_server_ios.h +++ b/platform/ios/display_server_ios.h @@ -41,11 +41,7 @@ #if defined(VULKAN_ENABLED) #import "rendering_context_driver_vulkan_ios.h" -#ifdef USE_VOLK -#include -#else -#include -#endif +#include "drivers/vulkan/godot_vulkan.h" #endif // VULKAN_ENABLED #if defined(METAL_ENABLED) diff --git a/platform/ios/os_ios.mm b/platform/ios/os_ios.mm index 35b87ea6470..590238be77f 100644 --- a/platform/ios/os_ios.mm +++ b/platform/ios/os_ios.mm @@ -56,11 +56,7 @@ #import #if defined(VULKAN_ENABLED) -#ifdef USE_VOLK -#include -#else -#include -#endif +#include "drivers/vulkan/godot_vulkan.h" #endif // VULKAN_ENABLED #endif diff --git a/platform/linuxbsd/wayland/rendering_context_driver_vulkan_wayland.cpp b/platform/linuxbsd/wayland/rendering_context_driver_vulkan_wayland.cpp index 0417ba95eb5..8abcc464baa 100644 --- a/platform/linuxbsd/wayland/rendering_context_driver_vulkan_wayland.cpp +++ b/platform/linuxbsd/wayland/rendering_context_driver_vulkan_wayland.cpp @@ -32,11 +32,7 @@ #include "rendering_context_driver_vulkan_wayland.h" -#ifdef USE_VOLK -#include -#else -#include -#endif +#include "drivers/vulkan/godot_vulkan.h" const char *RenderingContextDriverVulkanWayland::_get_platform_surface_extension() const { return VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME; diff --git a/platform/linuxbsd/x11/rendering_context_driver_vulkan_x11.cpp b/platform/linuxbsd/x11/rendering_context_driver_vulkan_x11.cpp index 3f505d000c2..cbcf07852ba 100644 --- a/platform/linuxbsd/x11/rendering_context_driver_vulkan_x11.cpp +++ b/platform/linuxbsd/x11/rendering_context_driver_vulkan_x11.cpp @@ -32,11 +32,7 @@ #include "rendering_context_driver_vulkan_x11.h" -#ifdef USE_VOLK -#include -#else -#include -#endif +#include "drivers/vulkan/godot_vulkan.h" const char *RenderingContextDriverVulkanX11::_get_platform_surface_extension() const { return VK_KHR_XLIB_SURFACE_EXTENSION_NAME; diff --git a/platform/windows/rendering_context_driver_vulkan_windows.cpp b/platform/windows/rendering_context_driver_vulkan_windows.cpp index 445388af89f..8ca677fe648 100644 --- a/platform/windows/rendering_context_driver_vulkan_windows.cpp +++ b/platform/windows/rendering_context_driver_vulkan_windows.cpp @@ -34,11 +34,7 @@ #include "rendering_context_driver_vulkan_windows.h" -#ifdef USE_VOLK -#include -#else -#include -#endif +#include "drivers/vulkan/godot_vulkan.h" const char *RenderingContextDriverVulkanWindows::_get_platform_surface_extension() const { return VK_KHR_WIN32_SURFACE_EXTENSION_NAME; diff --git a/thirdparty/vulkan/patches/VKEnumStringHelper-use-volk.patch b/thirdparty/vulkan/patches/VKEnumStringHelper-use-godot-vulkan.patch similarity index 73% rename from thirdparty/vulkan/patches/VKEnumStringHelper-use-volk.patch rename to thirdparty/vulkan/patches/VKEnumStringHelper-use-godot-vulkan.patch index 8517b277d05..6b56d60181c 100644 --- a/thirdparty/vulkan/patches/VKEnumStringHelper-use-volk.patch +++ b/thirdparty/vulkan/patches/VKEnumStringHelper-use-godot-vulkan.patch @@ -1,17 +1,13 @@ diff --git a/thirdparty/vulkan/vk_enum_string_helper.h b/thirdparty/vulkan/vk_enum_string_helper.h -index 9d2af46344..d61dbb1290 100644 +index 8026787ad4..7a54b12a38 100644 --- a/thirdparty/vulkan/vk_enum_string_helper.h +++ b/thirdparty/vulkan/vk_enum_string_helper.h -@@ -13,7 +13,11 @@ +@@ -13,7 +13,7 @@ #ifdef __cplusplus #include #endif -#include -+#ifdef USE_VOLK -+ #include -+#else -+ #include -+#endif ++#include "drivers/vulkan/godot_vulkan.h" static inline const char* string_VkResult(VkResult input_value) { switch (input_value) { case VK_SUCCESS: diff --git a/thirdparty/vulkan/patches/VMA-use-volk.patch b/thirdparty/vulkan/patches/VMA-use-godot-vulkan.patch similarity index 54% rename from thirdparty/vulkan/patches/VMA-use-volk.patch rename to thirdparty/vulkan/patches/VMA-use-godot-vulkan.patch index e2e5ea5ad4f..a6c546e3d86 100644 --- a/thirdparty/vulkan/patches/VMA-use-volk.patch +++ b/thirdparty/vulkan/patches/VMA-use-godot-vulkan.patch @@ -1,17 +1,18 @@ diff --git a/thirdparty/vulkan/vk_mem_alloc.h b/thirdparty/vulkan/vk_mem_alloc.h -index 711f486571..e5eaa80e74 100644 +index 2307325d4e..ecb84094b9 100644 --- a/thirdparty/vulkan/vk_mem_alloc.h +++ b/thirdparty/vulkan/vk_mem_alloc.h -@@ -127,7 +127,11 @@ See documentation chapter: \ref statistics. +@@ -122,12 +122,12 @@ for user-defined purpose without allocating any real GPU memory. + See documentation chapter: \ref statistics. + */ + ++#include "drivers/vulkan/godot_vulkan.h" + + #ifdef __cplusplus extern "C" { #endif -#include -+#ifdef USE_VOLK -+ #include -+#else -+ #include -+#endif #if !defined(VMA_VULKAN_VERSION) #if defined(VK_VERSION_1_3) diff --git a/thirdparty/vulkan/vk_enum_string_helper.h b/thirdparty/vulkan/vk_enum_string_helper.h index 598453e7454..7a54b12a380 100644 --- a/thirdparty/vulkan/vk_enum_string_helper.h +++ b/thirdparty/vulkan/vk_enum_string_helper.h @@ -13,11 +13,7 @@ #ifdef __cplusplus #include #endif -#ifdef USE_VOLK - #include -#else - #include -#endif +#include "drivers/vulkan/godot_vulkan.h" static inline const char* string_VkResult(VkResult input_value) { switch (input_value) { case VK_SUCCESS: diff --git a/thirdparty/vulkan/vk_mem_alloc.h b/thirdparty/vulkan/vk_mem_alloc.h index b39b73b17dd..ecb84094b95 100644 --- a/thirdparty/vulkan/vk_mem_alloc.h +++ b/thirdparty/vulkan/vk_mem_alloc.h @@ -122,16 +122,12 @@ for user-defined purpose without allocating any real GPU memory. See documentation chapter: \ref statistics. */ +#include "drivers/vulkan/godot_vulkan.h" #ifdef __cplusplus extern "C" { #endif -#ifdef USE_VOLK - #include -#else - #include -#endif #if !defined(VMA_VULKAN_VERSION) #if defined(VK_VERSION_1_3)