venus: add vn_android_get_ahb_usage helper function
See "AHardwareBuffer Usage Equivalence" in the spec. Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Chia-I Wu <olvaffe@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10847>
This commit is contained in:
@@ -146,6 +146,32 @@ vn_android_ahb_format_to_vk_format(uint32_t format)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint64_t
|
||||||
|
vn_android_get_ahb_usage(const VkImageUsageFlags usage,
|
||||||
|
const VkImageCreateFlags flags)
|
||||||
|
{
|
||||||
|
uint64_t ahb_usage = 0;
|
||||||
|
if (usage &
|
||||||
|
(VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT))
|
||||||
|
ahb_usage |= AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE;
|
||||||
|
|
||||||
|
if (usage & (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
|
||||||
|
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT))
|
||||||
|
ahb_usage |= AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER;
|
||||||
|
|
||||||
|
if (flags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT)
|
||||||
|
ahb_usage |= AHARDWAREBUFFER_USAGE_GPU_CUBE_MAP;
|
||||||
|
|
||||||
|
if (flags & VK_IMAGE_CREATE_PROTECTED_BIT)
|
||||||
|
ahb_usage |= AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT;
|
||||||
|
|
||||||
|
/* must include at least one GPU usage flag */
|
||||||
|
if (ahb_usage == 0)
|
||||||
|
ahb_usage = AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE;
|
||||||
|
|
||||||
|
return ahb_usage;
|
||||||
|
}
|
||||||
|
|
||||||
VkResult
|
VkResult
|
||||||
vn_GetSwapchainGrallocUsage2ANDROID(
|
vn_GetSwapchainGrallocUsage2ANDROID(
|
||||||
VkDevice device,
|
VkDevice device,
|
||||||
|
@@ -51,6 +51,10 @@ vn_android_image_from_anb(struct vn_device *dev,
|
|||||||
const VkAllocationCallbacks *alloc,
|
const VkAllocationCallbacks *alloc,
|
||||||
struct vn_image **out_img);
|
struct vn_image **out_img);
|
||||||
|
|
||||||
|
uint64_t
|
||||||
|
vn_android_get_ahb_usage(const VkImageUsageFlags usage,
|
||||||
|
const VkImageCreateFlags flags);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
static inline VkResult
|
static inline VkResult
|
||||||
@@ -83,6 +87,13 @@ vn_android_image_from_anb(UNUSED struct vn_device *dev,
|
|||||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline uint64_t
|
||||||
|
vn_android_get_ahb_usage(UNUSED const VkImageUsageFlags usage,
|
||||||
|
UNUSED const VkImageCreateFlags flags)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* ANDROID */
|
#endif /* ANDROID */
|
||||||
|
|
||||||
#endif /* VN_ANDROID_H */
|
#endif /* VN_ANDROID_H */
|
||||||
|
Reference in New Issue
Block a user