1 /*
2  * Copyright (c) 2015-2021 The Khronos Group Inc.
3  * Copyright (c) 2015-2021 Valve Corporation
4  * Copyright (c) 2015-2021 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: Mark Young <marky@lunarg.com>
19  * Author: Charles Giessen <charles@lunarg.com>
20  */
21 
22 #pragma once
23 
24 #include <vulkan/vulkan.h>
25 
26 // ---- Manually added trampoline/terminator functions
27 
28 // These functions, for whatever reason, require more complex changes than
29 // can easily be automatically generated.
30 
31 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceExternalImageFormatPropertiesNV(
32     VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage,
33     VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType,
34     VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
35 
36 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceExternalImageFormatPropertiesNV(
37     VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage,
38     VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType,
39     VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
40 
41 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
42                                                                         VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
43 
44 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice,
45                                                                                    VkSurfaceKHR surface,
46                                                                                    VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
47 
48 VKAPI_ATTR VkResult VKAPI_CALL ReleaseDisplayEXT(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
49 
50 VKAPI_ATTR VkResult VKAPI_CALL terminator_ReleaseDisplayEXT(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
51 
52 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
53 VKAPI_ATTR VkResult VKAPI_CALL AcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display);
54 
55 VKAPI_ATTR VkResult VKAPI_CALL terminator_AcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy,
56                                                                 VkDisplayKHR display);
57 
58 VKAPI_ATTR VkResult VKAPI_CALL GetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput,
59                                                         VkDisplayKHR* pDisplay);
60 
61 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput,
62                                                                    VkDisplayKHR* pDisplay);
63 #endif  // VK_USE_PLATFORM_XLIB_XRANDR_EXT
64 
65 #if defined(VK_USE_PLATFORM_WIN32_KHR)
66 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfacePresentModes2EXT(VkPhysicalDevice physicalDevice,
67                                                                         const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
68                                                                         uint32_t* pPresentModeCount,
69                                                                         VkPresentModeKHR* pPresentModes);
70 
71 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfacePresentModes2EXT(
72     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount,
73     VkPresentModeKHR* pPresentModes);
74 #endif  // VK_USE_PLATFORM_WIN32_KHR
75 
76 VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupSurfacePresentModes2EXT(VkDevice device,
77                                                                      const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
78                                                                      VkDeviceGroupPresentModeFlagsKHR* pModes);
79 
80 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDeviceGroupSurfacePresentModes2EXT(VkDevice device,
81                                                                                 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
82                                                                                 VkDeviceGroupPresentModeFlagsKHR* pModes);
83 
84 // ---- VK_EXT_tooling_info extension trampoline/terminators
85 
86 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceToolPropertiesEXT(VkPhysicalDevice physicalDevice, uint32_t* pToolCount,
87                                                                   VkPhysicalDeviceToolPropertiesEXT* pToolProperties);
88 
89 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceToolPropertiesEXT(VkPhysicalDevice physicalDevice, uint32_t* pToolCount,
90                                                                              VkPhysicalDeviceToolPropertiesEXT* pToolProperties);
91