According to mali_kbase, all Bifrost and Valhall GPUs are affected by issue TSIX_2033. This hardware bug breaks the INTERSECT frame shader mode when forcing clean_tile_writes. What does that mean? The hardware considers a tile "clean" if it has been cleared but not drawn to. Setting clean_tile_write forces the hardware to write back such "clean" tiles to main memory. Bifrost hardware supports frame shaders, which insert a rectangle into every tile according to a configured rule. Frame shaders are used in Panfrost to implement tile reloads (i.e. LOAD_OP_LOAD). Two modes are relevant to the current discussion: ALWAYS, which always inserts a frame shader, and INTERSECT, which tries to only insert where there is geometry. Normally, we use INTERSECT for tile reloads as it is more efficient than ALWAYS-- it allows us to skip reloads of tiles that are discarded and never written back to memory. From a software perspective, Panfrost's current logic is correct: if we clear, we set clean_tile_writes, else we use an INTERSECT frame shader. There is no software interaction between the two. Unfortunately, there is a hardware interaction. The hardware forces clean_tile_writes in certain circumstances when AFBC is used. Ordinarily, this is a hardware implementation detail and invisible to software. Unfortunately, this implicit clean tile write is enough to trigger the hardware bug when using INTERSECT. As such, we need to detect this case and use ALWAYS instead of INTERSECT for correct results. Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com> Cc: mesa-stable Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13205> |
||
---|---|---|
.gitlab/issue_templates | ||
.gitlab-ci | ||
android | ||
bin | ||
build-support | ||
docs | ||
include | ||
src | ||
subprojects | ||
.dir-locals.el | ||
.editorconfig | ||
.gitignore | ||
.gitlab-ci.yml | ||
.mailmap | ||
.travis.yml | ||
CODEOWNERS | ||
README.rst | ||
VERSION | ||
meson.build | ||
meson_options.txt |
README.rst
`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.