mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-21 04:38:09 +02:00
read-only mirror of https://gitlab.freedesktop.org/mesa/mesa
Dynamic rendering allows the client to suspend recording of a render pass and have it continued in a different command buffer. When a suspended command buffer is submitted to a queue, the resuming command buffer must be te next one in submission order. This means we need to be able to "merge" or "stitch" together these command buffers at submit time. To accomplish this, when we suspend a command buffer we emit a BRANCH instruction to finish it. Then at submit time, when we know the resuming job, we patch the BRANCH address with the address of the resuming binning list (bcl). This is very similar to how we execute secondary command buffers inside a render pass. Also, only the last resuming job should flush the binning lists in the bcl since we won't have processed the full binning command list until we have execute the last linked job in the resume list. Since all jobs and command buffers in the suspend/resume chain must be part of the same dynamic render pass, we only need to produce and emit the render command list (rcl) once. Since the way we implement stitching is that we branch from the suspending job into the resuming one, the first job suspending will link into all the resuming jobs necessary to complete the chain, therefore, after the stitching is complete, we only want to submit the first job in the suspend/resume chain, and thus, we only produce and emit the rcl for this one job. Notice as well that suspending only affects the last job recording a dynamic rendering pass (the one that needs the branch so we can resume execution with another job in another command buffer). Resuming affects all jobs in the dynamic render pass, since we won't produce RCLs for them (as only the originating job on the suspend/resume chain will emit the RCL). Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27978> |
||
|---|---|---|
| .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 | ||
| .mr-label-maker.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.