mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 08:08:06 +02:00
read-only mirror of https://gitlab.freedesktop.org/mesa/mesa
Until now we have lived without a refcount mechanism in the driver because in Vulkan the user is responsible for handling the life span of memory allocations for all Vulkan objects, however, imported BOs are tricky because the kernel doesn't refcount so user-space needs to make sure that: 1. When importing a BO into the same device used to create it (self-importing) it does not double free the same BO. 2. Frees imported BOs that were not allocated through the same device. Our initial implementation always freed BOs when requested, so we handled 2) correctly but not 1) on drm and we would double-free self-imported BOs because kernel doesn't return a unique gem_handle on each import. Beside this the submit ioctl checks for duplicates in the BO list and returns an error if there is one. This fixes the problem for good by adding refcounts to BOs so that self-imported BOs have a refcnt > 1 and are only freed when all references are freed. KGSL on the other hand does not have the same problems, at least not with ION buffers which are used for exportable BOs on pre 5.10 android kernels. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5936 Fixes CTS tests: dEQP-VK.drm_format_modifiers.export_import.* Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15031> |
||
|---|---|---|
| .gitlab/issue_templates | ||
| .gitlab-ci | ||
| android | ||
| bin | ||
| build-support | ||
| docs | ||
| include | ||
| src | ||
| subprojects | ||
| .dir-locals.el | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .mailmap | ||
| .travis.yml | ||
| CODEOWNERS | ||
| meson.build | ||
| meson_options.txt | ||
| README.rst | ||
| VERSION | ||
`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://mesa3d.org/install.html>`_), but the recommended way is to use Meson (`docs/meson.rst <https://mesa3d.org/meson.html>`_): .. code-block:: sh $ mkdir build $ cd build $ meson .. $ sudo ninja 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://mesa3d.org/bugs.html>`_). Contributing ------------ Contributions are welcome, and step-by-step instructions can be found in our documentation (`docs/submittingpatches.rst <https://mesa3d.org/submittingpatches.html>`_). Note that Mesa uses gitlab for patches submission, review and discussions.