panvk: add shared image support and advertise VK_ANDROID_native_buffer
Now we have:
1. baseline ANB (pre ANB spec v8)
- basic vulkan wsi on Android
2. aliased ANB (ANB spec v8+)
- required for swapchain maintenance1 support, and is used by ANGLE
on Android for smooth swapchain recreation.
3. ANB shared image
- required for KHR_shared_presentable_image support.
Test:
- dEQP-VK.wsi.android.*
- dEQP-EGL.* via ANGLE
- CtsGraphicsTestCases via ANGLE
- CtsOpenGLTestCases via ANGLE
- Instagram via ANGLE
Acked-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36603>
This commit is contained in:
+1
-1
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user