[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