From: Chad Versace Date: Tue, 15 Nov 2016 00:05:40 +0000 (-0800) Subject: vulkan: Import vk_android_native_buffer.h X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5872ccc9ac6034902fa46835df99637ced7ff4c8;p=mesa.git vulkan: Import vk_android_native_buffer.h Just as Mesa imports the Khronos Vulkan headers, it should import this Android-private Vulkan header too. This guarantees that Mesa will continue to build even when upstream Android breaks header compatibility. This header is only for *implementers* of Vulkan, not for consumers of Vulkan. Imported from tag 'android-7.1.1_r28' in aosp/frameworks/native. References: https://android.googlesource.com/platform/frameworks/native/+/android-7.1.1_r28/vulkan/include/vulkan/vk_android_native_buffer.h Reviewed-by: Tapani Pälli --- diff --git a/include/vulkan/vk_android_native_buffer.h b/include/vulkan/vk_android_native_buffer.h new file mode 100644 index 00000000000..d0ebf81353f --- /dev/null +++ b/include/vulkan/vk_android_native_buffer.h @@ -0,0 +1,91 @@ +/* + * Copyright 2015 The Android Open Source Project + * + * 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. + */ + +#ifndef __VK_ANDROID_NATIVE_BUFFER_H__ +#define __VK_ANDROID_NATIVE_BUFFER_H__ + +#include +#include + +#ifdef __cplusplus +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 +#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) + +typedef struct { + VkStructureType sType; // must be VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID + const void* pNext; + + // Buffer handle and stride returned from gralloc alloc() + buffer_handle_t handle; + int stride; + + // Gralloc format and usage requested when the buffer was allocated. + int format; + int usage; +} VkNativeBufferANDROID; + +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainGrallocUsageANDROID)(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, int* grallocUsage); +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 +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainGrallocUsageANDROID( + VkDevice device, + VkFormat format, + VkImageUsageFlags imageUsage, + int* grallocUsage +); +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireImageANDROID( + VkDevice device, + VkImage image, + int nativeFenceFd, + VkSemaphore semaphore, + VkFence fence +); +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSignalReleaseImageANDROID( + VkQueue queue, + uint32_t waitSemaphoreCount, + const VkSemaphore* pWaitSemaphores, + 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 +} +#endif + +#endif // __VK_ANDROID_NATIVE_BUFFER_H__