diff options
author | 2018-01-18 15:04:37 -0800 | |
---|---|---|
committer | 2018-01-20 18:00:20 +0800 | |
commit | e2be6b8fafa795a6661bbe6ac3c803367fea3bbc (patch) | |
tree | 8abe1fc4d370847816411d7d5ff6b64cb546da1a | |
parent | 35b4de1e72902c8d9d283b7dec9c91e99c11587c (diff) |
vulkan: Declare VK_ANDROID_external_memory_android_hardware_buffer
Test: build
Change-Id: I02d4790f7a4d5ccb0c6e5b43fab92e89ce8322db
-rw-r--r-- | vulkan/api/platform.api | 1 | ||||
-rw-r--r-- | vulkan/api/vulkan.api | 91 | ||||
-rw-r--r-- | vulkan/include/vulkan/vulkan_android.h | 66 | ||||
-rw-r--r-- | vulkan/include/vulkan/vulkan_core.h | 7 |
4 files changed, 161 insertions, 4 deletions
diff --git a/vulkan/api/platform.api b/vulkan/api/platform.api index eb0124dfde..41f398d271 100644 --- a/vulkan/api/platform.api +++ b/vulkan/api/platform.api @@ -43,6 +43,7 @@ type u64 size_t // VK_USE_PLATFORM_ANDROID_KHR @internal class ANativeWindow {} +@internal class AHardwareBuffer {} @internal type void* buffer_handle_t // VK_USE_PLATFORM_WIN32_KHR diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api index e6e550a460..d0e834638c 100644 --- a/vulkan/api/vulkan.api +++ b/vulkan/api/vulkan.api @@ -401,6 +401,10 @@ define NULL_HANDLE 0 @extension("VK_EXT_debug_utils") define VK_EXT_DEBUG_UTILS_SPEC_VERSION 1 @extension("VK_EXT_debug_utils") define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils" +// 130 +@extension("VK_ANDROID_external_memory_android_hardware_buffer") define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 2 +@extension("VK_ANDROID_external_memory_android_hardware_buffer") define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer" + // 131 @extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1 @extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax" @@ -1514,6 +1518,14 @@ enum VkStructureType { VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003, VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004, + //@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000, + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001, + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002, + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003, + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004, + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005, + //@extension("VK_EXT_sampler_filter_minmax") // 131 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000, VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001, @@ -2605,12 +2617,15 @@ bitfield VkExternalMemoryHandleTypeFlagBits { VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040, + //@extension("VK_EXT_external_memory_host") // 179 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100, + //@extension("VK_EXT_external_memory_dma_buf") // 126 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200, - //@extension("VK_EXT_external_memory_host") // 179 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100, + //@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400, } /// External memory feature flags @@ -6023,6 +6038,56 @@ class VkDebugUtilsMessengerCreateInfoEXT { void* pUserData } +@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 131 +class VkAndroidHardwareBufferUsageANDROID { + VkStructureType sType + void* pNext + u64 androidHardwareBufferUsage +} + +@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 +class VkAndroidHardwareBufferPropertiesANDROID { + VkStructureType sType + void* pNext + VkDeviceSize allocationSize + u32 memoryTypeBits +} + +@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 +class VkAndroidHardwareBufferFormatPropertiesANDROID { + VkStructureType sType + void* pNext + VkFormat format + u64 externalFormat + VkFormatFeatureFlags formatFeatures + VkComponentMapping samplerYcbcrConversionComponents + VkSamplerYcbcrModelConversion suggestedYcbcrModel + VkSamplerYcbcrRange suggestedYcbcrRange + VkChromaLocation suggestedXChromaOffset + VkChromaLocation suggestedYChromaOffset +} + +@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 +class VkImportAndroidHardwareBufferInfoANDROID { + VkStructureType sType + const void* pNext + platform.AHardwareBuffer* buffer +} + +@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 +class VkMemoryGetAndroidHardwareBufferInfoANDROID { + VkStructureType sType + const void* pNext + VkDeviceMemory memory +} + +@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 +class VkExternalFormatANDROID { + VkStructureType sType + void* pNext + u64 externalFormat +} + @extension("VK_EXT_sampler_filter_minmax") // 131 class VkSamplerReductionModeCreateInfoEXT { VkStructureType sType @@ -9877,6 +9942,24 @@ cmd void vkSubmitDebugUtilsMessageEXT( const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) { } +@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 +@vulkan1_1 // extension requires 1.1, and should become non-optional when 1.1 does +cmd VkResult vkGetAndroidHardwareBufferPropertiesANDROID( + VkDevice device, + const platform.AHardwareBuffer* buffer, + VkAndroidHardwareBufferPropertiesANDROID* pProperties) { + return ? +} + +@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 +@vulkan1_1 // extension requires 1.1, and should become non-optional when 1.1 does +cmd VkResult vkGetMemoryAndroidHardwareBufferANDROID( + VkDevice device, + const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, + platform.AHardwareBuffer** pBuffer) { + return ? +} + @extension("VK_EXT_sample_locations") // 144 cmd void vkCmdSetSampleLocationsEXT( VkCommandBuffer commandBuffer, diff --git a/vulkan/include/vulkan/vulkan_android.h b/vulkan/include/vulkan/vulkan_android.h index 5e61c0531a..42521d9d65 100644 --- a/vulkan/include/vulkan/vulkan_android.h +++ b/vulkan/include/vulkan/vulkan_android.h @@ -53,6 +53,72 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR( VkSurfaceKHR* pSurface); #endif +#define VK_ANDROID_external_memory_android_hardware_buffer 1 +struct AHardwareBuffer; + +#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 2 +#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer" + +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 + #ifdef __cplusplus } #endif diff --git a/vulkan/include/vulkan/vulkan_core.h b/vulkan/include/vulkan/vulkan_core.h index 6b8f2cb31e..6e5ea80193 100644 --- a/vulkan/include/vulkan/vulkan_core.h +++ b/vulkan/include/vulkan/vulkan_core.h @@ -356,6 +356,12 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002, VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003, VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004, + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000, + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001, + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002, + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003, + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004, + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000, VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001, VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000, @@ -3765,6 +3771,7 @@ typedef enum VkExternalMemoryHandleTypeFlagBits { VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040, VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400, VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080, VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100, VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, |