mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 11:48:06 +02:00
read-only mirror of https://gitlab.freedesktop.org/mesa/mesa
This fixes a VCN performance regression introduced by the new BO fence tracking mechanism. VCN can have many queues. The current BO fence tracking mechanism only supports 1 queue per IP, and there is an interest to use all VCN queues via VAAPI. This introduces an alternative BO fence tracking mechanism that is only enabled for VCN, supports unlimited parallel queues, is similar to the previous system, can co-exist with the current queue system, and has no negative impact on CPU overhead as long as it's only used by VCN. Since we want an unlimited number of queues, we can't generate our own sequence numbers for those queues. Instead, each buffer will have a new field "alt_fence", which means an alternative fence. This fence is the last use of that buffer on any VCN queue. If any other queue wants to use that buffer, it has to insert alt_fence as a dependency, and replace alt_fence with the new submitted fence, so that it's always equal to the last use. Only VCN uses and updates alt_fence when an IB is submitted. Other IPs only use alt_fence as a fence dependency. alt_fence is NULL when VCN isn't used, so there is no negative impact on CPU overhead in that case. It uses a C++ template for amdgpu_cs_submit_ib due to different BO loop bodies between normal queues and VCN. Those loop bodies execute for every BO, so they shouldn't have extra code for alt_fence if the queue doesn't update it. Acked-and-Tested-by: Leo Liu <leo.liu@amd.com> Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27627> |
||
|---|---|---|
| .ci-farms | ||
| .ci-farms-disabled | ||
| .github/workflows | ||
| .gitlab | ||
| .gitlab-ci | ||
| android | ||
| bin | ||
| build-support | ||
| docs | ||
| include | ||
| src | ||
| subprojects | ||
| .clang-format | ||
| .clang-format-ignore | ||
| .clang-format-include | ||
| .dir-locals.el | ||
| .editorconfig | ||
| .git-blame-ignore-revs | ||
| .gitattributes | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .graphqlrc.yml | ||
| .mailmap | ||
| 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.