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