mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
read-only mirror of https://gitlab.freedesktop.org/mesa/mesa
The device->using_sparse variable is only used at cmd_buffer_barrier() to decide if we need to apply the heavier-weight flushes that are only applicable to sparse resources. The big problem here is that we need to apply the flushes to the non-image and non-buffer memory barriers, so we were trying to limit those only to applications that ever submit a sparse resource to the sparse queue. The reason why we were applying this only to devices that ever submitted sparse resources is that dxvk games have this thing where during startup they create and then delete tiny sparse resources, so switching device->using_sparse to true at resource creation would make basically every dxvk game start applying the heavier-weight workaround. The problem with all that is that even if an application creates a sparse resource but doesn't ever bind them, the resource should still behave as an unbound resource (because they are bound with a NULL bind), so the flushes affecting them should happen. This case is exercised by vkd3d-proton/test_buffer_feedback_instructions_sm51. In order to satisfy all the above cases and only really apply the heavier-weight flushes to applications actually using sparse resources, let's just count the number of sparse resources that currently exist and then apply the workaround only if it's not zero. That covers the dxvk case since dxvk deletes the resources as soon as they create, so num_sparse_resources goes back to 0. Testcase: vkd3d-proton/test_buffer_feedback_instructions_sm51 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10960 Fixes: |
||
|---|---|---|
| .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 | ||
| .pick_status.json | ||
| 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.