Home | History | Annotate | Download | only in vulkan
      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