Find a file
Mauro Rossi b192c6927b nvk/android: Add support for ANDROID_native_buffer
ANB implementation aims to rely as much as possible on 'ANB common' code in vulkan/runtime
and vk_common_* entry points automatically handled by mesa at build time.

(v1) Initial Vulkan HAL skeleton with vk_android_{init,destroy}_ugralloc() in nvk_open_hal()

Changelog:

nvk_android.{c,h}: skeleton nvk_open_hal()/nvk_close_hal() and meson.build changes
nvk_instance.h: nvk_*() functions declaration required by nvk_android.c
nvk_device.c: add ANB support
nvk_image.c: add ANB code paths
nvk_physical_device.c: enable ANB extension support

NOTE: Avoid including any AHB code/headers <vndk/hardware_buffer.h>
use only <vulkan/vk_android_native_buffer.h>

Achievements:

Vulkan HAL is detected by Android build, but no Vulkan application is rendering
Android libvulkan.so loader performs dlopen() of /vendor/lib64/hw/vulkan.nouveau.so
Sascha Willems vulkanCapsViewer App detects the Vulkan HAL in Android builds on RTX2060
Android CTS 11 dEQP-VK can be run and completed, but com.drawelements.deqp app shows black surface

dEQP Test Results:

Module		Passed	Failed	Total
dEQP-VK		568738	   161	568899

(v2) Further replication of other using 'ANB common' implementation

Changelog:

Move vk_android_{init,destroy}_ugralloc() from nvk_open_hal() to nvk_CreateInstance()
Remove nvk_GetPhysicalDeviceProperties2() and rely on vk_common_GetPhysicalDeviceProperties2()

Achievements:

Improvements in dEQP-VK test results, but many dEQP.wsi.android.* tests are still failing

dEQP Test Results:

Module		Passed	Failed	Total
dEQP-VK		568783	   115	568899

(v3) Get inspiration from lavapipe recent llvmpipe ANB implementation and cleanups

nvk_physical_device.c: brace nvk_init_wsi,nvk_finish_wsi with #ifdef NVK_USE_WSI_PLATFORM/#endif
nvk_image.c: if (!mem) return VK_SUCCESS in DETECT_OS_ANDROID path
nvk_android.h: remove nvk_ahb_format_for_vk_format() and add vk_format_from_android()

Achievements:

Improvement in dEQP.wsi.android.* test results, only dEQP.wsi.android.swapchain.simulae_oom.* are failing.
Most of Vulkan Apps generate these errors in logcat:
... E BufferQueueConsumer: [tech.incr.vulkanandroid/tech.incr.vulkanandroid.MinimalNativeActivity#0](id:85900000010,api:1,p:5060,c:2137) acquireBuffer: max acquired buffer count reached: 2 (max 1)
... E BufferLayerConsumer: [tech.incr.vulkanandroid/tech.incr.vulkanandroid.MinimalNativeActivity#0] updateTexImage: acquire failed: Function not implemented (-38)
while some other apps (vkCube and GearsVK) generate these errors:
... E RenderEngine: failed to wait on fence fd
... E Layer   : [Surface(name=Task=136)/@0x832783c - animation-leash#0] No local sync point found
... E Layer   : [Surface(name=Task=1)/@0xd82067 - animation-leash#0] No local sync point found

dEQP Test Results:

Module		Passed	Failed	Total
dEQP-VK		568820	    79	568899

(v4) Vulkan HAL implement nvk specific ANB gralloc and synchronization, inspired by llvmpipe ANB

Changelog:

nvk_android.c: nvk_GetSwapchainGrallocUsageANDROID, nvk_AcquireImageANDROID, nvk_QueueSignalReleaseImageANDROID
               implemented as porting of llvmpipe commit 0dce939e with 's/lvp_/nvk_/g' for functions rename

NOTE: at this stage nvk_GetSwapchainGrallocUsageANDROID is only setting gralloc SW usage flags
nvk_image.h: NVK_MAX_PLANE_COUNT 1 - NOTE: I don' know how many max planes are supported by NVK

Achievements:

GearsVK working
dEQP-VK tests produce colored output on screen
3DMARK API Overhead, Slingshot Extreme: running but meshes are not rendered
Other Vulkan API enabled Android Apps (Sascha Willems vulkanTriangle) are showing black surface,
which is due to basic gralloc SW usage flags implemented in nvk_GetSwapchainGrallocUsageANDROID()

dEQP Test Results:

Module		Passed	Failed	Total
dEQP-VK		568820	    79	568899

The failed tests are in the following modules/test:

dEQP-VK.api.driver_properties#driver_id_match					 1
dEQP-VK.pipeline.multisample.min_sample_shading_enabled.*			 9
dEQP-VK.pipeline.multisample.min_sample_shading.*				56
dEQP-VK.sparse_resources.image_sparse_binding.cube_array.rgba32i#256_256_6	 1
dEQP-VK.sparse_resources.image_sparse_binding.cube_array.rgba32ui#256_256_6	 1
dEQP-VK.ssbo.layout.random.all_shared_buffer#5					 1
dEQP-VK.wsi.android.swapchain.simulate_oom					10

(v5) use ANB common code for GetSwapchainGrallocUsage*ANDROID

Changelog:

Replace the "SW usage only" nvk_GetSwapchainGrallocUsage{,2}ANDROID
and rely on vk_common_GetSwapchainGrallocUsage{,2}ANDROID

Achievements:

Vulkan Apps are rendering on screen
Tested on Android 11 with Vulkan 1.1 API

Android apps working:

Khronos Vulkan-Samples
Sacha Willems Vulkan Examples
Vulkan Android Test
vkCube
GearsVK
PPSSPP
3DMARK API Overhead, Slingshot Extreme - Still with meshes issue

dEQP Test Results:

Module		Passed	Failed	Total
dEQP-VK		568820	    79	568899

The failed tests are in the following modules/test (same as per previous iteration):

dEQP-VK.api.driver_properties#driver_id_match					 1
dEQP-VK.pipeline.multisample.min_sample_shading_enabled.*			 9
dEQP-VK.pipeline.multisample.min_sample_shading.*				56
dEQP-VK.sparse_resources.image_sparse_binding.cube_array.rgba32i#256_256_6	 1
dEQP-VK.sparse_resources.image_sparse_binding.cube_array.rgba32ui#256_256_6	 1
dEQP-VK.ssbo.layout.random.all_shared_buffer#5					 1
dEQP-VK.wsi.android.swapchain.simulate_oom#					10

Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30833>
2024-11-26 21:45:16 +00:00
.ci-farms Revert "ci: disable mupuf's farm" 2024-11-21 04:50:29 +00:00
.ci-farms-disabled Revert "ci: disable mupuf's farm" 2024-11-21 04:50:29 +00:00
.github/workflows add zink to macos ci 2022-11-22 19:04:13 +00:00
.gitlab gitlab: Reference hang debugging documenttion 2024-05-16 09:47:53 +00:00
.gitlab-ci ci/container: setup sections in all image builds 2024-11-22 11:40:56 +01:00
android Android15 support gralloc IMapper5 2024-10-29 12:32:04 +00:00
bin meson/megadriver: support various lib suffixes 2024-11-26 20:45:41 +00:00
build-support meson: move tsan-blacklist.txt to build-support with the other build support files 2024-05-01 07:05:12 +00:00
docs panvk: Advertise VK_EXT_pipeline_robustness 2024-11-25 18:33:40 +00:00
include intel/dev: Add PTL 0xb0b0 PCI ID 2024-11-18 20:53:06 +00:00
src nvk/android: Add support for ANDROID_native_buffer 2024-11-26 21:45:16 +00:00
subprojects meson: Update wayland-protocols to 1.38 2024-11-07 00:03:23 +00:00
.clang-format meson: enable the clang-format target 2023-05-29 11:57:08 +00:00
.clang-format-ignore ci: enforce formatting for RADV & ACO 2023-06-16 19:59:52 +00:00
.clang-format-include r300: opt in to clang-format CI enforcement for the compiler 2024-10-15 09:24:02 +00:00
.dir-locals.el
.editorconfig glsl: Fixes ident issue in glsl_parser.yy and update editorconfig for it 2022-12-16 19:02:17 +00:00
.git-blame-ignore-revs freedreno: Add reformatting commits to .git-blame-ignore-revs 2023-09-22 02:07:36 +00:00
.gitattributes gitlab: Highlight .cl as C 2023-11-02 11:37:46 +00:00
.gitignore .gitignore: add .cache folder 2024-05-13 14:32:12 +00:00
.gitlab-ci.yml ci: update the comment on MESA_VK_ABORT_ON_DEVICE_LOSS 2024-11-20 00:37:28 +00:00
.graphqlrc.yml ci/bin: Add utility to find jobs dependencies 2022-08-03 23:10:37 +00:00
.mailmap mailmap: update rohan's primary email address 2024-06-19 09:06:15 +00:00
.mr-label-maker.yml mr-label-maker: add gfxstream 2024-09-26 18:53:58 +00:00
.shellcheckrc ci: move shellcheck options to .shellcheckrc 2024-10-24 22:43:03 +00:00
CODEOWNERS CODEOWNERS: update Imagination maintainers 2024-01-19 10:26:15 +00:00
meson.build meson/megadriver: support various lib suffixes 2024-11-26 20:45:41 +00:00
meson_options.txt meson: Remove experimental from gfxstream driver build 2024-11-19 00:42:52 +00:00
README.rst docs: Match README installation guide with meson.rst 2024-07-27 11:53:53 +00:00
rustfmt.toml mesa: Add rustfmt.toml 2024-11-18 22:29:14 +00:00
VERSION VERSION: bump to 25.0 2024-11-07 17:57:57 +00:00

`Mesa <https://mesa3d.org>`_ - The 3D Graphics Library
======================================================


Source
------

This repository lives at https://gitlab.freedesktop.org/mesa/mesa.
Other repositories are likely forks, and code found there is not supported.


Build & install
---------------

You can find more information in our documentation (`docs/install.rst
<https://docs.mesa3d.org/install.html>`_), but the recommended way is to use
Meson (`docs/meson.rst <https://docs.mesa3d.org/meson.html>`_):

.. code-block:: sh

  $ meson setup build
  $ ninja -C build/
  $ sudo ninja -C build/ install

Support
-------

Many Mesa devs hang on IRC; if you're not sure which channel is
appropriate, you should ask your question on `OFTC's #dri-devel
<irc://irc.oftc.net/dri-devel>`_, someone will redirect you if
necessary.
Remember that not everyone is in the same timezone as you, so it might
take a while before someone qualified sees your question.
To figure out who you're talking to, or which nick to ping for your
question, check out `Who's Who on IRC
<https://dri.freedesktop.org/wiki/WhosWho/>`_.

The next best option is to ask your question in an email to the
mailing lists: `mesa-dev\@lists.freedesktop.org
<https://lists.freedesktop.org/mailman/listinfo/mesa-dev>`_


Bug reports
-----------

If you think something isn't working properly, please file a bug report
(`docs/bugs.rst <https://docs.mesa3d.org/bugs.html>`_).


Contributing
------------

Contributions are welcome, and step-by-step instructions can be found in our
documentation (`docs/submittingpatches.rst
<https://docs.mesa3d.org/submittingpatches.html>`_).

Note that Mesa uses gitlab for patches submission, review and discussions.