Georg Lehmann : winevulkan: Override VK_USE_64_BIT_PTR_DEFINES instead of handle definition.

Alexandre Julliard julliard at winehq.org
Tue May 4 16:23:34 CDT 2021


Module: wine
Branch: master
Commit: 9ca95e32651d6a50dc787af4dc53fb907f1c4e2b
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=9ca95e32651d6a50dc787af4dc53fb907f1c4e2b

Author: Georg Lehmann <dadschoorse at gmail.com>
Date:   Sun Apr 25 13:22:14 2021 +0200

winevulkan: Override VK_USE_64_BIT_PTR_DEFINES instead of handle definition.

A bit simpler and more consistent because currently VK_USE_64_BIT_PTR_DEFINES
can be 1 but non dipatchable handles are always unit64_t.

Signed-off-by: Georg Lehmann <dadschoorse at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/winevulkan/make_vulkan | 10 +++-------
 include/wine/vulkan.h       | 24 +++++++++++++++++++-----
 2 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan
index b1877acda17..76d5fa94155 100755
--- a/dlls/winevulkan/make_vulkan
+++ b/dlls/winevulkan/make_vulkan
@@ -319,15 +319,11 @@ class VkDefine(object):
             # <type category="define" name="some_name">some_value</type>
             name = define.attrib.get("name")
 
-            # We override behavior of VK_DEFINE_NON_DISPATCHABLE handle as the default
+            # We override behavior of VK_USE_64_BIT_PTR_DEFINES as the default non-dispatchable handle
             # definition various between 64-bit (uses pointers) and 32-bit (uses uint64_t).
             # This complicates TRACEs in the thunks, so just use uint64_t.
-            if name == "VK_DEFINE_NON_DISPATCHABLE_HANDLE":
-                value = "#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;"
-            # As VK_DEFINE_NON_DISPATCHABLE handle is overriden above, we must also override
-            # VK_NULL_HANDLE so that its type will match.
-            elif name == "VK_NULL_HANDLE":
-                value = "#define VK_NULL_HANDLE 0ULL"
+            if name == "VK_USE_64_BIT_PTR_DEFINES":
+                value = "#define VK_USE_64_BIT_PTR_DEFINES 0"
             else:
                 value = define.text
             return VkDefine(name, value)
diff --git a/include/wine/vulkan.h b/include/wine/vulkan.h
index a9dfd0b593a..3638008315c 100644
--- a/include/wine/vulkan.h
+++ b/include/wine/vulkan.h
@@ -449,16 +449,30 @@
 #define VK_HEADER_VERSION 176
 #define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 2, VK_HEADER_VERSION)
 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
+#define VK_USE_64_BIT_PTR_DEFINES 0
 
-#ifndef VK_USE_64_BIT_PTR_DEFINES
-#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
-#define VK_USE_64_BIT_PTR_DEFINES 1
+#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
+#if (VK_USE_64_BIT_PTR_DEFINES==1)
+#if __cplusplus >= 201103L || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201103L))
+#define VK_NULL_HANDLE nullptr
 #else
-#define VK_USE_64_BIT_PTR_DEFINES 0
-#endif
+#define VK_NULL_HANDLE ((void*)0)
 #endif
+#else
 #define VK_NULL_HANDLE 0ULL
+#endif
+#endif
+#ifndef VK_NULL_HANDLE
+#define VK_NULL_HANDLE 0
+#endif
+
+#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
+#if (VK_USE_64_BIT_PTR_DEFINES==1)
+#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
+#else
 #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
+#endif
+#endif
 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR)
 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureNV)
 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)




More information about the wine-cvs mailing list