aboutsummaryrefslogtreecommitdiff
path: root/loader
diff options
context:
space:
mode:
authorIan Elliott <ianelliott@google.com>2015-11-24 15:39:10 -0700
committerJon Ashburn <jon@lunarg.com>2015-12-01 10:18:24 -0700
commit9d93b07f17aa0978b4feb12f52d1c4f7b2b56983 (patch)
tree8862322c7b124364e39980d954b830895620faeb /loader
parentdbb4bc5aad38d35c9df77611c31d21b15d73c456 (diff)
downloadusermoji-9d93b07f17aa0978b4feb12f52d1c4f7b2b56983.tar.xz
loader: Add vkGetPhysicalDevice*PresentationSupportKHR()
These queries involve trampoline and terminator functions (the latter of which calls the ICD's function).
Diffstat (limited to 'loader')
-rw-r--r--loader/loader.c11
-rw-r--r--loader/loader.h15
-rw-r--r--loader/table_ops.h15
-rw-r--r--loader/wsi.c211
-rw-r--r--loader/wsi.h32
5 files changed, 284 insertions, 0 deletions
diff --git a/loader/loader.c b/loader/loader.c
index 2b8c2db3..59a4b961 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -113,18 +113,23 @@ const VkLayerInstanceDispatchTable instance_disp = {
.GetPhysicalDeviceSurfacePresentModesKHR = loader_GetPhysicalDeviceSurfacePresentModesKHR,
#ifdef VK_USE_PLATFORM_MIR_KHR
.CreateMirSurfaceKHR = vkCreateMirSurfaceKHR,
+ .GetPhysicalDeviceMirPresentationSupportKHR = loader_GetPhysicalDeviceMirPresentationSupportKHR,
#endif
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
.CreateWaylandSurfaceKHR = vkCreateWaylandSurfaceKHR,
+ .GetPhysicalDeviceWaylandPresentationSupportKHR = loader_GetPhysicalDeviceWaylandPresentationSupportKHR,
#endif
#ifdef VK_USE_PLATFORM_WIN32_KHR
.CreateWin32SurfaceKHR = vkCreateWin32SurfaceKHR,
+ .GetPhysicalDeviceWin32PresentationSupportKHR = loader_GetPhysicalDeviceWin32PresentationSupportKHR,
#endif
#ifdef VK_USE_PLATFORM_XCB_KHR
.CreateXcbSurfaceKHR = vkCreateXcbSurfaceKHR,
+ .GetPhysicalDeviceXcbPresentationSupportKHR = loader_GetPhysicalDeviceXcbPresentationSupportKHR,
#endif
#ifdef VK_USE_PLATFORM_XLIB_KHR
.CreateXlibSurfaceKHR = vkCreateXlibSurfaceKHR,
+ .GetPhysicalDeviceXlibPresentationSupportKHR = loader_GetPhysicalDeviceXlibPresentationSupportKHR,
#endif
.DbgCreateMsgCallback = loader_DbgCreateMsgCallback,
.DbgDestroyMsgCallback = loader_DbgDestroyMsgCallback,
@@ -1236,6 +1241,12 @@ static bool loader_icd_init_entrys(struct loader_icd *icd,
LOOKUP_GIPA(GetPhysicalDeviceSurfaceCapabilitiesKHR, false);
LOOKUP_GIPA(GetPhysicalDeviceSurfaceFormatsKHR, false);
LOOKUP_GIPA(GetPhysicalDeviceSurfacePresentModesKHR, false);
+#ifdef VK_USE_PLATFORM_WIN32_KHR
+ LOOKUP_GIPA(GetPhysicalDeviceWin32PresentationSupportKHR, false);
+#endif
+#ifdef VK_USE_PLATFORM_XCB_KHR
+ LOOKUP_GIPA(GetPhysicalDeviceXcbPresentationSupportKHR, false);
+#endif
#undef LOOKUP_GIPA
diff --git a/loader/loader.h b/loader/loader.h
index 86f3e22d..18766ef6 100644
--- a/loader/loader.h
+++ b/loader/loader.h
@@ -182,6 +182,21 @@ struct loader_icd {
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR;
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR;
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR;
+#ifdef VK_USE_PLATFORM_WIN32_KHR
+ PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR GetPhysicalDeviceWin32PresentationSupportKHR;
+#endif
+#ifdef VK_USE_PLATFORM_MIR_KHR
+ PFN_vkGetPhysicalDeviceMirPresentationSupportKHR GetPhysicalDeviceMirPresentvationSupportKHR;
+#endif
+#ifdef VK_USE_PLATFORM_WAYLAND_KHR
+ PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR GetPhysicalDeviceWaylandPresentationSupportKHR;
+#endif
+#ifdef VK_USE_PLATFORM_XCB_KHR
+ PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR GetPhysicalDeviceXcbPresentationSupportKHR;
+#endif
+#ifdef VK_USE_PLATFORM_XLIB_KHR
+ PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR GetPhysicalDeviceXlibPresentationSupportKHR;
+#endif
struct loader_icd *next;
};
diff --git a/loader/table_ops.h b/loader/table_ops.h
index b5327eb9..e5ad7efd 100644
--- a/loader/table_ops.h
+++ b/loader/table_ops.h
@@ -471,18 +471,23 @@ static inline void loader_init_instance_extension_dispatch_table(
table->GetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR) gpa(inst, "vkGetPhysicalDeviceSurfacePresentModesKHR");
#ifdef VK_USE_PLATFORM_MIR_KHR
table->CreateMirSurfaceKHR = (PFN_vkCreateMirSurfaceKHR) gpa(inst, "vkCreateMirSurfaceKHR");
+ table->GetPhysicalDeviceMirPresentationSupportKHR = (PFN_vkGetPhysicalDeviceMirPresentationSupportKHR) gpa(inst, "vkGetPhysicalDeviceMirPresentationSupportKHR");
#endif
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
table->CreateWaylandSurfaceKHR = (PFN_vkCreateWaylandSurfaceKHR) gpa(inst, "vkCreateWaylandSurfaceKHR");
+ table->GetPhysicalDeviceWaylandPresentationSupportKHR = (PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR) gpa(inst, "vkGetPhysicalDeviceWaylandPresentationSupportKHR");
#endif
#ifdef VK_USE_PLATFORM_WIN32_KHR
table->CreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR) gpa(inst, "vkCreateWin32SurfaceKHR");
+ table->GetPhysicalDeviceWin32PresentationSupportKHR = (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR) gpa(inst, "vkGetPhysicalDeviceWin32PresentationSupportKHR");
#endif
#ifdef VK_USE_PLATFORM_XCB_KHR
table->CreateXcbSurfaceKHR = (PFN_vkCreateXcbSurfaceKHR) gpa(inst, "vkCreateXcbSurfaceKHR");
+ table->GetPhysicalDeviceXcbPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR) gpa(inst, "vkGetPhysicalDeviceXcbPresentationSupportKHR");
#endif
#ifdef VK_USE_PLATFORM_XLIB_KHR
table->CreateXlibSurfaceKHR = (PFN_vkCreateXlibSurfaceKHR) gpa(inst, "vkCreateXlibSurfaceKHR");
+ table->GetPhysicalDeviceXlibPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR) gpa(inst, "vkGetPhysicalDeviceXlibPresentationSupportKHR");
#endif
}
@@ -531,22 +536,32 @@ static inline void *loader_lookup_instance_dispatch_table(
#ifdef VK_USE_PLATFORM_MIR_KHR
if (!strcmp(name, "CreateMirSurfaceKHR"))
return (void *) table->CreateMirSurfaceKHR;
+ if (!strcmp(name, "GetPhysicalDeviceMirPresentationSupportKHR"))
+ return (void *) table->GetPhysicalDeviceMirPresentationSupportKHR;
#endif
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
if (!strcmp(name, "CreateWaylandSurfaceKHR"))
return (void *) table->CreateWaylandSurfaceKHR;
+ if (!strcmp(name, "GetPhysicalDeviceWaylandPresentationSupportKHR"))
+ return (void *) table->GetPhysicalDeviceWaylandPresentationSupportKHR;
#endif
#ifdef VK_USE_PLATFORM_WIN32_KHR
if (!strcmp(name, "CreateWin32SurfaceKHR"))
return (void *) table->CreateWin32SurfaceKHR;
+ if (!strcmp(name, "GetPhysicalDeviceWin32PresentationSupportKHR"))
+ return (void *) table->GetPhysicalDeviceWin32PresentationSupportKHR;
#endif
#ifdef VK_USE_PLATFORM_XCB_KHR
if (!strcmp(name, "CreateXcbSurfaceKHR"))
return (void *) table->CreateXcbSurfaceKHR;
+ if (!strcmp(name, "GetPhysicalDeviceXcbPresentationSupportKHR"))
+ return (void *) table->GetPhysicalDeviceXcbPresentationSupportKHR;
#endif
#ifdef VK_USE_PLATFORM_XLIB_KHR
if (!strcmp(name, "CreateXlibSurfaceKHR"))
return (void *) table->CreateXlibSurfaceKHR;
+ if (!strcmp(name, "GetPhysicalDeviceXlibPresentationSupportKHR"))
+ return (void *) table->GetPhysicalDeviceXlibPresentationSupportKHR;
#endif
if (!strcmp(name, "DbgCreateMsgCallback"))
return (void *) table->DbgCreateMsgCallback;
diff --git a/loader/wsi.c b/loader/wsi.c
index c1cbc326..c1cd2e57 100644
--- a/loader/wsi.c
+++ b/loader/wsi.c
@@ -496,6 +496,40 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
return VK_SUCCESS;
}
+
+/*
+ * This is the trampoline entrypoint
+ * for GetPhysicalDeviceWin32PresentationSupportKHR
+ */
+LOADER_EXPORT VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex)
+{
+ const VkLayerInstanceDispatchTable *disp;
+ disp = loader_get_instance_dispatch(physicalDevice);
+ VkBool32 res = disp->GetPhysicalDeviceWin32PresentationSupportKHR(
+ physicalDevice,
+ queueFamilyIndex);
+ return res;
+}
+
+
+/*
+ * This is the instance chain terminator function
+ * for GetPhysicalDeviceWin32PresentationSupportKHR
+ */
+VKAPI_ATTR VkBool32 VKAPI_CALL loader_GetPhysicalDeviceWin32PresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex)
+{
+ struct loader_physical_device *phys_dev = (struct loader_physical_device *) physicalDevice;
+ struct loader_icd *icd = phys_dev->this_icd;
+
+ assert(icd->GetPhysicalDeviceXcbPresentationSupportKHR && "loader: null GetPhysicalDeviceWin32PresentationSupportKHR ICD pointer");
+
+ return icd->GetPhysicalDeviceWin32PresentationSupportKHR(phys_dev->phys_dev,
+ queueFamilyIndex);
+}
#endif/ VK_USE_PLATFORM_WIN32_KHR
#else // _WIN32 (i.e. Linux)
@@ -535,6 +569,44 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateMirSurfaceKHR(
return VK_SUCCESS;
}
+
+/*
+ * This is the trampoline entrypoint
+ * for GetPhysicalDeviceMirPresentationSupportKHR
+ */
+LOADER_EXPORT VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceMirPresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ MirConnection* connection)
+{
+ const VkLayerInstanceDispatchTable *disp;
+ disp = loader_get_instance_dispatch(physicalDevice);
+ VkBool32 res = disp->GetPhysicalDeviceMirPresentationSupportKHR(
+ physicalDevice,
+ queueFamilyIndex,
+ connection);
+ return res;
+}
+
+
+/*
+ * This is the instance chain terminator function
+ * for GetPhysicalDeviceMirPresentationSupportKHR
+ */
+VKAPI_ATTR VkBool32 VKAPI_CALL loader_GetPhysicalDeviceMirPresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ MirConnection* connection)
+{
+ struct loader_physical_device *phys_dev = (struct loader_physical_device *) physicalDevice;
+ struct loader_icd *icd = phys_dev->this_icd;
+
+ assert(icd->GetPhysicalDeviceMirPresentationSupportKHR && "loader: null GetPhysicalDeviceMirPresentationSupportKHR ICD pointer");
+
+ return icd->GetPhysicalDeviceMirPresentationSupportKHR(phys_dev->phys_dev,
+ queueFamilyIndex,
+ connection);
+}
#endif // VK_USE_PLATFORM_MIR_KHR
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
@@ -572,6 +644,44 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR(
return VK_SUCCESS;
}
+
+/*
+ * This is the trampoline entrypoint
+ * for GetPhysicalDeviceWaylandPresentationSupportKHR
+ */
+LOADER_EXPORT VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ struct wl_display* display)
+{
+ const VkLayerInstanceDispatchTable *disp;
+ disp = loader_get_instance_dispatch(physicalDevice);
+ VkBool32 res = disp->GetPhysicalDeviceWaylandPresentationSupportKHR(
+ physicalDevice,
+ queueFamilyIndex,
+ display);
+ return res;
+}
+
+
+/*
+ * This is the instance chain terminator function
+ * for GetPhysicalDeviceWaylandPresentationSupportKHR
+ */
+VKAPI_ATTR VkBool32 VKAPI_CALL loader_GetPhysicalDeviceWaylandPresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ struct wl_display* display)
+{
+ struct loader_physical_device *phys_dev = (struct loader_physical_device *) physicalDevice;
+ struct loader_icd *icd = phys_dev->this_icd;
+
+ assert(icd->GetPhysicalDeviceWaylandPresentationSupportKHR && "loader: null GetPhysicalDeviceWaylandPresentationSupportKHR ICD pointer");
+
+ return icd->GetPhysicalDeviceWaylandPresentationSupportKHR(phys_dev->phys_dev,
+ queueFamilyIndex,
+ display);
+}
#endif // VK_USE_PLATFORM_WAYLAND_KHR
#ifdef VK_USE_PLATFORM_XCB_KHR
@@ -609,6 +719,48 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
return VK_SUCCESS;
}
+
+/*
+ * This is the trampoline entrypoint
+ * for GetPhysicalDeviceXcbPresentationSupportKHR
+ */
+LOADER_EXPORT VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ xcb_connection_t* connection,
+ xcb_visualid_t visual_id)
+{
+ const VkLayerInstanceDispatchTable *disp;
+ disp = loader_get_instance_dispatch(physicalDevice);
+ VkBool32 res = disp->GetPhysicalDeviceXcbPresentationSupportKHR(
+ physicalDevice,
+ queueFamilyIndex,
+ connection,
+ visual_id);
+ return res;
+}
+
+
+/*
+ * This is the instance chain terminator function
+ * for GetPhysicalDeviceXcbPresentationSupportKHR
+ */
+VKAPI_ATTR VkBool32 VKAPI_CALL loader_GetPhysicalDeviceXcbPresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ xcb_connection_t* connection,
+ xcb_visualid_t visual_id)
+{
+ struct loader_physical_device *phys_dev = (struct loader_physical_device *) physicalDevice;
+ struct loader_icd *icd = phys_dev->this_icd;
+
+ assert(icd->GetPhysicalDeviceXcbPresentationSupportKHR && "loader: null GetPhysicalDeviceXcbPresentationSupportKHR ICD pointer");
+
+ return icd->GetPhysicalDeviceXcbPresentationSupportKHR(phys_dev->phys_dev,
+ queueFamilyIndex,
+ connection,
+ visual_id);
+}
#endif // VK_USE_PLATFORM_XCB_KHR
#ifdef VK_USE_PLATFORM_XLIB_KHR
@@ -646,6 +798,48 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
return VK_SUCCESS;
}
+
+/*
+ * This is the trampoline entrypoint
+ * for GetPhysicalDeviceXlibPresentationSupportKHR
+ */
+LOADER_EXPORT VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ Display* dpy,
+ VisualID visualID)
+{
+ const VkLayerInstanceDispatchTable *disp;
+ disp = loader_get_instance_dispatch(physicalDevice);
+ VkBool32 res = disp->GetPhysicalDeviceXlibPresentationSupportKHR(
+ physicalDevice,
+ queueFamilyIndex,
+ dpy,
+ visualID);
+ return res;
+}
+
+
+/*
+ * This is the instance chain terminator function
+ * for GetPhysicalDeviceXlibPresentationSupportKHR
+ */
+VKAPI_ATTR VkBool32 VKAPI_CALL loader_GetPhysicalDeviceXlibPresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ Display* dpy,
+ VisualID visualID)
+{
+ struct loader_physical_device *phys_dev = (struct loader_physical_device *) physicalDevice;
+ struct loader_icd *icd = phys_dev->this_icd;
+
+ assert(icd->GetPhysicalDeviceXlibPresentationSupportKHR && "loader: null GetPhysicalDeviceXlibPresentationSupportKHR ICD pointer");
+
+ return icd->GetPhysicalDeviceXlibPresentationSupportKHR(phys_dev->phys_dev,
+ queueFamilyIndex,
+ dpy,
+ visualID);
+}
#endif // VK_USE_PLATFORM_XLIB_KHR
#endif // _WIN32
@@ -718,6 +912,10 @@ bool wsi_swapchain_instance_gpa(struct loader_instance *ptr_instance,
*addr = ptr_instance->wsi_win32_surface_enabled ? (void *) vkCreateWin32SurfaceKHR : NULL;
return true;
}
+ if (!strcmp("vkGetPhysicalDeviceWin32PresentationSupportKHR", name)) {
+ *addr = ptr_instance->wsi_win32_surface_enabled ? (void *) vkGetPhysicalDeviceWin32PresentationSupportKHR : NULL;
+ return true;
+ }
#endif // VK_USE_PLATFORM_WIN32_KHR
#else // _WIN32 (i.e. Linux)
#ifdef VK_USE_PLATFORM_MIR_KHR
@@ -728,6 +926,9 @@ bool wsi_swapchain_instance_gpa(struct loader_instance *ptr_instance,
*addr = ptr_instance->wsi_mir_surface_enabled ? (void *) vkCreateMirSurfaceKHR : NULL;
return true;
}
+ if (!strcmp("vkGetPhysicalDeviceMirPresentationSupportKHR", name)) {
+ *addr = ptr_instance->wsi_mir_surface_enabled ? (void *) vkGetPhysicalDeviceMirPresentationSupportKHR : NULL;
+ return true;
#endif // VK_USE_PLATFORM_MIR_KHR
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
/*
@@ -737,6 +938,9 @@ bool wsi_swapchain_instance_gpa(struct loader_instance *ptr_instance,
*addr = ptr_instance->wsi_wayland_surface_enabled ? (void *) vkCreateWaylandSurfaceKHR : NULL;
return true;
}
+ if (!strcmp("vkGetPhysicalDeviceWaylandPresentationSupportKHR", name)) {
+ *addr = ptr_instance->wsi_wayland_surface_enabled ? (void *) vkGetPhysicalDeviceWaylandPresentationSupportKHR : NULL;
+ return true;
#endif // VK_USE_PLATFORM_WAYLAND_KHR
#ifdef VK_USE_PLATFORM_XCB_KHR
/*
@@ -746,6 +950,10 @@ bool wsi_swapchain_instance_gpa(struct loader_instance *ptr_instance,
*addr = ptr_instance->wsi_xcb_surface_enabled ? (void *) vkCreateXcbSurfaceKHR : NULL;
return true;
}
+ if (!strcmp("vkGetPhysicalDeviceXcbPresentationSupportKHR", name)) {
+ *addr = ptr_instance->wsi_xcb_surface_enabled ? (void *) vkGetPhysicalDeviceXcbPresentationSupportKHR : NULL;
+ return true;
+ }
#endif // VK_USE_PLATFORM_XCB_KHR
#ifdef VK_USE_PLATFORM_XLIB_KHR
/*
@@ -755,6 +963,9 @@ bool wsi_swapchain_instance_gpa(struct loader_instance *ptr_instance,
*addr = ptr_instance->wsi_xlib_surface_enabled ? (void *) vkCreateXlibSurfaceKHR : NULL;
return true;
}
+ if (!strcmp("vkGetPhysicalDeviceXlibPresentationSupportKHR", name)) {
+ *addr = ptr_instance->wsi_xlib_surface_enabled ? (void *) vkGetPhysicalDeviceXlibPresentationSupportKHR : NULL;
+ return true;
#endif // VK_USE_PLATFORM_XLIB_KHR
#endif // _WIN32
diff --git a/loader/wsi.h b/loader/wsi.h
index db4c0738..87f870a8 100644
--- a/loader/wsi.h
+++ b/loader/wsi.h
@@ -60,3 +60,35 @@ VKAPI_ATTR VkResult VKAPI_CALL loader_GetPhysicalDeviceSurfacePresentModesKHR(
VkSurfaceKHR surface,
uint32_t* pPresentModeCount,
VkPresentModeKHR* pPresentModes);
+
+#ifdef VK_USE_PLATFORM_WIN32_KHR
+VKAPI_ATTR VkBool32 VKAPI_CALL loader_GetPhysicalDeviceWin32PresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex);
+#endif
+#ifdef VK_USE_PLATFORM_MIR_KHR
+VKAPI_ATTR VkBool32 VKAPI_CALL loader_GetPhysicalDeviceMirPresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ MirConnection* connection);
+#endif
+#ifdef VK_USE_PLATFORM_WAYLAND_KHR
+VKAPI_ATTR VkBool32 VKAPI_CALL loader_GetPhysicalDeviceWaylandPresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ struct wl_display* display);
+#endif
+#ifdef VK_USE_PLATFORM_XCB_KHR
+VKAPI_ATTR VkBool32 VKAPI_CALL loader_GetPhysicalDeviceXcbPresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ xcb_connection_t* connection,
+ xcb_visualid_t visual_id);
+#endif
+#ifdef VK_USE_PLATFORM_XLIB_KHR
+VKAPI_ATTR VkBool32 VKAPI_CALL loader_GetPhysicalDeviceXlibPresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ Display* dpy,
+ VisualID visualID);
+#endif