blob: edfe03a1bef8b88e9af59f88af8046aaefc35c38 [file] [log] [blame]
Ian Elliottd3ef02f2015-07-06 14:36:13 -06001/*
Jon Ashburn23d36b12016-02-02 17:47:28 -07002 * Copyright (c) 2015-2016 The Khronos Group Inc.
3 * Copyright (c) 2015-2016 Valve Corporation
4 * Copyright (c) 2015-2016 LunarG, Inc.
Ian Elliottd3ef02f2015-07-06 14:36:13 -06005 *
Jon Ashburn3ebf1252016-04-19 11:30:31 -06006 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
Ian Elliottd3ef02f2015-07-06 14:36:13 -06009 *
Jon Ashburn3ebf1252016-04-19 11:30:31 -060010 * http://www.apache.org/licenses/LICENSE-2.0
Ian Elliottd3ef02f2015-07-06 14:36:13 -060011 *
Jon Ashburn3ebf1252016-04-19 11:30:31 -060012 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
Ian Elliottd3ef02f2015-07-06 14:36:13 -060017 *
Courtney Goeltzenleuchter05559522015-10-30 11:14:30 -060018 * Author: Ian Elliott <ian@lunarg.com>
19 *
Ian Elliottd3ef02f2015-07-06 14:36:13 -060020 */
21
Piers Daniellf9262be2016-09-14 11:24:36 -060022#ifndef WSI_H
23#define WSI_H
24
Ian Elliottd3ef02f2015-07-06 14:36:13 -060025#include "vk_loader_platform.h"
26#include "loader.h"
Ian Elliottd3ef02f2015-07-06 14:36:13 -060027
Piers Daniellf9262be2016-09-14 11:24:36 -060028typedef struct {
29 union {
30#ifdef VK_USE_PLATFORM_MIR_KHR
31 VkIcdSurfaceMir mir_surf;
Mark Lobodzinski64318ba2017-01-26 13:34:13 -070032#endif // VK_USE_PLATFORM_MIR_KHR
Piers Daniellf9262be2016-09-14 11:24:36 -060033#ifdef VK_USE_PLATFORM_WAYLAND_KHR
34 VkIcdSurfaceWayland wayland_surf;
Mark Lobodzinski64318ba2017-01-26 13:34:13 -070035#endif // VK_USE_PLATFORM_WAYLAND_KHR
Piers Daniellf9262be2016-09-14 11:24:36 -060036#ifdef VK_USE_PLATFORM_WIN32_KHR
37 VkIcdSurfaceWin32 win_surf;
Mark Lobodzinski64318ba2017-01-26 13:34:13 -070038#endif // VK_USE_PLATFORM_WIN32_KHR
Piers Daniellf9262be2016-09-14 11:24:36 -060039#ifdef VK_USE_PLATFORM_XCB_KHR
40 VkIcdSurfaceXcb xcb_surf;
Mark Lobodzinski64318ba2017-01-26 13:34:13 -070041#endif // VK_USE_PLATFORM_XCB_KHR
Piers Daniellf9262be2016-09-14 11:24:36 -060042#ifdef VK_USE_PLATFORM_XLIB_KHR
43 VkIcdSurfaceXlib xlib_surf;
Mark Lobodzinski64318ba2017-01-26 13:34:13 -070044#endif // VK_USE_PLATFORM_XLIB_KHR
Karl Schultz2e5ed332017-12-12 10:33:01 -050045#ifdef VK_USE_PLATFORM_MACOS_MVK
46 VkIcdSurfaceMacOS macos_surf;
47#endif // VK_USE_PLATFORM_MACOS_MVK
Piers Daniellf9262be2016-09-14 11:24:36 -060048 VkIcdSurfaceDisplay display_surf;
49 };
Mark Lobodzinski64318ba2017-01-26 13:34:13 -070050 uint32_t base_size; // Size of VkIcdSurfaceBase
51 uint32_t platform_size; // Size of corresponding VkIcdSurfaceXXX
52 uint32_t non_platform_offset; // Start offset to base_size
53 uint32_t entire_size; // Size of entire VkIcdSurface
Piers Daniellf9262be2016-09-14 11:24:36 -060054 VkSurfaceKHR *real_icd_surfaces;
55} VkIcdSurface;
56
Mark Lobodzinski729a8d32017-01-26 12:16:30 -070057bool wsi_swapchain_instance_gpa(struct loader_instance *ptr_instance, const char *name, void **addr);
Ian Elliottd3ef02f2015-07-06 14:36:13 -060058
Mark Lobodzinski729a8d32017-01-26 12:16:30 -070059void wsi_create_instance(struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo);
Jon Ashburn6fa520f2016-03-25 12:49:35 -060060bool wsi_unsupported_instance_extension(const VkExtensionProperties *ext_prop);
Ian Elliottd3ef02f2015-07-06 14:36:13 -060061
Mark Young0f183a82017-02-28 09:58:04 -070062VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR *pCreateInfo,
63 const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchain);
Mark Young16573c72016-06-28 10:52:43 -060064
Mark Lobodzinski729a8d32017-01-26 12:16:30 -070065VKAPI_ATTR void VKAPI_CALL terminator_DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface,
66 const VkAllocationCallbacks *pAllocator);
Ian Elliottd3ef02f2015-07-06 14:36:13 -060067
Mark Lobodzinski729a8d32017-01-26 12:16:30 -070068VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice,
69 uint32_t queueFamilyIndex, VkSurfaceKHR surface,
70 VkBool32 *pSupported);
Ian Elliott486c5502015-11-19 16:05:09 -070071
Mark Lobodzinski729a8d32017-01-26 12:16:30 -070072VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice,
73 VkSurfaceKHR surface,
74 VkSurfaceCapabilitiesKHR *pSurfaceCapabilities);
Ian Elliott486c5502015-11-19 16:05:09 -070075
Mark Lobodzinski729a8d32017-01-26 12:16:30 -070076VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
77 uint32_t *pSurfaceFormatCount,
78 VkSurfaceFormatKHR *pSurfaceFormats);
Ian Elliott486c5502015-11-19 16:05:09 -070079
Mark Lobodzinski729a8d32017-01-26 12:16:30 -070080VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice,
81 VkSurfaceKHR surface, uint32_t *pPresentModeCount,
82 VkPresentModeKHR *pPresentModes);
Ian Elliott919fa302015-11-24 15:39:10 -070083
84#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski729a8d32017-01-26 12:16:30 -070085VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateWin32SurfaceKHR(VkInstance instance, const VkWin32SurfaceCreateInfoKHR *pCreateInfo,
86 const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
87VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice physicalDevice,
88 uint32_t queueFamilyIndex);
Ian Elliott919fa302015-11-24 15:39:10 -070089#endif
90#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski729a8d32017-01-26 12:16:30 -070091VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateMirSurfaceKHR(VkInstance instance, const VkMirSurfaceCreateInfoKHR *pCreateInfo,
92 const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
93VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceMirPresentationSupportKHR(VkPhysicalDevice physicalDevice,
94 uint32_t queueFamilyIndex,
95 MirConnection *connection);
Ian Elliott919fa302015-11-24 15:39:10 -070096#endif
97#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski729a8d32017-01-26 12:16:30 -070098VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateWaylandSurfaceKHR(VkInstance instance,
99 const VkWaylandSurfaceCreateInfoKHR *pCreateInfo,
100 const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
101VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceWaylandPresentationSupportKHR(VkPhysicalDevice physicalDevice,
102 uint32_t queueFamilyIndex,
103 struct wl_display *display);
Ian Elliott919fa302015-11-24 15:39:10 -0700104#endif
105#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski729a8d32017-01-26 12:16:30 -0700106VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateXcbSurfaceKHR(VkInstance instance, const VkXcbSurfaceCreateInfoKHR *pCreateInfo,
107 const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
Jon Ashburnf72a04b2015-11-25 17:55:49 -0700108
Mark Lobodzinski729a8d32017-01-26 12:16:30 -0700109VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceXcbPresentationSupportKHR(VkPhysicalDevice physicalDevice,
110 uint32_t queueFamilyIndex,
111 xcb_connection_t *connection,
112 xcb_visualid_t visual_id);
Ian Elliott919fa302015-11-24 15:39:10 -0700113#endif
114#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski729a8d32017-01-26 12:16:30 -0700115VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateXlibSurfaceKHR(VkInstance instance, const VkXlibSurfaceCreateInfoKHR *pCreateInfo,
116 const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
117VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceXlibPresentationSupportKHR(VkPhysicalDevice physicalDevice,
118 uint32_t queueFamilyIndex, Display *dpy,
119 VisualID visualID);
Ian Elliott919fa302015-11-24 15:39:10 -0700120#endif
Karl Schultz2e5ed332017-12-12 10:33:01 -0500121#ifdef VK_USE_PLATFORM_MACOS_MVK
122VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateMacOSSurfaceMVK(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK *pCreateInfo,
123 const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
124#endif
125#ifdef VK_USE_PLATFORM_IOS_MVK
126VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateIOSSurfaceMVK(VkInstance instance, const VkIOSSurfaceCreateInfoMVK *pCreateInfo,
127 const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
128#endif
Mark Lobodzinski729a8d32017-01-26 12:16:30 -0700129VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice,
130 uint32_t *pPropertyCount,
131 VkDisplayPropertiesKHR *pProperties);
132VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceDisplayPlanePropertiesKHR(VkPhysicalDevice physicalDevice,
133 uint32_t *pPropertyCount,
134 VkDisplayPlanePropertiesKHR *pProperties);
135VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice, uint32_t planeIndex,
136 uint32_t *pDisplayCount, VkDisplayKHR *pDisplays);
137VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDisplayModePropertiesKHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display,
138 uint32_t *pPropertyCount,
139 VkDisplayModePropertiesKHR *pProperties);
140VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDisplayModeKHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display,
141 const VkDisplayModeCreateInfoKHR *pCreateInfo,
142 const VkAllocationCallbacks *pAllocator, VkDisplayModeKHR *pMode);
143VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode,
144 uint32_t planeIndex,
145 VkDisplayPlaneCapabilitiesKHR *pCapabilities);
146VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDisplayPlaneSurfaceKHR(VkInstance instance,
147 const VkDisplaySurfaceCreateInfoKHR *pCreateInfo,
148 const VkAllocationCallbacks *pAllocator,
149 VkSurfaceKHR *pSurface);
Piers Daniellf9262be2016-09-14 11:24:36 -0600150
Mark Young0f183a82017-02-28 09:58:04 -0700151VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateSharedSwapchainsKHR(VkDevice device, uint32_t swapchainCount,
152 const VkSwapchainCreateInfoKHR *pCreateInfos,
153 const VkAllocationCallbacks *pAllocator,
154 VkSwapchainKHR *pSwapchains);
Mark Young39389872017-01-19 21:10:49 -0700155
Lenny Komow82e15e02017-10-02 15:08:53 -0600156VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice,
157 VkSurfaceKHR surface,
158 uint32_t* pRectCount,
159 VkRect2D* pRects);
160
161#endif // WSI_H