From 161b5f00db633642ded422fb4bdf7eaa56f50cda Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Mon, 29 Jul 2019 16:00:00 +0300 Subject: [PATCH] include/vulkan: bump vk_android_native_buffer Taken off https://android.googlesource.com/platform/frameworks/native/+/refs/tags/android-9.0.0_r45/vulkan/include/vulkan/vk_android_native_buffer.h Signed-off-by: Lionel Landwerlin Reviewed-by: Jason Ekstrand --- include/vulkan/vk_android_native_buffer.h | 69 ++++++++++++++++++----- 1 file changed, 54 insertions(+), 15 deletions(-) diff --git a/include/vulkan/vk_android_native_buffer.h b/include/vulkan/vk_android_native_buffer.h index a658b49243d..8a777407ff3 100644 --- a/include/vulkan/vk_android_native_buffer.h +++ b/include/vulkan/vk_android_native_buffer.h @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - #ifndef __VK_ANDROID_NATIVE_BUFFER_H__ #define __VK_ANDROID_NATIVE_BUFFER_H__ /* MESA: A hack to avoid #ifdefs in driver code. */ #ifdef ANDROID #include +#include #include #else typedef void *buffer_handle_t; @@ -30,14 +30,31 @@ extern "C" { #endif #define VK_ANDROID_native_buffer 1 - #define VK_ANDROID_NATIVE_BUFFER_EXTENSION_NUMBER 11 -#define VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION 5 + +/* 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; @@ -48,20 +65,53 @@ typedef struct { // Gralloc format and usage requested when the buffer was allocated. int format; - int usage; + int usage; // DEPRECATED in SPEC_VERSION 6 + + // -- Added in SPEC_VERSION 6 -- + struct { + uint64_t consumer; + uint64_t producer; + } usage2; } 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); #ifndef VK_NO_PROTOTYPES +// -- DEPRECATED in SPEC_VERSION 6 -- VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainGrallocUsageANDROID( VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, int* grallocUsage ); +// -- ADDED in SPEC_VERSION 6 -- +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainGrallocUsage2ANDROID( + VkDevice device, + VkFormat format, + VkImageUsageFlags imageUsage, + VkSwapchainImageUsageFlagsANDROID swapchainImageUsage, + uint64_t* grallocConsumerUsage, + uint64_t* grallocProducerUsage +); VKAPI_ATTR VkResult VKAPI_CALL vkAcquireImageANDROID( VkDevice device, VkImage image, @@ -76,17 +126,6 @@ VKAPI_ATTR VkResult VKAPI_CALL vkQueueSignalReleaseImageANDROID( VkImage image, int* pNativeFenceFd ); -// -- DEPRECATED -- -VKAPI_ATTR VkResult VKAPI_CALL vkImportNativeFenceANDROID( - VkDevice device, - VkSemaphore semaphore, - int nativeFenceFd -); -VKAPI_ATTR VkResult VKAPI_CALL vkQueueSignalNativeFenceANDROID( - VkQueue queue, - int* pNativeFenceFd -); -// ---------------- #endif #ifdef __cplusplus -- 2.30.2