mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 05:18:08 +02:00
anv,hasvk: Set vk_image.ahardware_buffer_format
This effectively just modifies it for YCbCr images where the common code doesn't have a useable format mapping. Reviewed-by: Lina Versace <lina@kiwitree.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22038>
This commit is contained in:
parent
906944b210
commit
0a86df21d0
6 changed files with 18 additions and 6 deletions
|
|
@ -139,8 +139,8 @@ vk_format_from_android(unsigned android_format, unsigned android_usage)
|
|||
}
|
||||
}
|
||||
|
||||
static inline unsigned
|
||||
android_format_from_vk(unsigned vk_format)
|
||||
unsigned
|
||||
anv_ahb_format_for_vk_format(VkFormat vk_format)
|
||||
{
|
||||
switch (vk_format) {
|
||||
case VK_FORMAT_R8G8B8A8_UNORM:
|
||||
|
|
@ -401,7 +401,7 @@ anv_create_ahw_memory(VkDevice device_h,
|
|||
w = image->vk.extent.width;
|
||||
h = image->vk.extent.height;
|
||||
layers = image->vk.array_layers;
|
||||
format = android_format_from_vk(image->vk.format);
|
||||
format = anv_ahw_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) {
|
||||
|
|
|
|||
|
|
@ -44,6 +44,8 @@ VkResult anv_image_bind_from_gralloc(struct anv_device *device,
|
|||
struct anv_image *image,
|
||||
const VkNativeBufferANDROID *gralloc_info);
|
||||
|
||||
unsigned anv_ahb_format_for_vk_format(VkFormat vk_format);
|
||||
|
||||
VkResult anv_import_ahw_memory(VkDevice device_h,
|
||||
struct anv_device_memory *mem,
|
||||
const VkImportAndroidHardwareBufferInfoANDROID *info);
|
||||
|
|
|
|||
|
|
@ -1370,6 +1370,10 @@ anv_image_init(struct anv_device *device, struct anv_image *image,
|
|||
if (image->vk.external_handle_types &
|
||||
VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID) {
|
||||
image->from_ahb = true;
|
||||
#ifdef ANDROID
|
||||
image->vk.ahardware_buffer_format =
|
||||
anv_ahb_format_for_vk_format(image->vk.format);
|
||||
#endif
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -138,8 +138,8 @@ vk_format_from_android(unsigned android_format, unsigned android_usage)
|
|||
}
|
||||
}
|
||||
|
||||
static inline unsigned
|
||||
android_format_from_vk(unsigned vk_format)
|
||||
unsigned
|
||||
anv_ahb_format_for_vk_format(VkFormat vk_format)
|
||||
{
|
||||
switch (vk_format) {
|
||||
case VK_FORMAT_R8G8B8A8_UNORM:
|
||||
|
|
@ -400,7 +400,7 @@ anv_create_ahw_memory(VkDevice device_h,
|
|||
w = image->vk.extent.width;
|
||||
h = image->vk.extent.height;
|
||||
layers = image->vk.array_layers;
|
||||
format = android_format_from_vk(image->vk.format);
|
||||
format = anv_ahw_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) {
|
||||
|
|
|
|||
|
|
@ -1281,6 +1281,10 @@ anv_image_init(struct anv_device *device, struct anv_image *image,
|
|||
if (image->vk.external_handle_types &
|
||||
VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID) {
|
||||
image->from_ahb = true;
|
||||
#ifdef ANDROID
|
||||
image->vk.ahardware_buffer_format =
|
||||
anv_ahb_format_for_vk_format(image->vk.format);
|
||||
#endif
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3131,6 +3131,8 @@ anv_get_isl_format(const struct intel_device_info *devinfo, VkFormat vk_format,
|
|||
extern VkFormat
|
||||
vk_format_from_android(unsigned android_format, unsigned android_usage);
|
||||
|
||||
unsigned anv_ahb_format_for_vk_format(VkFormat vk_format);
|
||||
|
||||
static inline struct isl_swizzle
|
||||
anv_swizzle_for_render(struct isl_swizzle swizzle)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue