update from xcb to xlib

This commit is contained in:
Matthew 2025-11-30 16:28:46 +11:00
parent f96d30ae9c
commit 6bd4718063
4 changed files with 27 additions and 25 deletions

View File

@ -4,7 +4,8 @@
#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
#else

View File

@ -52,19 +52,20 @@ 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" ];
}
struct PlatformHandles
{
version(linux)
{
Display* display;
Window window;
}
version(Windows)
{
HINSTANCE hinstance;
HWND hwnd;
@ -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)

View File

@ -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)

View File

@ -1,9 +1,9 @@
#pragma attribute(push, nogc, nothrow)
#ifdef __linux__
# include <xcb/xcb.h>
# define XLIB_ILLEGAL_ACCESS
# define VK_USE_PLATFORM_XLIB_KHR
# include <X11/Xlib.h>
# define VK_USE_PLATFORM_XCB_KHR
#endif
#ifdef _WIN32