diff --git a/external/vma/vma.cpp b/external/vma/vma.cpp index 0522d89..8d65d55 100644 --- a/external/vma/vma.cpp +++ b/external/vma/vma.cpp @@ -4,11 +4,12 @@ #define VMA_VULKAN_VERSION 1002000 #ifdef __linux__ -#define VK_USE_PLATFORM_XCB_KHR +# define XLIB_ILLEGAL_ACCESS +# define VK_USE_PLATFORM_XLIB_KHR #elif _WIN32 -#define VK_USE_PLATFORM_WIN32_KHR +# define VK_USE_PLATFORM_WIN32_KHR #else -#error not yet implemented +# error not yet implemented #endif #include "vk_mem_alloc.h" diff --git a/vulkan.d b/vulkan.d index 7a2bb9d..1c02f62 100644 --- a/vulkan.d +++ b/vulkan.d @@ -52,23 +52,24 @@ const DESC_ARRAY_SIZE = 256; version(linux) { const string[] VULKAN_LIBS = [ "libvulkan.so.1", "libvulkan.so" ]; - - struct PlatformHandles - { - xcb_connection_t *conn; - xcb_window_t window; - } } - version(Windows) { - const string[] VULKAN_LIBS = [ "vulkan-1.dll" ]; + const string[] VULKAN_LIBS = [ "vulkan-1.dll" ]; +} - struct PlatformHandles - { - HINSTANCE hinstance; - HWND hwnd; - } +struct PlatformHandles +{ + version(linux) + { + Display* display; + Window window; + } + version(Windows) + { + HINSTANCE hinstance; + HWND hwnd; + } } const char*[] VK_INSTANCE_LAYERS = []; @@ -76,7 +77,7 @@ const char*[] VK_INSTANCE_LAYERS_DEBUG = [ "VK_LAYER_KHRONOS_validation" ]; version(linux) { - const char*[] VK_INSTANCE_EXT = [ cast(char*)VK_KHR_SURFACE_EXTENSION_NAME, cast(char*)VK_KHR_XCB_SURFACE_EXTENSION_NAME ]; + const char*[] VK_INSTANCE_EXT = [ cast(char*)VK_KHR_SURFACE_EXTENSION_NAME, cast(char*)VK_KHR_XLIB_SURFACE_EXTENSION_NAME ]; const char*[] VK_INSTANCE_EXT_DEBUG = VK_INSTANCE_EXT ~ [ cast(char*)VK_EXT_DEBUG_UTILS_EXTENSION_NAME ]; } @@ -2659,13 +2660,13 @@ Init(PlatformHandles platform_handles, u64 permanent_mem, u64 frame_mem) { version(linux) { - VkXcbSurfaceCreateInfoKHR surface_info = { - sType: VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR, - connection: vk.platform_handles.conn, + VkXlibSurfaceCreateInfoKHR surface_info = { + sType: VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR, + dpy: vk.platform_handles.display, window: vk.platform_handles.window, }; - VkResult result = vkCreateXcbSurfaceKHR(vk.instance, &surface_info, null, &vk.surface); + VkResult result = vkCreateXlibSurfaceKHR(vk.instance, &surface_info, null, &vk.surface); } version(Windows) diff --git a/vulkan_funcs.d b/vulkan_funcs.d index 2773bc0..f066aa7 100644 --- a/vulkan_funcs.d +++ b/vulkan_funcs.d @@ -35,7 +35,7 @@ version(VULKAN_DEBUG) version(linux) { - PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR = null; + PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR = null; }; version(Windows) @@ -232,7 +232,7 @@ LoadInstanceFunctions(Vulkan* vk) version(linux) { - vkCreateXcbSurfaceKHR = cast(PFN_vkCreateXcbSurfaceKHR)vkGetInstanceProcAddr(vk.instance, "vkCreateXcbSurfaceKHR"); + vkCreateXlibSurfaceKHR = cast(PFN_vkCreateXlibSurfaceKHR)vkGetInstanceProcAddr(vk.instance, "vkCreateXlibSurfaceKHR"); } version(Windows) diff --git a/vulkan_includes.c b/vulkan_includes.c index 0234018..07e1011 100644 --- a/vulkan_includes.c +++ b/vulkan_includes.c @@ -1,9 +1,9 @@ #pragma attribute(push, nogc, nothrow) #ifdef __linux__ -# include +# define XLIB_ILLEGAL_ACCESS +# define VK_USE_PLATFORM_XLIB_KHR # include -# define VK_USE_PLATFORM_XCB_KHR #endif #ifdef _WIN32