From b3285b12120a359a0f20f3b50dc42a0774bb8fd1 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Thu, 17 Jul 2025 20:08:32 -0700 Subject: [PATCH] lavapipe: implement GetMemoryAndroidHardwareBufferANDROID lvp hasn't used common device memory obj, and it allocates and imports ahb on its own. Thus it has to implement the AHB export api itself. - before: total 116, skip 66, pass 24, fail 26 - after: total 116, skip 66, pass 36, fail 14 Fixes: cebb2bf2662 ("lavapipe: Add AHB extension") Reviewed-by: Lucas Fryzek Part-of: (cherry picked from commit f1af533b2c4be27fc05891c292c7c9b9b1dcb550) --- .pick_status.json | 2 +- src/gallium/frontends/lavapipe/lvp_android.c | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index b4c1af84013..d115927640f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2384,7 +2384,7 @@ "description": "lavapipe: implement GetMemoryAndroidHardwareBufferANDROID", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "cebb2bf26623e31aa1fbab0e73c7e2a1e3cfe956", "notes": null diff --git a/src/gallium/frontends/lavapipe/lvp_android.c b/src/gallium/frontends/lavapipe/lvp_android.c index 3b7898ee1e9..e6e7d708a87 100644 --- a/src/gallium/frontends/lavapipe/lvp_android.c +++ b/src/gallium/frontends/lavapipe/lvp_android.c @@ -155,3 +155,23 @@ lvp_create_ahb_memory(struct lvp_device *device, struct lvp_device_memory *mem, return result; } + +#if ANDROID_API_LEVEL >= 26 +VkResult +lvp_GetMemoryAndroidHardwareBufferANDROID( + VkDevice device, + const VkMemoryGetAndroidHardwareBufferInfoANDROID *pInfo, + struct AHardwareBuffer **pBuffer) +{ + LVP_FROM_HANDLE(lvp_device_memory, mem, pInfo->memory); + + if (mem->android_hardware_buffer) { + *pBuffer = mem->android_hardware_buffer; + /* Increase refcount. */ + AHardwareBuffer_acquire(*pBuffer); + return VK_SUCCESS; + } + + return VK_ERROR_INVALID_EXTERNAL_HANDLE; +} +#endif