blob: 77cc183d031fea03854712c2c629cbd94dfaafc6 [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;
32#endif // VK_USE_PLATFORM_MIR_KHR
33#ifdef VK_USE_PLATFORM_WAYLAND_KHR
34 VkIcdSurfaceWayland wayland_surf;
35#endif // VK_USE_PLATFORM_WAYLAND_KHR
36#ifdef VK_USE_PLATFORM_WIN32_KHR
37 VkIcdSurfaceWin32 win_surf;
38#endif // VK_USE_PLATFORM_WIN32_KHR
39#ifdef VK_USE_PLATFORM_XCB_KHR
40 VkIcdSurfaceXcb xcb_surf;
41#endif // VK_USE_PLATFORM_XCB_KHR
42#ifdef VK_USE_PLATFORM_XLIB_KHR
43 VkIcdSurfaceXlib xlib_surf;
44#endif // VK_USE_PLATFORM_XLIB_KHR
45 VkIcdSurfaceDisplay display_surf;
46 };
47 uint32_t base_size; // Size of VkIcdSurfaceBase
48 uint32_t platform_size; // Size of corresponding VkIcdSurfaceXXX
49 uint32_t non_platform_offset; // Start offset to base_size
50 uint32_t entire_size; // Size of entire VkIcdSurface
51 VkSurfaceKHR *real_icd_surfaces;
52} VkIcdSurface;
53
Jon Ashburn8a39efc2015-11-06 11:02:40 -070054bool wsi_swapchain_instance_gpa(struct loader_instance *ptr_instance,
Jon Ashburn23d36b12016-02-02 17:47:28 -070055 const char *name, void **addr);
Ian Elliottd3ef02f2015-07-06 14:36:13 -060056
Jon Ashburn23d36b12016-02-02 17:47:28 -070057void wsi_create_instance(struct loader_instance *ptr_instance,
58 const VkInstanceCreateInfo *pCreateInfo);
Jon Ashburn6fa520f2016-03-25 12:49:35 -060059bool wsi_unsupported_instance_extension(const VkExtensionProperties *ext_prop);
Ian Elliottd3ef02f2015-07-06 14:36:13 -060060
Mark Young16573c72016-06-28 10:52:43 -060061VKAPI_ATTR VkResult VKAPI_CALL terminator_vkCreateSwapchainKHR(
62 VkDevice device, const VkSwapchainCreateInfoKHR *pCreateInfo,
63 const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchain);
64
Jon Ashburn23d36b12016-02-02 17:47:28 -070065VKAPI_ATTR void VKAPI_CALL
Jon Ashburn1530c342016-02-26 13:14:27 -070066terminator_DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface,
67 const VkAllocationCallbacks *pAllocator);
Ian Elliottd3ef02f2015-07-06 14:36:13 -060068
Jon Ashburn23d36b12016-02-02 17:47:28 -070069VKAPI_ATTR VkResult VKAPI_CALL
Jon Ashburn1530c342016-02-26 13:14:27 -070070terminator_GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice,
71 uint32_t queueFamilyIndex,
72 VkSurfaceKHR surface,
73 VkBool32 *pSupported);
Ian Elliott486c5502015-11-19 16:05:09 -070074
Jon Ashburn1530c342016-02-26 13:14:27 -070075VKAPI_ATTR VkResult VKAPI_CALL
76terminator_GetPhysicalDeviceSurfaceCapabilitiesKHR(
Jon Ashburn23d36b12016-02-02 17:47:28 -070077 VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
78 VkSurfaceCapabilitiesKHR *pSurfaceCapabilities);
Ian Elliott486c5502015-11-19 16:05:09 -070079
Jon Ashburn1530c342016-02-26 13:14:27 -070080VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceFormatsKHR(
81 VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
82 uint32_t *pSurfaceFormatCount, VkSurfaceFormatKHR *pSurfaceFormats);
Ian Elliott486c5502015-11-19 16:05:09 -070083
Jon Ashburn23d36b12016-02-02 17:47:28 -070084VKAPI_ATTR VkResult VKAPI_CALL
Jon Ashburn1530c342016-02-26 13:14:27 -070085terminator_GetPhysicalDeviceSurfacePresentModesKHR(
86 VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
87 uint32_t *pPresentModeCount, VkPresentModeKHR *pPresentModes);
Ian Elliott919fa302015-11-24 15:39:10 -070088
89#ifdef VK_USE_PLATFORM_WIN32_KHR
Jon Ashburn23d36b12016-02-02 17:47:28 -070090VKAPI_ATTR VkResult VKAPI_CALL
Jon Ashburn1530c342016-02-26 13:14:27 -070091terminator_CreateWin32SurfaceKHR(VkInstance instance,
92 const VkWin32SurfaceCreateInfoKHR *pCreateInfo,
93 const VkAllocationCallbacks *pAllocator,
94 VkSurfaceKHR *pSurface);
Jon Ashburn23d36b12016-02-02 17:47:28 -070095VKAPI_ATTR VkBool32 VKAPI_CALL
Jon Ashburn1530c342016-02-26 13:14:27 -070096terminator_GetPhysicalDeviceWin32PresentationSupportKHR(
Jon Ashburn23d36b12016-02-02 17:47:28 -070097 VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
Ian Elliott919fa302015-11-24 15:39:10 -070098#endif
99#ifdef VK_USE_PLATFORM_MIR_KHR
Jon Ashburn23d36b12016-02-02 17:47:28 -0700100VKAPI_ATTR VkResult VKAPI_CALL
Jon Ashburn1530c342016-02-26 13:14:27 -0700101terminator_CreateMirSurfaceKHR(VkInstance instance,
102 const VkMirSurfaceCreateInfoKHR *pCreateInfo,
103 const VkAllocationCallbacks *pAllocator,
104 VkSurfaceKHR *pSurface);
Jon Ashburn23d36b12016-02-02 17:47:28 -0700105VKAPI_ATTR VkBool32 VKAPI_CALL
Jon Ashburn1530c342016-02-26 13:14:27 -0700106terminator_GetPhysicalDeviceMirPresentationSupportKHR(
Jon Ashburn23d36b12016-02-02 17:47:28 -0700107 VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex,
108 MirConnection *connection);
Ian Elliott919fa302015-11-24 15:39:10 -0700109#endif
110#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Jon Ashburn1530c342016-02-26 13:14:27 -0700111VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateWaylandSurfaceKHR(
112 VkInstance instance, const VkWaylandSurfaceCreateInfoKHR *pCreateInfo,
113 const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
Jon Ashburn23d36b12016-02-02 17:47:28 -0700114VKAPI_ATTR VkBool32 VKAPI_CALL
Jon Ashburn1530c342016-02-26 13:14:27 -0700115terminator_GetPhysicalDeviceWaylandPresentationSupportKHR(
Jon Ashburn23d36b12016-02-02 17:47:28 -0700116 VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex,
117 struct wl_display *display);
Ian Elliott919fa302015-11-24 15:39:10 -0700118#endif
119#ifdef VK_USE_PLATFORM_XCB_KHR
Jon Ashburn23d36b12016-02-02 17:47:28 -0700120VKAPI_ATTR VkResult VKAPI_CALL
Jon Ashburn1530c342016-02-26 13:14:27 -0700121terminator_CreateXcbSurfaceKHR(VkInstance instance,
122 const VkXcbSurfaceCreateInfoKHR *pCreateInfo,
123 const VkAllocationCallbacks *pAllocator,
124 VkSurfaceKHR *pSurface);
Jon Ashburnf72a04b2015-11-25 17:55:49 -0700125
Jon Ashburn23d36b12016-02-02 17:47:28 -0700126VKAPI_ATTR VkBool32 VKAPI_CALL
Jon Ashburn1530c342016-02-26 13:14:27 -0700127terminator_GetPhysicalDeviceXcbPresentationSupportKHR(
Jon Ashburn23d36b12016-02-02 17:47:28 -0700128 VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex,
129 xcb_connection_t *connection, xcb_visualid_t visual_id);
Ian Elliott919fa302015-11-24 15:39:10 -0700130#endif
131#ifdef VK_USE_PLATFORM_XLIB_KHR
Jon Ashburn23d36b12016-02-02 17:47:28 -0700132VKAPI_ATTR VkResult VKAPI_CALL
Jon Ashburn1530c342016-02-26 13:14:27 -0700133terminator_CreateXlibSurfaceKHR(VkInstance instance,
134 const VkXlibSurfaceCreateInfoKHR *pCreateInfo,
135 const VkAllocationCallbacks *pAllocator,
136 VkSurfaceKHR *pSurface);
Jon Ashburn23d36b12016-02-02 17:47:28 -0700137VKAPI_ATTR VkBool32 VKAPI_CALL
Jon Ashburn1530c342016-02-26 13:14:27 -0700138terminator_GetPhysicalDeviceXlibPresentationSupportKHR(
Jon Ashburn23d36b12016-02-02 17:47:28 -0700139 VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display *dpy,
140 VisualID visualID);
Ian Elliott919fa302015-11-24 15:39:10 -0700141#endif
Jon Ashburncc407a22016-04-15 09:25:03 -0600142VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceDisplayPropertiesKHR(
143 VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount,
144 VkDisplayPropertiesKHR *pProperties);
Jon Ashburnc7d3e732016-03-08 09:30:30 -0700145VKAPI_ATTR VkResult VKAPI_CALL
146terminator_GetPhysicalDeviceDisplayPlanePropertiesKHR(
Jon Ashburncc407a22016-04-15 09:25:03 -0600147 VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount,
148 VkDisplayPlanePropertiesKHR *pProperties);
Jon Ashburnc7d3e732016-03-08 09:30:30 -0700149VKAPI_ATTR VkResult VKAPI_CALL
Jon Ashburncc407a22016-04-15 09:25:03 -0600150terminator_GetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice,
151 uint32_t planeIndex,
152 uint32_t *pDisplayCount,
153 VkDisplayKHR *pDisplays);
Jon Ashburnc7d3e732016-03-08 09:30:30 -0700154VKAPI_ATTR VkResult VKAPI_CALL
Jon Ashburncc407a22016-04-15 09:25:03 -0600155terminator_GetDisplayModePropertiesKHR(VkPhysicalDevice physicalDevice,
156 VkDisplayKHR display,
157 uint32_t *pPropertyCount,
158 VkDisplayModePropertiesKHR *pProperties);
Jon Ashburnc7d3e732016-03-08 09:30:30 -0700159VKAPI_ATTR VkResult VKAPI_CALL
Jon Ashburncc407a22016-04-15 09:25:03 -0600160terminator_CreateDisplayModeKHR(VkPhysicalDevice physicalDevice,
161 VkDisplayKHR display,
162 const VkDisplayModeCreateInfoKHR *pCreateInfo,
163 const VkAllocationCallbacks *pAllocator,
164 VkDisplayModeKHR *pMode);
165VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDisplayPlaneCapabilitiesKHR(
166 VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex,
167 VkDisplayPlaneCapabilitiesKHR *pCapabilities);
168VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDisplayPlaneSurfaceKHR(
169 VkInstance instance, const VkDisplaySurfaceCreateInfoKHR *pCreateInfo,
Jon Ashburn3ebf1252016-04-19 11:30:31 -0600170 const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
Piers Daniellf9262be2016-09-14 11:24:36 -0600171
172#endif /* WSI_H */