Commit graph

14 commits

Author SHA1 Message Date
Jason Macnak
a04902c837 Wrap some classes in "namespace gfxstream::guest {}"
... to avoid more duplicate symbol definitions when
building Gfxstream VK ICD.

Reviewed-by: Aaron Ruby <aruby@blackberry.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
2024-09-19 20:05:59 +00:00
Gurchetan Singh
1d560c1ee8 gfxstream: codegen EXT_swapchain_maintenance1 + KHR_swapchain host only
We really shouldn't be encoding/decoding EXT_swapchain_maintenance1
or KHR_swapchain at all, for Android.  The driver needs to expose
VK_ANDROID_native_buffer and Android's libvulkan implements swapchain
in terms of that.

However, Android's libvulkan doesn't filter out structs or definitions
related to those extensions, and for U, niether does gfxstream. That
means older images pass down the extensions.

Newer versions of gfxstream guest should do filtering and in fact
we have some host side filtering logic too.  So isolate the
extensions host side for now.

This also removes an abort(..) in unwrap_VkBindImageMemorySwapchainInfoKHR.
Since were aren't auto-generating KHR_swapchain anymore, so things don't
get copied, and the abort(..) gets triggered.

However, as gfxstream is not a validation layer, removing the abort is
harmless.

Reviewed-by: Aaron Ruby <aruby@blackberry.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
2024-09-19 20:05:59 +00:00
Gurchetan Singh
6d7c47d3cd gfxstream: cereal: SUPPORTED_WRAPPERS --> SUPPORTED_MODULES
Wrappers are used to generate host and guest variants of
modules.  Thus, modules allow differentiation between guest
and host codegen, which wrappers do not.

Reviewed-by: Aaron Ruby <aruby@blackberry.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
2024-09-19 20:05:59 +00:00
Gurchetan Singh
9193759bd3 gfxstream: cereal: [moduleType] --> [(moduleType, moduleName)]
It would be great if we could get the moduleName from
a moduleType, but couldn't determine how it's done.
So just create a tuple.

Reviewed-by: Aaron Ruby <aruby@blackberry.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
2024-09-19 20:05:59 +00:00
Yahan Zhou
d9a71239b2 Use old en/decoding for vkQueueSignalReleaseImage
We accidentially changed the xml definition for
vkQueueSignalReleaseImageANDROID. As a result it changed its encoding
and decoding, which breaks Android emulator when launching old system
images (API level 29~32).

To fix this, we overwrite it with the old definition so that it keeps
using the old encoding/decoding.

Note that API 33+ uses vkQueueSignalReleaseImageANDROIDAsyncGOOGLE which
does not have this problem.

Reviewed-by: Aaron Ruby <aruby@blackberry.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
2024-09-19 20:05:59 +00:00
C Stout
cecd8abbdd Exclude Android entry points on Fuchsia
Reviewed-by: Aaron Ruby <aruby@blackberry.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
2024-09-19 20:05:59 +00:00
Gurchetan Singh
c26f73317b gfxstream: add support for VK_KHR_maintenance5 + VK_EXT_host_image_copy
In newer versions of vk.xml, VK_EXT_host_image_copy also
provides vkGetImageSubresourceLayout2EXT.  Autogen for
VK_EXT_host_image_copy fails without VK_KHR_maintainance5.

For some reason, onGenCmd(..) for vkGetImageSubresourceLayout2EXT
is requires VK_EXT_host_image_copy.  This goes back into reg.py
in vulkan-docs.

Interestingly, the Android's libvulkan doesn't use
vkGetImageSubresourceLayout2EXT, nor does it check for
VK_EXT_image_compression_control before using it.

https://android-review.googlesource.com/c/platform/frameworks/native/+/2016419

Thus, we can have VK_EXT_host_image_copy provide the function.

Maybe we can revert this if the function isn't used by libvulkan
aswell.

Reviewed-by: Aaron Ruby <aruby@blackberry.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
2024-09-19 20:05:59 +00:00
Gurchetan Singh
1b8e1d100e gfxstream: add generate-gfxstream-vulkan.sh
Simpler version of the generate-vulkan-sources.sh
script.

Reviewed-by: Aaron Ruby <aruby@blackberry.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
2024-09-19 20:05:59 +00:00
Gurchetan Singh
3ec593d9cd gfxstream: vulkan-docs: don't auto-generate vk_android_native_buffer
We shouldn't autogenerate this header, since it's a forked header
specific to gfxstream.

Plus, this particular extension is disabled in the Vulkan anyways,
and used between Android libvulkan <--> ICD only.

We should just call it "vk_android_native_buffer_gfxstream.h" to
avoid namespace conflicts.

Reviewed-by: Aaron Ruby <aruby@blackberry.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
2024-09-19 20:05:58 +00:00
Gurchetan Singh
c1887f0dbf gfxstream: genvk: add support for vk_gfxstream.xml
Custom XML file specific to gfxstream.

Reviewed-by: Aaron Ruby <aruby@blackberry.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
2024-09-19 20:05:58 +00:00
Gurchetan Singh
f0fc91acff gfxstream: vulkan-docs: add cereal generator
This adds custom the cereal generator as an option to genvk.py
gfxstream specific options like "-registryGfxstream" are also
added.

Reviewed-by: Aaron Ruby <aruby@blackberry.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
2024-09-19 20:05:58 +00:00
Gurchetan Singh
bd8eb080ff gfxstream: vulkan-docs: track feature type
The newest version of Vulkan docs doesn't have this, and it
needs to be patched in.

Reviewed-by: Aaron Ruby <aruby@blackberry.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
2024-09-19 20:05:58 +00:00
Gurchetan Singh
82ff5f769f gfxstream: vulkan-Docs: import the cerealgenerator
This imports the cereal generator into the next gen
Vulkan docs.

Reviewed-by: Aaron Ruby <aruby@blackberry.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
2024-09-19 20:05:58 +00:00
Gurchetan Singh
c10d78e61e gfxstream: import Vulkan-docs from 463f8c
This is based on 463f8c ("Change log for October
20, 2023 Vulkan 1.3.269 spec update").

Right now, the current version of vulkan-docs seems to
be 2021.  Need to update.  Import here without
modifications so we can track the changes that were
needed to support cereal.

Reviewed-by: Aaron Ruby <aruby@blackberry.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
2024-09-19 20:05:58 +00:00