about summary refs log tree commit diff stats
path: root/src/wrapped/wrappedvulkan.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-12-31 18:46:27 +0100
committerptitSeb <sebastien.chev@gmail.com>2023-12-31 18:46:27 +0100
commit919f8faeee3890c0a580a07a279c7dec538d0017 (patch)
tree55c441dcfd97675cebd2e17b7b49f7326cc7b5cc /src/wrapped/wrappedvulkan.c
parentb0db8e1ae0db4379b8e177430c2564a26d9331f5 (diff)
downloadbox64-919f8faeee3890c0a580a07a279c7dec538d0017.tar.gz
box64-919f8faeee3890c0a580a07a279c7dec538d0017.zip
More xcb_connection_t wrapping for vulkan
Diffstat (limited to 'src/wrapped/wrappedvulkan.c')
-rw-r--r--src/wrapped/wrappedvulkan.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/wrapped/wrappedvulkan.c b/src/wrapped/wrappedvulkan.c
index 02a729b1..3c8e7b46 100644
--- a/src/wrapped/wrappedvulkan.c
+++ b/src/wrapped/wrappedvulkan.c
@@ -15,6 +15,7 @@
 #include "box64context.h"
 #include "librarian.h"
 #include "callback.h"
+#include "myalign.h"
 
 //extern char* libvulkan;
 
@@ -225,6 +226,14 @@ typedef struct my_VkDebugReportCallbackCreateInfoEXT_s {
     void*       pUserData;
 } my_VkDebugReportCallbackCreateInfoEXT_t;
 
+typedef struct my_VkXcbSurfaceCreateInfoKHR_s {
+    int         sType;
+    const void* pNext;
+    uint32_t    flags;
+    void**      connection;
+    int         window;
+} my_VkXcbSurfaceCreateInfoKHR_t;
+
 typedef struct my_VkStruct_s {
     int         sType;
     struct my_VkStruct_s* pNext;
@@ -582,7 +591,16 @@ EXPORT int my_vkCreateSharedSwapchainsKHR(x64emu_t* emu, void* device, uint32_t
 
 CREATE(vkCreateSwapchainKHR)
 CREATE(vkCreateWaylandSurfaceKHR)
-CREATE(vkCreateXcbSurfaceKHR)
+EXPORT int my_vkCreateXcbSurfaceKHR(x64emu_t* emu, void* instance, void* info, my_VkAllocationCallbacks_t* pAllocator, void* pFence)
+{
+    my_VkAllocationCallbacks_t my_alloc;
+    my_VkXcbSurfaceCreateInfoKHR_t* surfaceinfo = info;
+    void* old_conn = surfaceinfo->connection;
+    surfaceinfo->connection = align_xcb_connection(old_conn);
+    int ret = my->vkCreateXcbSurfaceKHR(instance, info, find_VkAllocationCallbacks(&my_alloc, pAllocator), pFence);
+    surfaceinfo->connection = old_conn;
+    return ret;
+}
 CREATE(vkCreateXlibSurfaceKHR)
 CREATE(vkCreateRenderPass2)
 CREATE(vkCreateRenderPass2KHR)