diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-10-25 22:37:37 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-10-25 22:37:37 +0200 |
| commit | 2a4fe80399c86cb1af05181109766e72b7292e65 (patch) | |
| tree | 146c1ec328e714c2529c20213745ebc22b2308c0 /src | |
| parent | 8999713301f7e79631e65403b861dbd7eb04d0b2 (diff) | |
| download | box64-2a4fe80399c86cb1af05181109766e72b7292e65.tar.gz box64-2a4fe80399c86cb1af05181109766e72b7292e65.zip | |
Fixed wrapping of vkCreateDebugUtilsMessengerEXT
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped/wrappedvulkan.c | 43 | ||||
| -rw-r--r-- | src/wrapped/wrappedvulkan_private.h | 4 |
2 files changed, 44 insertions, 3 deletions
diff --git a/src/wrapped/wrappedvulkan.c b/src/wrapped/wrappedvulkan.c index 973b4ef1..d5567ee0 100644 --- a/src/wrapped/wrappedvulkan.c +++ b/src/wrapped/wrappedvulkan.c @@ -207,6 +207,15 @@ typedef struct my_VkAllocationCallbacks_s { void* pfnInternalFree; } my_VkAllocationCallbacks_t; +typedef struct my_VkDebugUtilsMessengerCreateInfoEXT_s { + int sType; + const void* pNext; + int flags; + int messageSeverity; + int messageType; + void* pfnUserCallback; + void* pUserData; +} my_VkDebugUtilsMessengerCreateInfoEXT_t; #define SUPER() \ GO(0) \ @@ -347,6 +356,28 @@ static void* find_DebugReportCallbackEXT_Fct(void* fct) printf_log(LOG_NONE, "Warning, no more slot for Vulkan DebugReportCallbackEXT callback\n"); return NULL; } +// DebugUtilsMessengerCallback ... +#define GO(A) \ +static uintptr_t my_DebugUtilsMessengerCallback_fct_##A = 0; \ +static int my_DebugUtilsMessengerCallback_##A(int a, int b, void* c, void* d) \ +{ \ + return RunFunctionFmt(my_DebugUtilsMessengerCallback_fct_##A, "iipp", a, b, c, d); \ +} +SUPER() +#undef GO +static void* find_DebugUtilsMessengerCallback_Fct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_DebugUtilsMessengerCallback_fct_##A == (uintptr_t)fct) return my_DebugUtilsMessengerCallback_##A; + SUPER() + #undef GO + #define GO(A) if(my_DebugUtilsMessengerCallback_fct_##A == 0) {my_DebugUtilsMessengerCallback_fct_##A = (uintptr_t)fct; return my_DebugUtilsMessengerCallback_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for Vulkan DebugUtilsMessengerCallback callback\n"); + return NULL; +} #undef SUPER @@ -559,7 +590,17 @@ DESTROY64(vkDestroySwapchainKHR) DESTROY64(vkFreeMemory) -CREATE(vkCreateDebugUtilsMessengerEXT) +EXPORT int my_vkCreateDebugUtilsMessengerEXT(x64emu_t* emu, void* device, my_VkDebugUtilsMessengerCreateInfoEXT_t* pAllocateInfo, my_VkAllocationCallbacks_t* pAllocator, void* p) +{ + #define VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT 1000128004 + my_VkAllocationCallbacks_t my_alloc; + my_VkDebugUtilsMessengerCreateInfoEXT_t* info = pAllocateInfo; + while(info && info->sType==VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT) { + info->pfnUserCallback = find_DebugUtilsMessengerCallback_Fct(info->pfnUserCallback); + info = (my_VkDebugUtilsMessengerCreateInfoEXT_t*)info->pNext; + } + return my->vkCreateDebugUtilsMessengerEXT(device, pAllocateInfo, find_VkAllocationCallbacks(&my_alloc, pAllocator), p); +} DESTROY(vkDestroyDebugUtilsMessengerEXT) DESTROY64(vkDestroySurfaceKHR) diff --git a/src/wrapped/wrappedvulkan_private.h b/src/wrapped/wrappedvulkan_private.h index cbf18879..3d2d5cff 100644 --- a/src/wrapped/wrappedvulkan_private.h +++ b/src/wrapped/wrappedvulkan_private.h @@ -267,7 +267,7 @@ GO(vkDebugReportMessageEXT, vFpiiULipp) GOM(vkDestroyDebugReportCallbackEXT, iFEppp) //VK_EXT_debug_utils -GO(vkCmdBeginDebugUtilsLabelEXT, vFpp) //TODO: Cehck alignement of this extension +GO(vkCmdBeginDebugUtilsLabelEXT, vFpp) //TODO: Check alignement of this extension GO(vkCmdEndDebugUtilsLabelEXT, vFp) GO(vkCmdInsertDebugUtilsLabelEXT, vFpp) GOM(vkCreateDebugUtilsMessengerEXT, iFEpppp) @@ -277,7 +277,7 @@ GO(vkQueueEndDebugUtilsLabelEXT, vFp) GO(vkQueueInsertDebugUtilsLabelEXT, vFpp) GO(vkSetDebugUtilsObjectNameEXT, iFpp) GO(vkSetDebugUtilsObjectTagEXT, iFpp) -//GOM(vkSubmitDebugUtilsMessageEXT, vFEpppp) // callback in last arguments +GO(vkSubmitDebugUtilsMessageEXT, vFpppp) // VK_KHR_external_memory_capabilities GO(vkGetPhysicalDeviceExternalBufferPropertiesKHR, vFppp) |