1#ifndef VULKAN_ANDROID_H_
2#define VULKAN_ANDROID_H_ 1
3
4/*
5** Copyright 2015-2024 The Khronos Group Inc.
6**
7** SPDX-License-Identifier: Apache-2.0
8*/
9
10/*
11** This header is generated from the Khronos Vulkan XML API Registry.
12**
13*/
14
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20
21
22// VK_KHR_android_surface is a preprocessor guard. Do not pass it to API calls.
23#define VK_KHR_android_surface 1
24struct ANativeWindow;
25#define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6
26#define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface"
27typedef VkFlags VkAndroidSurfaceCreateFlagsKHR;
28typedef struct VkAndroidSurfaceCreateInfoKHR {
29    VkStructureType                   sType;
30    const void*                       pNext;
31    VkAndroidSurfaceCreateFlagsKHR    flags;
32    struct ANativeWindow*             window;
33} VkAndroidSurfaceCreateInfoKHR;
34
35typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
36
37#ifndef VK_NO_PROTOTYPES
38VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
39    VkInstance                                  instance,
40    const VkAndroidSurfaceCreateInfoKHR*        pCreateInfo,
41    const VkAllocationCallbacks*                pAllocator,
42    VkSurfaceKHR*                               pSurface);
43#endif
44
45
46// VK_ANDROID_external_memory_android_hardware_buffer is a preprocessor guard. Do not pass it to API calls.
47#define VK_ANDROID_external_memory_android_hardware_buffer 1
48struct AHardwareBuffer;
49#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 5
50#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer"
51typedef struct VkAndroidHardwareBufferUsageANDROID {
52    VkStructureType    sType;
53    void*              pNext;
54    uint64_t           androidHardwareBufferUsage;
55} VkAndroidHardwareBufferUsageANDROID;
56
57typedef struct VkAndroidHardwareBufferPropertiesANDROID {
58    VkStructureType    sType;
59    void*              pNext;
60    VkDeviceSize       allocationSize;
61    uint32_t           memoryTypeBits;
62} VkAndroidHardwareBufferPropertiesANDROID;
63
64typedef struct VkAndroidHardwareBufferFormatPropertiesANDROID {
65    VkStructureType                  sType;
66    void*                            pNext;
67    VkFormat                         format;
68    uint64_t                         externalFormat;
69    VkFormatFeatureFlags             formatFeatures;
70    VkComponentMapping               samplerYcbcrConversionComponents;
71    VkSamplerYcbcrModelConversion    suggestedYcbcrModel;
72    VkSamplerYcbcrRange              suggestedYcbcrRange;
73    VkChromaLocation                 suggestedXChromaOffset;
74    VkChromaLocation                 suggestedYChromaOffset;
75} VkAndroidHardwareBufferFormatPropertiesANDROID;
76
77typedef struct VkImportAndroidHardwareBufferInfoANDROID {
78    VkStructureType            sType;
79    const void*                pNext;
80    struct AHardwareBuffer*    buffer;
81} VkImportAndroidHardwareBufferInfoANDROID;
82
83typedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID {
84    VkStructureType    sType;
85    const void*        pNext;
86    VkDeviceMemory     memory;
87} VkMemoryGetAndroidHardwareBufferInfoANDROID;
88
89typedef struct VkExternalFormatANDROID {
90    VkStructureType    sType;
91    void*              pNext;
92    uint64_t           externalFormat;
93} VkExternalFormatANDROID;
94
95typedef struct VkAndroidHardwareBufferFormatProperties2ANDROID {
96    VkStructureType                  sType;
97    void*                            pNext;
98    VkFormat                         format;
99    uint64_t                         externalFormat;
100    VkFormatFeatureFlags2            formatFeatures;
101    VkComponentMapping               samplerYcbcrConversionComponents;
102    VkSamplerYcbcrModelConversion    suggestedYcbcrModel;
103    VkSamplerYcbcrRange              suggestedYcbcrRange;
104    VkChromaLocation                 suggestedXChromaOffset;
105    VkChromaLocation                 suggestedYChromaOffset;
106} VkAndroidHardwareBufferFormatProperties2ANDROID;
107
108typedef VkResult (VKAPI_PTR *PFN_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties);
109typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer);
110
111#ifndef VK_NO_PROTOTYPES
112VKAPI_ATTR VkResult VKAPI_CALL vkGetAndroidHardwareBufferPropertiesANDROID(
113    VkDevice                                    device,
114    const struct AHardwareBuffer*               buffer,
115    VkAndroidHardwareBufferPropertiesANDROID*   pProperties);
116
117VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryAndroidHardwareBufferANDROID(
118    VkDevice                                    device,
119    const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
120    struct AHardwareBuffer**                    pBuffer);
121#endif
122
123
124// VK_ANDROID_external_format_resolve is a preprocessor guard. Do not pass it to API calls.
125#define VK_ANDROID_external_format_resolve 1
126#define VK_ANDROID_EXTERNAL_FORMAT_RESOLVE_SPEC_VERSION 1
127#define VK_ANDROID_EXTERNAL_FORMAT_RESOLVE_EXTENSION_NAME "VK_ANDROID_external_format_resolve"
128typedef struct VkPhysicalDeviceExternalFormatResolveFeaturesANDROID {
129    VkStructureType    sType;
130    void*              pNext;
131    VkBool32           externalFormatResolve;
132} VkPhysicalDeviceExternalFormatResolveFeaturesANDROID;
133
134typedef struct VkPhysicalDeviceExternalFormatResolvePropertiesANDROID {
135    VkStructureType     sType;
136    void*               pNext;
137    VkBool32            nullColorAttachmentWithExternalFormatResolve;
138    VkChromaLocation    externalFormatResolveChromaOffsetX;
139    VkChromaLocation    externalFormatResolveChromaOffsetY;
140} VkPhysicalDeviceExternalFormatResolvePropertiesANDROID;
141
142typedef struct VkAndroidHardwareBufferFormatResolvePropertiesANDROID {
143    VkStructureType    sType;
144    void*              pNext;
145    VkFormat           colorAttachmentFormat;
146} VkAndroidHardwareBufferFormatResolvePropertiesANDROID;
147
148
149#ifdef __cplusplus
150}
151#endif
152
153#endif
154