| // Copyright (C) 2018 The Android Open Source Project |
| // Copyright (C) 2018 Google Inc. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| #pragma once |
| |
| #include <vulkan/vulkan.h> |
| |
| #ifdef __cplusplus |
| #include <algorithm> |
| extern "C" { |
| #endif |
| |
| #define VK_ANDROID_native_buffer 1 |
| #define VK_ANDROID_NATIVE_BUFFER_EXTENSION_NUMBER 11 |
| |
| /* NOTE ON VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION 6 |
| * |
| * This version of the extension transitions from gralloc0 to gralloc1 usage |
| * flags (int -> 2x uint64_t). The WSI implementation will temporarily continue |
| * to fill out deprecated fields in VkNativeBufferANDROID, and will call the |
| * deprecated vkGetSwapchainGrallocUsageANDROID if the new |
| * vkGetSwapchainGrallocUsage2ANDROID is not supported. This transitionary |
| * backwards-compatibility support is temporary, and will likely be removed in |
| * (along with all gralloc0 support) in a future release. |
| */ |
| #define VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION 7 |
| #define VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME "VK_ANDROID_native_buffer" |
| |
| #define VK_ANDROID_NATIVE_BUFFER_ENUM(type,id) ((type)(1000000000 + (1000 * (VK_ANDROID_NATIVE_BUFFER_EXTENSION_NUMBER - 1)) + (id))) |
| #define VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID VK_ANDROID_NATIVE_BUFFER_ENUM(VkStructureType, 0) |
| #define VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID VK_ANDROID_NATIVE_BUFFER_ENUM(VkStructureType, 1) |
| #define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID VK_ANDROID_NATIVE_BUFFER_ENUM(VkStructureType, 2) |
| |
| typedef enum VkSwapchainImageUsageFlagBitsANDROID { |
| VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_ANDROID = 0x00000001, |
| VK_SWAPCHAIN_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF |
| } VkSwapchainImageUsageFlagBitsANDROID; |
| typedef VkFlags VkSwapchainImageUsageFlagsANDROID; |
| |
| typedef struct { |
| VkStructureType sType; // must be VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID |
| const void* pNext; |
| |
| // Buffer handle and stride returned from gralloc alloc() |
| const uint32_t* handle; |
| int stride; |
| |
| // Gralloc format and usage requested when the buffer was allocated. |
| int format; |
| int usage; // DEPRECATED in SPEC_VERSION 6 |
| // -- Added in SPEC_VERSION 6 -- |
| uint64_t consumer; |
| uint64_t producer; |
| } VkNativeBufferANDROID; |
| |
| typedef struct { |
| VkStructureType sType; // must be VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID |
| const void* pNext; |
| |
| VkSwapchainImageUsageFlagsANDROID usage; |
| } VkSwapchainImageCreateInfoANDROID; |
| |
| typedef struct { |
| VkStructureType sType; // must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID |
| const void* pNext; |
| |
| VkBool32 sharedImage; |
| } VkPhysicalDevicePresentationPropertiesANDROID; |
| |
| // -- DEPRECATED in SPEC_VERSION 6 -- |
| typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainGrallocUsageANDROID)(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, int* grallocUsage); |
| // -- ADDED in SPEC_VERSION 6 -- |
| typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainGrallocUsage2ANDROID)(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, VkSwapchainImageUsageFlagsANDROID swapchainImageUsage, uint64_t* grallocConsumerUsage, uint64_t* grallocProducerUsage); |
| typedef VkResult (VKAPI_PTR *PFN_vkAcquireImageANDROID)(VkDevice device, VkImage image, int nativeFenceFd, VkSemaphore semaphore, VkFence fence); |
| typedef VkResult (VKAPI_PTR *PFN_vkQueueSignalReleaseImageANDROID)(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image, int* pNativeFenceFd); |
| |
| typedef VkResult (VKAPI_PTR *PFN_vkMapMemoryIntoAddressSpaceGOOGLE)(VkDevice device, VkDeviceMemory memory, uint64_t* pAddress); |
| |
| #define VK_GOOGLE_gfxstream 1 |
| #define VK_GOOGLE_GFXSTREAM_EXTENSION_NUMBER 386 |
| |
| #define VK_GOOGLE_GFXSTREAM_ENUM(type,id) ((type)(1000000000 + (1000 * (VK_GOOGLE_GFXSTREAM_EXTENSION_NUMBER - 1)) + (id))) |
| #define VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE VK_GOOGLE_GFXSTREAM_ENUM(VkStructureType, 0) |
| #define VK_STRUCTURE_TYPE_IMPORT_PHYSICAL_ADDRESS_GOOGLE VK_GOOGLE_GFXSTREAM_ENUM(VkStructureType, 1) |
| #define VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE VK_GOOGLE_GFXSTREAM_ENUM(VkStructureType, 2) |
| |
| typedef struct { |
| VkStructureType sType; // must be VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE |
| const void* pNext; |
| uint32_t colorBuffer; |
| } VkImportColorBufferGOOGLE; |
| |
| typedef struct { |
| VkStructureType sType; // must be VK_STRUCTURE_TYPE_IMPORT_PHYSICAL_ADDRESS_GOOGLE |
| const void* pNext; |
| uint64_t physicalAddress; |
| VkDeviceSize size; |
| VkFormat format; |
| VkImageTiling tiling; |
| uint32_t tilingParameter; |
| } VkImportPhysicalAddressGOOGLE; |
| |
| typedef struct { |
| VkStructureType sType; // must be VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE |
| const void* pNext; |
| uint32_t buffer; |
| } VkImportBufferGOOGLE; |
| |
| typedef VkResult (VKAPI_PTR *PFN_vkRegisterImageColorBufferGOOGLE)(VkDevice device, VkImage image, uint32_t colorBuffer); |
| typedef VkResult (VKAPI_PTR *PFN_vkRegisterBufferColorBufferGOOGLE)(VkDevice device, VkBuffer image, uint32_t colorBuffer); |
| |
| typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostAddressInfoGOOGLE)(VkDevice device, VkDeviceMemory memory, uint64_t* pAddress, uint64_t* pSize); |
| |
| typedef VkResult (VKAPI_PTR *PFN_vkFreeMemorySyncGOOGLE)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocationCallbacks); |
| |
| #define VK_ANDROID_external_memory_android_hardware_buffer 1 |
| struct AHardwareBuffer; |
| struct VkAndroidHardwareBufferPropertiesANDROID; |
| struct VkMemoryGetAndroidHardwareBufferInfoANDROID; |
| |
| #ifndef VK_USE_PLATFORM_ANDROID_KHR |
| |
| typedef struct VkAndroidHardwareBufferUsageANDROID { |
| VkStructureType sType; |
| void* pNext; |
| uint64_t androidHardwareBufferUsage; |
| } VkAndroidHardwareBufferUsageANDROID; |
| |
| typedef struct VkAndroidHardwareBufferPropertiesANDROID { |
| VkStructureType sType; |
| void* pNext; |
| VkDeviceSize allocationSize; |
| uint32_t memoryTypeBits; |
| } VkAndroidHardwareBufferPropertiesANDROID; |
| |
| typedef struct VkAndroidHardwareBufferFormatPropertiesANDROID { |
| VkStructureType sType; |
| void* pNext; |
| VkFormat format; |
| uint64_t externalFormat; |
| VkFormatFeatureFlags formatFeatures; |
| VkComponentMapping samplerYcbcrConversionComponents; |
| VkSamplerYcbcrModelConversion suggestedYcbcrModel; |
| VkSamplerYcbcrRange suggestedYcbcrRange; |
| VkChromaLocation suggestedXChromaOffset; |
| VkChromaLocation suggestedYChromaOffset; |
| } VkAndroidHardwareBufferFormatPropertiesANDROID; |
| |
| typedef struct VkImportAndroidHardwareBufferInfoANDROID { |
| VkStructureType sType; |
| const void* pNext; |
| struct AHardwareBuffer* buffer; |
| } VkImportAndroidHardwareBufferInfoANDROID; |
| |
| typedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID { |
| VkStructureType sType; |
| const void* pNext; |
| VkDeviceMemory memory; |
| } VkMemoryGetAndroidHardwareBufferInfoANDROID; |
| |
| typedef struct VkExternalFormatANDROID { |
| VkStructureType sType; |
| void* pNext; |
| uint64_t externalFormat; |
| } VkExternalFormatANDROID; |
| |
| |
| typedef VkResult (VKAPI_PTR *PFN_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties); |
| typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer); |
| |
| #ifndef VK_NO_PROTOTYPES |
| VKAPI_ATTR VkResult VKAPI_CALL vkGetAndroidHardwareBufferPropertiesANDROID( |
| VkDevice device, |
| const struct AHardwareBuffer* buffer, |
| VkAndroidHardwareBufferPropertiesANDROID* pProperties); |
| |
| VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryAndroidHardwareBufferANDROID( |
| VkDevice device, |
| const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, |
| struct AHardwareBuffer** pBuffer); |
| #endif |
| |
| #endif // __Fuchsia__ |
| |
| #define VK_GOOGLE_sized_descriptor_update_template 1 |
| |
| typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateSizedGOOGLE)( |
| VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, |
| uint32_t imageInfoCount, |
| uint32_t bufferInfoCount, |
| uint32_t bufferViewCount, |
| const uint32_t* pImageInfoEntryIndices, |
| const uint32_t* pBufferInfoEntryIndices, |
| const uint32_t* pBufferViewEntryIndices, |
| const VkDescriptorImageInfo* pImageInfos, |
| const VkDescriptorBufferInfo* pBufferInfos, |
| const VkBufferView* pBufferViews); |
| |
| #define VK_GOOGLE_async_command_buffers 1 |
| |
| typedef void (VKAPI_PTR *PFN_vkBeginCommandBufferAsyncGOOGLE)( |
| VkCommandBuffer commandBuffer, |
| const VkCommandBufferBeginInfo* pBeginInfo); |
| typedef void (VKAPI_PTR *PFN_vkEndCommandBufferAsyncGOOGLE)( |
| VkCommandBuffer commandBuffer); |
| typedef void (VKAPI_PTR *PFN_vkResetCommandBufferAsyncGOOGLE)( |
| VkCommandBuffer commandBuffer, |
| VkCommandBufferResetFlags flags); |
| typedef void (VKAPI_PTR *PFN_vkCommandBufferHostSyncGOOGLE)( |
| VkCommandBuffer commandBuffer, |
| uint32_t needHostSync, |
| uint32_t sequenceNumber); |
| |
| typedef void (VKAPI_PTR *PFN_vkCreateImageWithRequirementsGOOGLE)( |
| VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage, VkMemoryRequirements* pMemoryRequirements); |
| |
| #ifdef VK_USE_PLATFORM_FUCHSIA |
| |
| #ifndef VK_FUCHSIA_buffer_collection_x |
| |
| #define VK_FUCHSIA_buffer_collection_x 1 |
| VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferCollectionFUCHSIAX) |
| #define VK_FUCHSIA_BUFFER_COLLECTION_X_SPEC_VERSION 1 |
| #define VK_FUCHSIA_BUFFER_COLLECTION_X_EXTENSION_NAME \ |
| "VK_FUCHSIA_buffer_collection_x" |
| |
| typedef enum VkImageFormatConstraintsFlagBitsFUCHSIAX { |
| VK_IMAGE_FORMAT_CONSTRAINTS_FLAG_BITS_MAX_ENUM_FUCHSIAX = 0x7FFFFFFF |
| } VkImageFormatConstraintsFlagBitsFUCHSIAX; |
| typedef VkFlags VkImageFormatConstraintsFlagsFUCHSIAX; |
| |
| typedef enum VkImageConstraintsInfoFlagBitsFUCHSIAX { |
| VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIAX = 0x00000001, |
| VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIAX = 0x00000002, |
| VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIAX = 0x00000004, |
| VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIAX = 0x00000008, |
| VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIAX = 0x00000010, |
| VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIAX = 0x7FFFFFFF |
| } VkImageConstraintsInfoFlagBitsFUCHSIAX; |
| typedef VkFlags VkImageConstraintsInfoFlagsFUCHSIAX; |
| typedef struct VkBufferCollectionCreateInfoFUCHSIAX { |
| VkStructureType sType; |
| const void* pNext; |
| uint32_t collectionToken; |
| } VkBufferCollectionCreateInfoFUCHSIAX; |
| |
| typedef struct VkImportMemoryBufferCollectionFUCHSIAX { |
| VkStructureType sType; |
| const void* pNext; |
| VkBufferCollectionFUCHSIAX collection; |
| uint32_t index; |
| } VkImportMemoryBufferCollectionFUCHSIAX; |
| |
| typedef struct VkBufferCollectionImageCreateInfoFUCHSIAX { |
| VkStructureType sType; |
| const void* pNext; |
| VkBufferCollectionFUCHSIAX collection; |
| uint32_t index; |
| } VkBufferCollectionImageCreateInfoFUCHSIAX; |
| |
| typedef struct VkBufferConstraintsInfoFUCHSIAX { |
| VkStructureType sType; |
| const void* pNext; |
| const VkBufferCreateInfo* pBufferCreateInfo; |
| VkFormatFeatureFlags requiredFormatFeatures; |
| uint32_t minCount; |
| } VkBufferConstraintsInfoFUCHSIAX; |
| |
| typedef struct VkBufferCollectionBufferCreateInfoFUCHSIAX { |
| VkStructureType sType; |
| const void* pNext; |
| VkBufferCollectionFUCHSIAX collection; |
| uint32_t index; |
| } VkBufferCollectionBufferCreateInfoFUCHSIAX; |
| |
| typedef struct VkBufferCollectionPropertiesFUCHSIAX { |
| VkStructureType sType; |
| void* pNext; |
| uint32_t memoryTypeBits; |
| uint32_t count; |
| } VkBufferCollectionPropertiesFUCHSIAX; |
| |
| typedef struct VkSysmemColorSpaceFUCHSIAX { |
| VkStructureType sType; |
| const void* pNext; |
| uint32_t colorSpace; |
| } VkSysmemColorSpaceFUCHSIAX; |
| |
| typedef struct VkBufferCollectionProperties2FUCHSIAX { |
| VkStructureType sType; |
| void* pNext; |
| uint32_t memoryTypeBits; |
| uint32_t bufferCount; |
| uint32_t createInfoIndex; |
| uint64_t sysmemFormat; |
| VkFormatFeatureFlags formatFeatures; |
| VkSysmemColorSpaceFUCHSIAX colorSpace; |
| VkComponentMapping samplerYcbcrConversionComponents; |
| VkSamplerYcbcrModelConversion suggestedYcbcrModel; |
| VkSamplerYcbcrRange suggestedYcbcrRange; |
| VkChromaLocation suggestedXChromaOffset; |
| VkChromaLocation suggestedYChromaOffset; |
| } VkBufferCollectionProperties2FUCHSIAX; |
| |
| typedef struct VkImageFormatConstraintsInfoFUCHSIAX { |
| VkStructureType sType; |
| const void* pNext; |
| VkFormatFeatureFlags requiredFormatFeatures; |
| VkImageFormatConstraintsFlagsFUCHSIAX flags; |
| uint64_t sysmemFormat; |
| uint32_t colorSpaceCount; |
| const VkSysmemColorSpaceFUCHSIAX* pColorSpaces; |
| } VkImageFormatConstraintsInfoFUCHSIAX; |
| |
| typedef struct VkImageConstraintsInfoFUCHSIAX { |
| VkStructureType sType; |
| const void* pNext; |
| uint32_t createInfoCount; |
| const VkImageCreateInfo* pCreateInfos; |
| const VkImageFormatConstraintsInfoFUCHSIAX* pFormatConstraints; |
| uint32_t minBufferCount; |
| uint32_t maxBufferCount; |
| uint32_t minBufferCountForCamping; |
| uint32_t minBufferCountForDedicatedSlack; |
| uint32_t minBufferCountForSharedSlack; |
| VkImageConstraintsInfoFlagsFUCHSIAX flags; |
| } VkImageConstraintsInfoFUCHSIAX; |
| |
| #define VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIAX \ |
| ((VkStructureType)1000367000) |
| #define VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIAX \ |
| ((VkStructureType)1000367004) |
| #define VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIAX \ |
| ((VkStructureType)1000367005) |
| #define VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIAX \ |
| ((VkStructureType)1000367006) |
| #define VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIAX \ |
| ((VkStructureType)1000367007) |
| #define VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIAX \ |
| ((VkStructureType)1000367008) |
| #define VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIAX \ |
| ((VkStructureType)1000367009) |
| #define VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIAX \ |
| ((VkStructureType)1000367010) |
| #define VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES2_FUCHSIAX \ |
| ((VkStructureType)1000367011) |
| |
| #endif // VK_FUCHSIA_buffer_collection_x |
| |
| #endif // VK_USE_PLATFORM_FUCHSIA |
| |
| // VulkanStream features |
| #define VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT (1 << 0) |
| #define VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT (1 << 1) |
| #define VULKAN_STREAM_FEATURE_SHADER_FLOAT16_INT8_BIT (1 << 2) |
| #define VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT (1 << 3) |
| |
| #define VK_YCBCR_CONVERSION_DO_NOTHING ((VkSamplerYcbcrConversion)0x1111111111111111) |
| |
| // Stuff we advertised but didn't define the structs for it yet because |
| // we also needed to update our vulkan headers and xml |
| |
| #ifndef VK_VERSION_1_2 |
| |
| typedef struct VkPhysicalDeviceShaderFloat16Int8Features { |
| VkStructureType sType; |
| void* pNext; |
| VkBool32 shaderFloat16; |
| VkBool32 shaderInt8; |
| } VkPhysicalDeviceShaderFloat16Int8Features; |
| |
| |
| #define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES \ |
| ((VkStructureType)1000082000) |
| |
| #endif |
| |
| #define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR \ |
| VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES |
| |
| #define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR \ |
| VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES |
| |
| #ifndef VK_KHR_shader_float16_int8 |
| |
| #define VK_KHR_shader_float16_int8 1 |
| #define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1 |
| #define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8" |
| typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR; |
| typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR; |
| |
| #endif |
| |
| #define VK_GOOGLE_gfxstream 1 |
| |
| typedef void (VKAPI_PTR *PFN_vkQueueHostSyncGOOGLE)( |
| VkQueue queue, uint32_t needHostSync, uint32_t sequenceNumber); |
| typedef void (VKAPI_PTR *PFN_vkQueueSubmitAsyncGOOGLE)( |
| VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence); |
| typedef void (VKAPI_PTR *PFN_vkQueueWaitIdleAsyncGOOGLE)(VkQueue queue); |
| typedef void (VKAPI_PTR *PFN_vkQueueBindSparseAsyncGOOGLE)( |
| VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence); |
| |
| typedef VkResult (VKAPI_PTR *PFN_vkGetLinearImageLayoutGOOGLE)(VkDevice device, VkFormat format, VkDeviceSize* pOffset, VkDeviceSize* pRowPitchAlignment); |
| typedef VkResult (VKAPI_PTR *PFN_vkGetLinearImageLayout2GOOGLE)(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkDeviceSize* pOffset, VkDeviceSize* pRowPitchAlignment); |
| |
| typedef void (VKAPI_PTR *PFN_vkQueueFlushCommandsGOOGLE)(VkQueue queue, VkDeviceSize dataSize, const void* pData); |
| typedef void (VKAPI_PTR *PFN_vkQueueCommitDescriptorSetUpdatesGOOGLE)(VkQueue queue, uint32_t descriptorPoolCount, const VkDescriptorPool* pDescriptorPools, uint32_t descriptorSetCount, const VkDescriptorSetLayout* pDescriptorSetLayouts, const uint64_t* pDescriptorSetPoolIds, const uint32_t* pDescriptorSetWhichPool, const uint32_t* pDescriptorSetPendingAllocation, const uint32_t* pDescriptorWriteStartingIndices, uint32_t pendingDescriptorWriteCount, const VkWriteDescriptorSet* pPendingDescriptorWrites); |
| typedef void (VKAPI_PTR *PFN_vkCollectDescriptorPoolIdsGOOGLE)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t* pPoolIdCount, uint64_t* pPoolIds); |
| typedef void (VKAPI_PTR *PFN_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE)(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image); |
| |
| // TODO(liyl): Remove once Android vulkan-headers is updated |
| // to 1.2.184 or higher. |
| |
| #if VK_HEADER_VERSION < 184 |
| |
| typedef struct VkPipelineCacheHeaderVersionOne { |
| uint32_t headerSize; |
| VkPipelineCacheHeaderVersion headerVersion; |
| uint32_t vendorID; |
| uint32_t deviceID; |
| uint8_t pipelineCacheUUID[VK_UUID_SIZE]; |
| } VkPipelineCacheHeaderVersionOne; |
| |
| #endif // VK_HEADER_VERSION < 184 |
| |
| // TODO(liyl): Remove once Android vulkan-headers is updated |
| // to 1.2.195 or higher. |
| |
| #ifdef VK_EXT_image_drm_format_modifier |
| |
| #if VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION < 2 |
| |
| #ifndef VK_KHR_format_feature_flags2 |
| typedef uint64_t VkFormatFeatureFlags2KHR; |
| #endif // VK_KHR_format_feature_flags2 |
| |
| #define VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT ((VkStructureType)1000158006) |
| typedef struct VkDrmFormatModifierProperties2EXT { |
| uint64_t drmFormatModifier; |
| uint32_t drmFormatModifierPlaneCount; |
| VkFormatFeatureFlags2KHR drmFormatModifierTilingFeatures; |
| } VkDrmFormatModifierProperties2EXT; |
| |
| typedef struct VkDrmFormatModifierPropertiesList2EXT { |
| VkStructureType sType; |
| void* pNext; |
| uint32_t drmFormatModifierCount; |
| VkDrmFormatModifierProperties2EXT* pDrmFormatModifierProperties; |
| } VkDrmFormatModifierPropertiesList2EXT; |
| |
| #endif // VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION < 2 |
| |
| #endif // VK_EXT_image_drm_format_modifier |
| |
| // TODO(liyl): Remove once Android vulkan-headers is updated |
| // to 1.2.195 or higher. |
| |
| #ifdef VK_ANDROID_external_memory_android_hardware_buffer |
| |
| #if VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION < 4 |
| |
| #define VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID ((VkStructureType)1000129006) |
| typedef struct VkAndroidHardwareBufferFormatProperties2ANDROID { |
| VkStructureType sType; |
| void* pNext; |
| VkFormat format; |
| uint64_t externalFormat; |
| VkFormatFeatureFlags2KHR formatFeatures; |
| VkComponentMapping samplerYcbcrConversionComponents; |
| VkSamplerYcbcrModelConversion suggestedYcbcrModel; |
| VkSamplerYcbcrRange suggestedYcbcrRange; |
| VkChromaLocation suggestedXChromaOffset; |
| VkChromaLocation suggestedYChromaOffset; |
| } VkAndroidHardwareBufferFormatProperties2ANDROID; |
| |
| #endif // VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION < 4 |
| |
| #endif // VK_ANDROID_external_memory_android_hardware_buffer |
| |
| #ifdef __cplusplus |
| } // extern "C" |
| #endif |
| |
| #ifdef __cplusplus |
| |
| template<class T, typename F> |
| bool arrayany(const T* arr, uint32_t begin, uint32_t end, const F& func) { |
| const T* e = arr + end; |
| return std::find_if(arr + begin, e, func) != e; |
| } |
| |
| #define DEFINE_ALIAS_FUNCTION(ORIGINAL_FN, ALIAS_FN) \ |
| template <typename... Args> \ |
| inline auto ALIAS_FN(Args&&... args) -> decltype(ORIGINAL_FN(std::forward<Args>(args)...)) { \ |
| return ORIGINAL_FN(std::forward<Args>(args)...); \ |
| } |
| |
| #endif |