xref: /aosp_15_r20/external/mesa3d/src/virtio/vulkan/vn_android.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 /*
2  * Copyright 2021 Google LLC
3  * SPDX-License-Identifier: MIT
4  *
5  * based in part on anv and radv which are:
6  * Copyright © 2015 Intel Corporation
7  * Copyright © 2016 Red Hat
8  * Copyright © 2016 Bas Nieuwenhuizen
9  */
10 
11 #ifndef VN_ANDROID_H
12 #define VN_ANDROID_H
13 
14 #include "vn_common.h"
15 
16 #include <vulkan/vk_android_native_buffer.h>
17 #include <vulkan/vulkan.h>
18 #include <vulkan/vulkan_android.h>
19 
20 #if DETECT_OS_ANDROID
21 
22 VkResult
23 vn_android_image_from_anb(struct vn_device *dev,
24                           const VkImageCreateInfo *image_info,
25                           const VkNativeBufferANDROID *anb_info,
26                           const VkAllocationCallbacks *alloc,
27                           struct vn_image **out_img);
28 
29 struct vn_device_memory *
30 vn_android_get_wsi_memory_from_bind_info(
31    struct vn_device *dev, const VkBindImageMemoryInfo *bind_info);
32 
33 bool
34 vn_android_get_drm_format_modifier_info(
35    const VkPhysicalDeviceImageFormatInfo2 *format_info,
36    VkPhysicalDeviceImageDrmFormatModifierInfoEXT *out_info);
37 
38 const VkFormat *
39 vn_android_format_to_view_formats(VkFormat format, uint32_t *out_count);
40 
41 uint64_t
42 vn_android_get_ahb_usage(const VkImageUsageFlags usage,
43                          const VkImageCreateFlags flags);
44 
45 VkResult
46 vn_android_device_import_ahb(
47    struct vn_device *dev,
48    struct vn_device_memory *mem,
49    const struct VkMemoryDedicatedAllocateInfo *dedicated_info);
50 
51 VkFormat
52 vn_android_drm_format_to_vk_format(uint32_t format);
53 
54 uint32_t
55 vn_android_get_ahb_buffer_memory_type_bits(struct vn_device *dev);
56 
57 uint64_t
58 vn_android_gralloc_get_shared_present_usage(void);
59 
60 #else
61 
62 static inline VkResult
vn_android_image_from_anb(UNUSED struct vn_device * dev,UNUSED const VkImageCreateInfo * image_info,UNUSED const VkNativeBufferANDROID * anb_info,UNUSED const VkAllocationCallbacks * alloc,UNUSED struct vn_image ** out_img)63 vn_android_image_from_anb(UNUSED struct vn_device *dev,
64                           UNUSED const VkImageCreateInfo *image_info,
65                           UNUSED const VkNativeBufferANDROID *anb_info,
66                           UNUSED const VkAllocationCallbacks *alloc,
67                           UNUSED struct vn_image **out_img)
68 {
69    return VK_ERROR_OUT_OF_HOST_MEMORY;
70 }
71 
72 static inline struct vn_device_memory *
vn_android_get_wsi_memory_from_bind_info(UNUSED struct vn_device * dev,UNUSED const VkBindImageMemoryInfo * bind_info)73 vn_android_get_wsi_memory_from_bind_info(
74    UNUSED struct vn_device *dev,
75    UNUSED const VkBindImageMemoryInfo *bind_info)
76 {
77    return NULL;
78 }
79 
80 static inline bool
vn_android_get_drm_format_modifier_info(UNUSED const VkPhysicalDeviceImageFormatInfo2 * format_info,UNUSED VkPhysicalDeviceImageDrmFormatModifierInfoEXT * out_info)81 vn_android_get_drm_format_modifier_info(
82    UNUSED const VkPhysicalDeviceImageFormatInfo2 *format_info,
83    UNUSED VkPhysicalDeviceImageDrmFormatModifierInfoEXT *out_info)
84 {
85    return false;
86 }
87 
88 static inline const VkFormat *
vn_android_format_to_view_formats(UNUSED VkFormat format,UNUSED uint32_t * out_count)89 vn_android_format_to_view_formats(UNUSED VkFormat format,
90                                   UNUSED uint32_t *out_count)
91 {
92    return NULL;
93 }
94 
95 static inline uint64_t
vn_android_get_ahb_usage(UNUSED const VkImageUsageFlags usage,UNUSED const VkImageCreateFlags flags)96 vn_android_get_ahb_usage(UNUSED const VkImageUsageFlags usage,
97                          UNUSED const VkImageCreateFlags flags)
98 {
99    return 0;
100 }
101 
102 static inline VkResult
vn_android_device_import_ahb(UNUSED struct vn_device * dev,UNUSED struct vn_device_memory * mem,UNUSED const struct VkMemoryDedicatedAllocateInfo * dedicated_info)103 vn_android_device_import_ahb(
104    UNUSED struct vn_device *dev,
105    UNUSED struct vn_device_memory *mem,
106    UNUSED const struct VkMemoryDedicatedAllocateInfo *dedicated_info)
107 {
108    return VK_ERROR_OUT_OF_HOST_MEMORY;
109 }
110 
111 static inline VkFormat
vn_android_drm_format_to_vk_format(UNUSED uint32_t format)112 vn_android_drm_format_to_vk_format(UNUSED uint32_t format)
113 {
114    return VK_FORMAT_UNDEFINED;
115 }
116 
117 static inline uint32_t
vn_android_get_ahb_buffer_memory_type_bits(UNUSED struct vn_device * dev)118 vn_android_get_ahb_buffer_memory_type_bits(UNUSED struct vn_device *dev)
119 {
120    return 0;
121 }
122 
123 static inline uint64_t
vn_android_gralloc_get_shared_present_usage(void)124 vn_android_gralloc_get_shared_present_usage(void)
125 {
126    return 0;
127 }
128 
129 #endif /* DETECT_OS_ANDROID */
130 
131 #endif /* VN_ANDROID_H */
132