diff --git a/docs/features.txt b/docs/features.txt index 636814652e0..1f12d7e719e 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -672,7 +672,7 @@ Khronos extensions that are not part of any Vulkan version: VK_EXT_ycbcr_image_arrays DONE (anv, hasvk, hk, lvp, nvk, panvk/v10+, radv, vn) VK_EXT_zero_initialize_device_memory DONE (nvk, radv) VK_ANDROID_external_memory_android_hardware_buffer DONE (anv, radv, tu, vn) - VK_ANDROID_native_buffer DONE (anv, radv, tu, v3dv, vn) + VK_ANDROID_native_buffer DONE (anv, panvk, radv, tu, v3dv, vn) VK_GOOGLE_decorate_string DONE (anv, hasvk, hk, lvp, nvk, panvk, radv, tu, vn) VK_GOOGLE_hlsl_functionality1 DONE (anv, hasvk, hk, lvp, nvk, panvk, radv, tu, vn) VK_GOOGLE_user_type DONE (anv, hasvk, hk, nvk, panvk, radv, tu, vn) diff --git a/src/panfrost/vulkan/panvk_vX_physical_device.c b/src/panfrost/vulkan/panvk_vX_physical_device.c index 26dd52073c2..34dd1ad1830 100644 --- a/src/panfrost/vulkan/panvk_vX_physical_device.c +++ b/src/panfrost/vulkan/panvk_vX_physical_device.c @@ -13,6 +13,7 @@ #include "git_sha1.h" +#include "vk_android.h" #include "vk_device.h" #include "vk_limits.h" #include "vk_shader_module.h" @@ -40,6 +41,7 @@ panvk_per_arch(get_physical_device_extensions)( { bool has_vk1_1 = PAN_ARCH >= 10; bool has_vk1_2 = PAN_ARCH >= 10; + bool has_gralloc = vk_android_get_ugralloc() != NULL; *ext = (struct vk_device_extension_table){ .KHR_8bit_storage = true, @@ -175,6 +177,7 @@ panvk_per_arch(get_physical_device_extensions)( .EXT_ycbcr_2plane_444_formats = PAN_ARCH >= 10, .EXT_ycbcr_image_arrays = PAN_ARCH >= 10, .EXT_inline_uniform_block = true, + .ANDROID_native_buffer = has_gralloc, .GOOGLE_decorate_string = true, .GOOGLE_hlsl_functionality1 = true, .GOOGLE_user_type = true, @@ -959,6 +962,9 @@ panvk_per_arch(get_physical_device_properties)( /* VK_KHR_push_descriptor */ .maxPushDescriptors = MAX_PUSH_DESCS, + /* VK_ANDROID_native_buffer */ + .sharedImage = vk_android_get_front_buffer_usage() != 0, + /* VK_ARM_shader_core_properties */ .pixelRate = device->model->rates.pixel, .texelRate = device->model->rates.texel,