wsi.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. /*
  2. * Copyright (c) 2015-2016 The Khronos Group Inc.
  3. * Copyright (c) 2015-2016 Valve Corporation
  4. * Copyright (c) 2015-2016 LunarG, Inc.
  5. *
  6. * 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
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * 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.
  17. *
  18. * Author: Ian Elliott <[email protected]>
  19. *
  20. */
  21. #ifndef WSI_H
  22. #define WSI_H
  23. #include "vk_loader_platform.h"
  24. #include "loader.h"
  25. typedef struct {
  26. union {
  27. #ifdef VK_USE_PLATFORM_WAYLAND_KHR
  28. VkIcdSurfaceWayland wayland_surf;
  29. #endif // VK_USE_PLATFORM_WAYLAND_KHR
  30. #ifdef VK_USE_PLATFORM_WIN32_KHR
  31. VkIcdSurfaceWin32 win_surf;
  32. #endif // VK_USE_PLATFORM_WIN32_KHR
  33. #ifdef VK_USE_PLATFORM_XCB_KHR
  34. VkIcdSurfaceXcb xcb_surf;
  35. #endif // VK_USE_PLATFORM_XCB_KHR
  36. #ifdef VK_USE_PLATFORM_XLIB_KHR
  37. VkIcdSurfaceXlib xlib_surf;
  38. #endif // VK_USE_PLATFORM_XLIB_KHR
  39. #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
  40. VkIcdSurfaceDirectFB directfb_surf;
  41. #endif // VK_USE_PLATFORM_DIRECTFB_EXT
  42. #ifdef VK_USE_PLATFORM_MACOS_MVK
  43. VkIcdSurfaceMacOS macos_surf;
  44. #endif // VK_USE_PLATFORM_MACOS_MVK
  45. #ifdef VK_USE_PLATFORM_GGP
  46. VkIcdSurfaceGgp ggp_surf;
  47. #endif // VK_USE_PLATFORM_GGP
  48. #ifdef VK_USE_PLATFORM_FUCHSIA
  49. VkIcdSurfaceImagePipe imagepipe_surf;
  50. #endif // VK_USE_PLATFORM_FUCHSIA
  51. #ifdef VK_USE_PLATFORM_METAL_EXT
  52. VkIcdSurfaceMetal metal_surf;
  53. #endif // VK_USE_PLATFORM_METAL_EXT
  54. VkIcdSurfaceDisplay display_surf;
  55. VkIcdSurfaceHeadless headless_surf;
  56. };
  57. uint32_t base_size; // Size of VkIcdSurfaceBase
  58. uint32_t platform_size; // Size of corresponding VkIcdSurfaceXXX
  59. uint32_t non_platform_offset; // Start offset to base_size
  60. uint32_t entire_size; // Size of entire VkIcdSurface
  61. VkSurfaceKHR *real_icd_surfaces;
  62. } VkIcdSurface;
  63. bool wsi_swapchain_instance_gpa(struct loader_instance *ptr_instance, const char *name, void **addr);
  64. void wsi_create_instance(struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo);
  65. bool wsi_unsupported_instance_extension(const VkExtensionProperties *ext_prop);
  66. VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateHeadlessSurfaceEXT(VkInstance instance,
  67. const VkHeadlessSurfaceCreateInfoEXT *pCreateInfo,
  68. const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
  69. VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR *pCreateInfo,
  70. const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchain);
  71. VKAPI_ATTR void VKAPI_CALL terminator_DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface,
  72. const VkAllocationCallbacks *pAllocator);
  73. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice,
  74. uint32_t queueFamilyIndex, VkSurfaceKHR surface,
  75. VkBool32 *pSupported);
  76. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice,
  77. VkSurfaceKHR surface,
  78. VkSurfaceCapabilitiesKHR *pSurfaceCapabilities);
  79. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
  80. uint32_t *pSurfaceFormatCount,
  81. VkSurfaceFormatKHR *pSurfaceFormats);
  82. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice,
  83. VkSurfaceKHR surface, uint32_t *pPresentModeCount,
  84. VkPresentModeKHR *pPresentModes);
  85. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDeviceGroupSurfacePresentModesKHR(
  86. VkDevice device,
  87. VkSurfaceKHR surface,
  88. VkDeviceGroupPresentModeFlagsKHR* pModes);
  89. #ifdef VK_USE_PLATFORM_WIN32_KHR
  90. VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateWin32SurfaceKHR(VkInstance instance, const VkWin32SurfaceCreateInfoKHR *pCreateInfo,
  91. const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
  92. VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice physicalDevice,
  93. uint32_t queueFamilyIndex);
  94. #endif
  95. #ifdef VK_USE_PLATFORM_WAYLAND_KHR
  96. VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateWaylandSurfaceKHR(VkInstance instance,
  97. const VkWaylandSurfaceCreateInfoKHR *pCreateInfo,
  98. const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
  99. VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceWaylandPresentationSupportKHR(VkPhysicalDevice physicalDevice,
  100. uint32_t queueFamilyIndex,
  101. struct wl_display *display);
  102. #endif
  103. #ifdef VK_USE_PLATFORM_XCB_KHR
  104. VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateXcbSurfaceKHR(VkInstance instance, const VkXcbSurfaceCreateInfoKHR *pCreateInfo,
  105. const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
  106. VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceXcbPresentationSupportKHR(VkPhysicalDevice physicalDevice,
  107. uint32_t queueFamilyIndex,
  108. xcb_connection_t *connection,
  109. xcb_visualid_t visual_id);
  110. #endif
  111. #ifdef VK_USE_PLATFORM_XLIB_KHR
  112. VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateXlibSurfaceKHR(VkInstance instance, const VkXlibSurfaceCreateInfoKHR *pCreateInfo,
  113. const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
  114. VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceXlibPresentationSupportKHR(VkPhysicalDevice physicalDevice,
  115. uint32_t queueFamilyIndex, Display *dpy,
  116. VisualID visualID);
  117. #endif
  118. #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
  119. VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDirectFBSurfaceEXT(VkInstance instance,
  120. const VkDirectFBSurfaceCreateInfoEXT *pCreateInfo,
  121. const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
  122. VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceDirectFBPresentationSupportEXT(VkPhysicalDevice physicalDevice,
  123. uint32_t queueFamilyIndex,
  124. IDirectFB *dfb);
  125. #endif
  126. #ifdef VK_USE_PLATFORM_MACOS_MVK
  127. VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateMacOSSurfaceMVK(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK *pCreateInfo,
  128. const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
  129. #endif
  130. #ifdef VK_USE_PLATFORM_IOS_MVK
  131. VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateIOSSurfaceMVK(VkInstance instance, const VkIOSSurfaceCreateInfoMVK *pCreateInfo,
  132. const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
  133. #endif
  134. #ifdef VK_USE_PLATFORM_GGP
  135. VKAPI_ATTR VkResult VKAPI_CALL
  136. terminator_CreateStreamDescriptorSurfaceGGP(VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP *pCreateInfo,
  137. const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
  138. #endif
  139. #if defined(VK_USE_PLATFORM_METAL_EXT)
  140. VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateMetalSurfaceEXT(VkInstance instance, const VkMetalSurfaceCreateInfoEXT *pCreateInfo,
  141. const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
  142. #endif
  143. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice,
  144. uint32_t *pPropertyCount,
  145. VkDisplayPropertiesKHR *pProperties);
  146. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceDisplayPlanePropertiesKHR(VkPhysicalDevice physicalDevice,
  147. uint32_t *pPropertyCount,
  148. VkDisplayPlanePropertiesKHR *pProperties);
  149. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice, uint32_t planeIndex,
  150. uint32_t *pDisplayCount, VkDisplayKHR *pDisplays);
  151. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDisplayModePropertiesKHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display,
  152. uint32_t *pPropertyCount,
  153. VkDisplayModePropertiesKHR *pProperties);
  154. VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDisplayModeKHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display,
  155. const VkDisplayModeCreateInfoKHR *pCreateInfo,
  156. const VkAllocationCallbacks *pAllocator, VkDisplayModeKHR *pMode);
  157. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode,
  158. uint32_t planeIndex,
  159. VkDisplayPlaneCapabilitiesKHR *pCapabilities);
  160. VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDisplayPlaneSurfaceKHR(VkInstance instance,
  161. const VkDisplaySurfaceCreateInfoKHR *pCreateInfo,
  162. const VkAllocationCallbacks *pAllocator,
  163. VkSurfaceKHR *pSurface);
  164. VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateSharedSwapchainsKHR(VkDevice device, uint32_t swapchainCount,
  165. const VkSwapchainCreateInfoKHR *pCreateInfos,
  166. const VkAllocationCallbacks *pAllocator,
  167. VkSwapchainKHR *pSwapchains);
  168. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice,
  169. VkSurfaceKHR surface,
  170. uint32_t* pRectCount,
  171. VkRect2D* pRects);
  172. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceDisplayProperties2KHR(VkPhysicalDevice physicalDevice,
  173. uint32_t *pPropertyCount,
  174. VkDisplayProperties2KHR *pProperties);
  175. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceDisplayPlaneProperties2KHR(VkPhysicalDevice physicalDevice,
  176. uint32_t *pPropertyCount,
  177. VkDisplayPlaneProperties2KHR *pProperties);
  178. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDisplayModeProperties2KHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display,
  179. uint32_t *pPropertyCount,
  180. VkDisplayModeProperties2KHR *pProperties);
  181. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDisplayPlaneCapabilities2KHR(VkPhysicalDevice physicalDevice,
  182. const VkDisplayPlaneInfo2KHR *pDisplayPlaneInfo,
  183. VkDisplayPlaneCapabilities2KHR *pCapabilities);
  184. #ifdef VK_USE_PLATFORM_FUCHSIA
  185. VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateImagePipeSurfaceFUCHSIA(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA *pCreateInfo,
  186. const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
  187. #endif
  188. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceCapabilities2KHR(
  189. VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR *pSurfaceInfo,
  190. VkSurfaceCapabilities2KHR *pSurfaceCapabilities);
  191. VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceFormats2KHR(VkPhysicalDevice physicalDevice,
  192. const VkPhysicalDeviceSurfaceInfo2KHR *pSurfaceInfo,
  193. uint32_t *pSurfaceFormatCount,
  194. VkSurfaceFormat2KHR *pSurfaceFormats);
  195. #endif // WSI_H