On 03/01/2017 07:21 AM, Xu, Randy wrote:
Hi, Tapani
According to
https://source.android.com/devices/graphics/implement-vulkan.html
"Window System Integration (WSI) extensions are exported by the loader
and primarily implemented in it rather than the driver.". Also, Google
provides the stubhal.c in frameworks/native/vulkan/libvulkan, the
VK_ANDROID_native_buffer functions are implemented there as a sample.
The reason I guess is that VK_ANDROID_native_buffer implementation
needs to access Gralloc HAL data structure, but mesa driver should
have no dependency to Android HAL, which is required by HAL Binderization.
We have a dependency on gralloc in the EGL layer so that is why I don't
see it as a problem for Vulkan WSI.
I'm OK with having it in HAL but maybe we should still spend some time
to figure out a way to expose extension from there (inject string to
extensions list in a way or another). Loader wraps extension list and
exposes different one to applications than it has from driver, maybe
should take some look there how it does all this.
This patch doesn’t expose VK_ANDROID_native_buffer extension in driver
(as the function is not implemented here), but avoid screening it when
create device.
Thanks,
Randy
*From:*Palli, Tapani
*Sent:* Wednesday, March 1, 2017 1:03 PM
*To:* Jason Ekstrand <[email protected]>; Xu, Randy
<[email protected]>
*Cc:* [email protected]
*Subject:* Re: [Mesa-dev] [PATCH] Vulkan: Add VK_ANDROID_native_buffer
to device extension list
On 03/01/2017 06:17 AM, Jason Ekstrand wrote:
On Tue, Feb 28, 2017 at 7:52 PM, Randy Xu <[email protected]
<mailto:[email protected]>> wrote:
The VK_ANDROID_native_buffer is implemented in Android Vulkan HAL,
not driver, but must be claimed in device extension list.
Otherwise,
this extension will be screened off in framework and driver.
This seems rather odd. Can't the Vulkan HAL just hook into
vkEnumerateDeviceExtensionProperties and add it to the list
there? It seems a bit odd to advertise an extension but not
actually provide any of the functionality.
This was my question as well. I proposed Randy to include
functionality, at the moment it would be along these lines:
https://github.com/android-ia/external-mesa/commit/8b6b2fc4de933c03feba33e5b57c20262e7983cc
I don't have a strong preference where functionality exists but it
seems like ideally the whole thing would exist in one single
component. If the extension list cannot be modified in HAL then this
becomes harder to achieve in HAL.
Test: Pass Vulkan dEQP-VK.wsi.android.swapchain.* on Android
platform
Signed-off-by: Randy Xu <[email protected]
<mailto:[email protected]>>
---
Android.common.mk <http://Android.common.mk> | 3 +++
src/intel/vulkan/anv_device.c | 9 +++++++++
2 files changed, 12 insertions(+)
diff --git a/Android.common.mk <http://Android.common.mk>
b/Android.common.mk <http://Android.common.mk>
index 611162a..f49189b 100644
--- a/Android.common.mk <http://Android.common.mk>
+++ b/Android.common.mk <http://Android.common.mk>
@@ -116,6 +116,9 @@ else
LOCAL_CFLAGS +=
-DDEFAULT_DRIVER_DIR=\"/system/lib/$(MESA_DRI_MODULE_REL_PATH)\"
endif
+# Enable VK_ANDROID_native_buffer
+LOCAL_CFLAGS += -DVK_USE_PLATFORM_ANDROID_KHR
+
# uncomment to keep the debug symbols
#LOCAL_STRIP_MODULE := false
diff --git a/src/intel/vulkan/anv_device.c
b/src/intel/vulkan/anv_device.c
index 0db96f2..478d753 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -258,6 +258,15 @@ static const VkExtensionProperties
device_extensions[] = {
.extensionName = VK_KHR_MAINTENANCE1_EXTENSION_NAME,
.specVersion = 1,
},
+#ifdef VK_USE_PLATFORM_ANDROID_KHR
+ {
+ // Refer
https://source.android.com/devices/graphics/implement-vulkan.html
+ // "Window System Integration (WSI) extensions are
exported by the loader
+ // and primarily implemented in it rather than the
driver."
+ .extensionName = "VK_ANDROID_native_buffer",
In the other places, we use the EXTENSION_NAME #define
+ .specVersion = 1,
+ },
+#endif
{
.extensionName =
VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME,
.specVersion = 1,
--
2.7.4
_______________________________________________
mesa-dev mailing list
[email protected]
<mailto:[email protected]>
https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
[email protected] <mailto:[email protected]>
https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev