Find a file
Paulo Zanoni 4e5979b5a2 anv/sparse: flush the tile cache when resolving sparse images
Consider the following program:
 - Uses a multi-sampled image as the color attachment.
 - Draws simple geometry at the color attachment.
 - Uses the (non-multi-sampled) swapchain image as the resolve image.
 - Presents the result.

If the color attachment image (the multi-sampled one) is a sparse
image and it's fully bound, everything works and this patch is not
required.

If the image is partially bound (or just completely unbound), without
this patch the unbound area of the image that ends up being displayed
on the screen is not completely black, and it should be completely
black due to the fact that we claim to support
residencyNonResidentStrict (which is required by vkd3d for DX12).

On DG2, what ends up being displayed in the swapchain image is
actually the whole image as if it was completely bound. On TGL the
unbound area partially displays the geometry that was supposed to be
drawn, but the background is a different color: it's a weird corrupted
image. On both platforms the unbound areas should all be fully black.

This patch applies the proper flushing so that we get the results we
should have.

The bug fixed by this patch is not caught by dEQP or anything our CI
runs (dEQP does have some checks for residencynonResidentStrict
correctness, but none that catch this issue in particular). I was able
to catch this with my own sample program. Using INTEL_DEBUG=stall also
makes the problem go away.

If we had a way to track which images are fully bound we would be able
to avoid this flush. I had code for that in the earliest versions of
sparse before xe.ko had support for gpuva, but it requires maintaining
a bunch of lists, so I'm not sure that's actually worth it.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27306>
2024-05-15 08:00:16 +00:00
.ci-farms Revert "ci: disable Collabora's farm due to maintance" 2024-05-13 15:02:49 +02:00
.ci-farms-disabled Revert "ci: disable Collabora's farm due to maintance" 2024-05-13 15:02:49 +02:00
.github/workflows add zink to macos ci 2022-11-22 19:04:13 +00:00
.gitlab gitlab: make commit more commit-like formatted 2023-11-09 17:30:07 +00:00
.gitlab-ci ci: bump VVL to v1.3.285 2024-05-14 18:09:28 +00:00
android nouveau: import libdrm_nouveau 2024-03-13 15:21:07 +00:00
bin ci_run_n_monitor: explain how to pass multiple targets without having to use regexes 2024-03-29 19:23:24 +00:00
build-support meson: move tsan-blacklist.txt to build-support with the other build support files 2024-05-01 07:05:12 +00:00
docs docs/features: add VK_EXT_legacy_dithering 2024-05-15 04:45:55 +00:00
include vulkan: Update XML and headers to 1.3.285. 2024-05-14 09:30:40 +00:00
src anv/sparse: flush the tile cache when resolving sparse images 2024-05-15 08:00:16 +00:00
subprojects meson: Update proc_macro2 meson.build patch 2024-05-10 20:07:01 +00:00
.clang-format meson: enable the clang-format target 2023-05-29 11:57:08 +00:00
.clang-format-ignore ci: enforce formatting for RADV & ACO 2023-06-16 19:59:52 +00:00
.clang-format-include teflon: Initial commit 2024-01-24 10:02:10 +00:00
.dir-locals.el dir-locals.el: Adds White Space support 2016-11-14 19:17:49 +02:00
.editorconfig glsl: Fixes ident issue in glsl_parser.yy and update editorconfig for it 2022-12-16 19:02:17 +00:00
.git-blame-ignore-revs freedreno: Add reformatting commits to .git-blame-ignore-revs 2023-09-22 02:07:36 +00:00
.gitattributes gitlab: Highlight .cl as C 2023-11-02 11:37:46 +00:00
.gitignore .gitignore: add .cache folder 2024-05-13 14:32:12 +00:00
.gitlab-ci.yml ci: identify and label S3 buckets 2024-05-07 22:08:07 +00:00
.graphqlrc.yml ci/bin: Add utility to find jobs dependencies 2022-08-03 23:10:37 +00:00
.mailmap mailmap: add Freya Gentz entry 2024-05-11 19:43:47 +00:00
.mr-label-maker.yml mr-label-maker: mark *-vkd3d.txt files as CI results expectations files 2024-05-14 11:46:41 +00:00
CODEOWNERS CODEOWNERS: update Imagination maintainers 2024-01-19 10:26:15 +00:00
meson.build meson: disallow Venus debug + LTO build via GCC 2024-05-08 19:58:24 +00:00
meson_options.txt meson: implement split-debug 2024-04-23 18:31:39 +00:00
README.rst docs: promote #dri-devel on oftc over freenode 2021-05-24 09:21:48 +00:00
VERSION VERSION: bump to 20.2 2024-04-24 19:51:59 +00:00

`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.