Home | History | Annotate | Download | only in loader
      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 <ian (at) lunarg.com>
     19  *
     20  */
     21 
     22 #ifndef WSI_H
     23 #define WSI_H
     24 
     25 #include "vk_loader_platform.h"
     26 #include "loader.h"
     27 
     28 typedef 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 
     54 bool wsi_swapchain_instance_gpa(struct loader_instance *ptr_instance,
     55                                 const char *name, void **addr);
     56 
     57 void wsi_create_instance(struct loader_instance *ptr_instance,
     58                          const VkInstanceCreateInfo *pCreateInfo);
     59 bool wsi_unsupported_instance_extension(const VkExtensionProperties *ext_prop);
     60 
     61 VKAPI_ATTR VkResult VKAPI_CALL terminator_vkCreateSwapchainKHR(
     62     VkDevice device, const VkSwapchainCreateInfoKHR *pCreateInfo,
     63     const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchain);
     64 
     65 VKAPI_ATTR void VKAPI_CALL
     66 terminator_DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface,
     67                              const VkAllocationCallbacks *pAllocator);
     68 
     69 VKAPI_ATTR VkResult VKAPI_CALL
     70 terminator_GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice,
     71                                               uint32_t queueFamilyIndex,
     72                                               VkSurfaceKHR surface,
     73                                               VkBool32 *pSupported);
     74 
     75 VKAPI_ATTR VkResult VKAPI_CALL
     76 terminator_GetPhysicalDeviceSurfaceCapabilitiesKHR(
     77     VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
     78     VkSurfaceCapabilitiesKHR *pSurfaceCapabilities);
     79 
     80 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceFormatsKHR(
     81     VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
     82     uint32_t *pSurfaceFormatCount, VkSurfaceFormatKHR *pSurfaceFormats);
     83 
     84 VKAPI_ATTR VkResult VKAPI_CALL
     85 terminator_GetPhysicalDeviceSurfacePresentModesKHR(
     86     VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
     87     uint32_t *pPresentModeCount, VkPresentModeKHR *pPresentModes);
     88 
     89 #ifdef VK_USE_PLATFORM_WIN32_KHR
     90 VKAPI_ATTR VkResult VKAPI_CALL
     91 terminator_CreateWin32SurfaceKHR(VkInstance instance,
     92                                  const VkWin32SurfaceCreateInfoKHR *pCreateInfo,
     93                                  const VkAllocationCallbacks *pAllocator,
     94                                  VkSurfaceKHR *pSurface);
     95 VKAPI_ATTR VkBool32 VKAPI_CALL
     96 terminator_GetPhysicalDeviceWin32PresentationSupportKHR(
     97     VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
     98 #endif
     99 #ifdef VK_USE_PLATFORM_MIR_KHR
    100 VKAPI_ATTR VkResult VKAPI_CALL
    101 terminator_CreateMirSurfaceKHR(VkInstance instance,
    102                                const VkMirSurfaceCreateInfoKHR *pCreateInfo,
    103                                const VkAllocationCallbacks *pAllocator,
    104                                VkSurfaceKHR *pSurface);
    105 VKAPI_ATTR VkBool32 VKAPI_CALL
    106 terminator_GetPhysicalDeviceMirPresentationSupportKHR(
    107     VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex,
    108     MirConnection *connection);
    109 #endif
    110 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
    111 VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateWaylandSurfaceKHR(
    112     VkInstance instance, const VkWaylandSurfaceCreateInfoKHR *pCreateInfo,
    113     const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
    114 VKAPI_ATTR VkBool32 VKAPI_CALL
    115 terminator_GetPhysicalDeviceWaylandPresentationSupportKHR(
    116     VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex,
    117     struct wl_display *display);
    118 #endif
    119 #ifdef VK_USE_PLATFORM_XCB_KHR
    120 VKAPI_ATTR VkResult VKAPI_CALL
    121 terminator_CreateXcbSurfaceKHR(VkInstance instance,
    122                                const VkXcbSurfaceCreateInfoKHR *pCreateInfo,
    123                                const VkAllocationCallbacks *pAllocator,
    124                                VkSurfaceKHR *pSurface);
    125 
    126 VKAPI_ATTR VkBool32 VKAPI_CALL
    127 terminator_GetPhysicalDeviceXcbPresentationSupportKHR(
    128     VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex,
    129     xcb_connection_t *connection, xcb_visualid_t visual_id);
    130 #endif
    131 #ifdef VK_USE_PLATFORM_XLIB_KHR
    132 VKAPI_ATTR VkResult VKAPI_CALL
    133 terminator_CreateXlibSurfaceKHR(VkInstance instance,
    134                                 const VkXlibSurfaceCreateInfoKHR *pCreateInfo,
    135                                 const VkAllocationCallbacks *pAllocator,
    136                                 VkSurfaceKHR *pSurface);
    137 VKAPI_ATTR VkBool32 VKAPI_CALL
    138 terminator_GetPhysicalDeviceXlibPresentationSupportKHR(
    139     VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display *dpy,
    140     VisualID visualID);
    141 #endif
    142 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceDisplayPropertiesKHR(
    143     VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount,
    144     VkDisplayPropertiesKHR *pProperties);
    145 VKAPI_ATTR VkResult VKAPI_CALL
    146 terminator_GetPhysicalDeviceDisplayPlanePropertiesKHR(
    147     VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount,
    148     VkDisplayPlanePropertiesKHR *pProperties);
    149 VKAPI_ATTR VkResult VKAPI_CALL
    150 terminator_GetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice,
    151                                                uint32_t planeIndex,
    152                                                uint32_t *pDisplayCount,
    153                                                VkDisplayKHR *pDisplays);
    154 VKAPI_ATTR VkResult VKAPI_CALL
    155 terminator_GetDisplayModePropertiesKHR(VkPhysicalDevice physicalDevice,
    156                                        VkDisplayKHR display,
    157                                        uint32_t *pPropertyCount,
    158                                        VkDisplayModePropertiesKHR *pProperties);
    159 VKAPI_ATTR VkResult VKAPI_CALL
    160 terminator_CreateDisplayModeKHR(VkPhysicalDevice physicalDevice,
    161                                 VkDisplayKHR display,
    162                                 const VkDisplayModeCreateInfoKHR *pCreateInfo,
    163                                 const VkAllocationCallbacks *pAllocator,
    164                                 VkDisplayModeKHR *pMode);
    165 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDisplayPlaneCapabilitiesKHR(
    166     VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex,
    167     VkDisplayPlaneCapabilitiesKHR *pCapabilities);
    168 VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDisplayPlaneSurfaceKHR(
    169     VkInstance instance, const VkDisplaySurfaceCreateInfoKHR *pCreateInfo,
    170     const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
    171 
    172 #endif /* WSI_H */
    173