1 #ifndef VULKAN_ANDROID_H_
2 #define VULKAN_ANDROID_H_ 1
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 /*
9 ** Copyright (c) 2015-2018 The Khronos Group Inc.
10 **
11 ** Licensed under the Apache License, Version 2.0 (the "License");
12 ** you may not use this file except in compliance with the License.
13 ** You may obtain a copy of the License at
14 **
15 **     http://www.apache.org/licenses/LICENSE-2.0
16 **
17 ** Unless required by applicable law or agreed to in writing, software
18 ** distributed under the License is distributed on an "AS IS" BASIS,
19 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 ** See the License for the specific language governing permissions and
21 ** limitations under the License.
22 */
23 
24 /*
25 ** This header is generated from the Khronos Vulkan XML API Registry.
26 **
27 */
28 
29 
30 #define VK_KHR_android_surface 1
31 struct ANativeWindow;
32 
33 #define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6
34 #define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface"
35 
36 typedef VkFlags VkAndroidSurfaceCreateFlagsKHR;
37 
38 typedef struct VkAndroidSurfaceCreateInfoKHR {
39     VkStructureType                   sType;
40     const void*                       pNext;
41     VkAndroidSurfaceCreateFlagsKHR    flags;
42     struct ANativeWindow*             window;
43 } VkAndroidSurfaceCreateInfoKHR;
44 
45 
46 typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
47 
48 #ifndef VK_NO_PROTOTYPES
49 VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
50     VkInstance                                  instance,
51     const VkAndroidSurfaceCreateInfoKHR*        pCreateInfo,
52     const VkAllocationCallbacks*                pAllocator,
53     VkSurfaceKHR*                               pSurface);
54 #endif
55 
56 #define VK_ANDROID_external_memory_android_hardware_buffer 1
57 struct AHardwareBuffer;
58 
59 #define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 2
60 #define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer"
61 
62 typedef struct VkAndroidHardwareBufferUsageANDROID {
63     VkStructureType    sType;
64     void*              pNext;
65     uint64_t           androidHardwareBufferUsage;
66 } VkAndroidHardwareBufferUsageANDROID;
67 
68 typedef struct VkAndroidHardwareBufferPropertiesANDROID {
69     VkStructureType    sType;
70     void*              pNext;
71     VkDeviceSize       allocationSize;
72     uint32_t           memoryTypeBits;
73 } VkAndroidHardwareBufferPropertiesANDROID;
74 
75 typedef struct VkAndroidHardwareBufferFormatPropertiesANDROID {
76     VkStructureType                  sType;
77     void*                            pNext;
78     VkFormat                         format;
79     uint64_t                         externalFormat;
80     VkFormatFeatureFlags             formatFeatures;
81     VkComponentMapping               samplerYcbcrConversionComponents;
82     VkSamplerYcbcrModelConversion    suggestedYcbcrModel;
83     VkSamplerYcbcrRange              suggestedYcbcrRange;
84     VkChromaLocation                 suggestedXChromaOffset;
85     VkChromaLocation                 suggestedYChromaOffset;
86 } VkAndroidHardwareBufferFormatPropertiesANDROID;
87 
88 typedef struct VkImportAndroidHardwareBufferInfoANDROID {
89     VkStructureType            sType;
90     const void*                pNext;
91     struct AHardwareBuffer*    buffer;
92 } VkImportAndroidHardwareBufferInfoANDROID;
93 
94 typedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID {
95     VkStructureType    sType;
96     const void*        pNext;
97     VkDeviceMemory     memory;
98 } VkMemoryGetAndroidHardwareBufferInfoANDROID;
99 
100 typedef struct VkExternalFormatANDROID {
101     VkStructureType    sType;
102     void*              pNext;
103     uint64_t           externalFormat;
104 } VkExternalFormatANDROID;
105 
106 
107 typedef VkResult (VKAPI_PTR *PFN_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties);
108 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer);
109 
110 #ifndef VK_NO_PROTOTYPES
111 VKAPI_ATTR VkResult VKAPI_CALL vkGetAndroidHardwareBufferPropertiesANDROID(
112     VkDevice                                    device,
113     const struct AHardwareBuffer*               buffer,
114     VkAndroidHardwareBufferPropertiesANDROID*   pProperties);
115 
116 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryAndroidHardwareBufferANDROID(
117     VkDevice                                    device,
118     const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
119     struct AHardwareBuffer**                    pBuffer);
120 #endif
121 
122 #ifdef __cplusplus
123 }
124 #endif
125 
126 #endif
127