radv: Set vk_image.ahardware_buffer_format

Reviewed-by: Lina Versace <lina@kiwitree.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22038>
This commit is contained in:
Faith Ekstrand
2023-03-21 11:09:48 -05:00
committed by Marge Bot
parent 0a86df21d0
commit d75f797246
3 changed files with 11 additions and 7 deletions
+3 -3
View File
@@ -411,8 +411,8 @@ vk_format_from_android(unsigned android_format, unsigned android_usage)
}
}
static inline unsigned
android_format_from_vk(unsigned vk_format)
unsigned
radv_ahb_format_for_vk_format(VkFormat vk_format)
{
switch (vk_format) {
case VK_FORMAT_R8G8B8A8_UNORM:
@@ -751,7 +751,7 @@ radv_create_ahb_memory(struct radv_device *device, struct radv_device_memory *me
w = image->info.width;
h = image->info.height;
layers = image->info.array_size;
format = android_format_from_vk(image->vk.format);
format = radv_ahb_format_for_vk_format(image->vk.format);
usage = vk_image_usage_to_ahb_usage(image->vk.create_flags, image->vk.usage);
} else if (dedicated_info && dedicated_info->buffer) {
RADV_FROM_HANDLE(radv_buffer, buffer, dedicated_info->buffer);
+6 -4
View File
@@ -1974,11 +1974,13 @@ radv_image_create(VkDevice _device, const struct radv_image_create_info *create_
image->planes[plane].surface.modifier = modifier;
}
bool delay_layout =
external_info && (external_info->handleTypes &
VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID);
if (image->vk.external_handle_types &
VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID) {
#ifdef ANDROID
image->vk.ahardware_buffer_format =
radv_ahb_format_for_vk_format(image->vk.format);
#endif
if (delay_layout) {
*pImage = radv_image_to_handle(image);
assert(!(image->vk.create_flags & VK_IMAGE_CREATE_SPARSE_BINDING_BIT));
return VK_SUCCESS;
+2
View File
@@ -2851,6 +2851,8 @@ VkResult radv_import_ahb_memory(struct radv_device *device, struct radv_device_m
VkResult radv_create_ahb_memory(struct radv_device *device, struct radv_device_memory *mem,
unsigned priority, const VkMemoryAllocateInfo *pAllocateInfo);
unsigned radv_ahb_format_for_vk_format(VkFormat vk_format);
VkFormat radv_select_android_external_format(const void *next, VkFormat default_format);
bool radv_android_gralloc_supports_format(VkFormat format, VkImageUsageFlagBits usage);