[Mesa-dev] [PATCH] Vulkan: Add VK_ANDROID_native_buffer to device extension list
Tapani Pälli
tapani.palli at intel.com
Wed Mar 1 05:32:49 UTC 2017
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 <jason at jlekstrand.net>; Xu, Randy
> <randy.xu at intel.com>
> *Cc:* mesa-dev at lists.freedesktop.org
> *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 <randy.xu at intel.com
> <mailto:randy.xu at intel.com>> 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 <randy.xu at intel.com
> <mailto:randy.xu at intel.com>>
> ---
> 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
> mesa-dev at lists.freedesktop.org
> <mailto:mesa-dev at lists.freedesktop.org>
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
>
>
>
> _______________________________________________
>
> mesa-dev mailing list
>
> mesa-dev at lists.freedesktop.org <mailto:mesa-dev at lists.freedesktop.org>
>
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170301/d680c71c/attachment.html>
More information about the mesa-dev
mailing list