Find a file
Erik Faye-Lund f56443ac84 st/mesa: search for smallest supported sample-count
For MaxColorTextureSamples etc, we need to report the smallest
sample-count that is guaranteed to work. On some GPUs (e.g. Arm's Mali
GPUs), larger pixel-formats can't always support the higher sample
counts, becuse it takes up too much storage in the tile buffers.

From the OpenGL 4.6 spec, section 22.3.2 ("Other internal format
queries"):

  "The maximum value in SAMPLES is guaranteed to be at least the
   lowest of the following:

   * The value of MAX_INTEGER_SAMPLES, if internalformat is a
     signed or unsigned integer format.

   * The value of MAX_DEPTH_TEXTURE_SAMPLES, if internalformat
     is a depth/stencil-renderable format and target is TEXTURE_2D_-
     MULTISAMPLE or TEXTURE_2D_MULTISAMPLE_ARRAY.

   * The value of MAX_COLOR_TEXTURE_SAMPLES, if internalfor-
     mat is a color-renderable format and target is TEXTURE_2D_-
     MULTISAMPLE or TEXTURE_2D_MULTISAMPLE_ARRAY.

   * The value of MAX_SAMPLES"

Since SAMPLES needs to be *at least* MAX_COLOR_TEXTURE_SAMPLES here, we
need to set it to the smallest possible value for any format.

So let's swap the loops here, trying one format at the time. To avoid
doing needless tests, we check from the largest value supported in all
previous formats, omitting sample-counts that has previously been ruled
out.

In addition, we need to check a few larger formats as well, to capture
the limitations above. Since large formats exists in fewer swizzle
variants, we don't need to check as many options as for 8-bit per
component formats.

And since the larger formats are the most likely ones to support lower
sample counts, make sure those formats are listed first.

Reviewed-by: Eric R. Smith <eric.smith@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34455>
2025-06-10 19:22:48 +00:00
.ci-farms ci: Re-enable the Collabora farm 2025-06-09 18:02:25 +00:00
.ci-farms-disabled ci: Re-enable the Collabora farm 2025-06-09 18:02:25 +00:00
.github/workflows add zink to macos ci 2022-11-22 19:04:13 +00:00
.gitlab docs: update gitlab docs urls 2025-02-23 00:31:59 +01:00
.gitlab-ci ci: Skip check-only container jobs for pre-merge 2025-06-10 14:37:14 +00:00
.marge/hooks ci: pipeline_message: reset empty errors 2025-01-07 05:08:10 +00:00
android Revert "android: Link with libc++fs up to SDK 35" 2025-06-03 22:01:01 +00:00
bin docs: crnm: document token usage 2025-06-09 06:06:11 +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 GL_EXT_shader_realtime_clock 2025-06-10 18:40:58 +00:00
include vulkan: dump headers/registry to 1.4.317 2025-06-06 14:38:17 +00:00
licenses licenses: add missing licenses 2025-01-08 20:37:51 +00:00
src st/mesa: search for smallest supported sample-count 2025-06-10 19:22:48 +00:00
subprojects meson: add wrap for libdrm 2025-05-27 16:07:29 +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 r300: opt in to clang-format CI enforcement for the compiler 2024-10-15 09:24:02 +00:00
.dir-locals.el
.editorconfig meson: rename meson_options.txt 2025-02-09 08:13:27 +00:00
.git-blame-ignore-revs ir3: add reformatting commits to .git-blame-ignore-revs 2025-02-27 13:10:53 +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: Use placeholder-job for sanity 2025-06-10 14:37:14 +00:00
.graphqlrc.yml ci/bin: Add utility to find jobs dependencies 2022-08-03 23:10:37 +00:00
.mailmap mailmap: update my name and email 2025-05-07 00:26:45 +00:00
.mr-label-maker.yml mr-label-maker.yml: Add mediafoundation tag and associated directories 2025-05-23 15:30:04 +00:00
.shellcheckrc ci: move shellcheck options to .shellcheckrc 2024-10-24 22:43:03 +00:00
CODEOWNERS docs: update gitlab docs urls 2025-02-23 00:31:59 +01:00
meson.build ci: Add Windows SDK 26100 to msvc image 2025-06-05 22:02:01 +00:00
meson.options mediafoundation: Allow to build multiple codec MFT DLLs in one build pass 2025-06-05 22:02:01 +00:00
README.rst docs: Match README installation guide with meson.rst 2024-07-27 11:53:53 +00:00
rustfmt.toml mesa: Add rustfmt.toml 2024-11-18 22:29:14 +00:00
VERSION VERSION: bump to 25.2 2025-04-16 14:30:14 +02: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://docs.mesa3d.org/install.html>`_), but the recommended way is to use
Meson (`docs/meson.rst <https://docs.mesa3d.org/meson.html>`_):

.. code-block:: sh

  $ meson setup build
  $ ninja -C build/
  $ sudo ninja -C build/ 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://docs.mesa3d.org/bugs.html>`_).


Contributing
------------

Contributions are welcome, and step-by-step instructions can be found in our
documentation (`docs/submittingpatches.rst
<https://docs.mesa3d.org/submittingpatches.html>`_).

Note that Mesa uses gitlab for patches submission, review and discussions.