Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2be6b8f authored by Jesse Hall's avatar Jesse Hall
Browse files

vulkan: Declare VK_ANDROID_external_memory_android_hardware_buffer

Test: build
Change-Id: I02d4790f7a4d5ccb0c6e5b43fab92e89ce8322db
parent 35b4de1e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
+87 −4
Original line number Diff line number Diff line
@@ -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_dma_buf") // 126
    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_EXT_external_memory_dma_buf") // 126
    VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT                      = 0x00000200,

    //@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,
+66 −0
Original line number Diff line number Diff line
@@ -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
+7 −0
Original line number Diff line number Diff line
@@ -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,