diff options
-rw-r--r-- | include/vulkan/vk_android_native_buffer.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/include/vulkan/vk_android_native_buffer.h b/include/vulkan/vk_android_native_buffer.h new file mode 100644 index 0000000000..d0ebf81353 --- /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 <system/window.h> +#include <vulkan/vulkan.h> + +#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__ |