Find a file
Roland Scheidegger 0064baeaa5
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
llvmpipe: add bitcasts around fptrunc/fpext operations
We are using different llvm type depending on the cpu supporting f16c
instructions or not.
The reasoning behind this was that we really couldn't do anything with f16
values and had to cast them to some int type anyway, plus IIRC originally
this actually predates llvm even supporting a half type in the first place
(or if it did, at the very least it was not able to do anything useful with
it).
There are now bugs with lavapipe when the cpu doesn't support f16c, since while
we don't expose f16 capabilities in this case, we can still hit f16 conversion
functions for the likes of unpack2x16float and quantizeToF16, and we're just
straight calling fpext/fptrunc functions, not touching our own code for half
conversion (I believe our own code might still be faster as llvm de-vectorizes
it if it's not supported by the cpu, but don't quote me on that - could depend
on llvm version, and also for trunc the rounding is actually different since
our own functions implement rounding according to d3d10 requirements (mostly
used for f16 render targets)).
This only seems to be a problem for vulkan, not GL, since glsl has its own
lowering pass if the half float packing instructions aren't supported by the
driver.
Ideally we'd fix this by just always using llvm half type for f16, however
still not all llvm backends can handle it.
So instead do some hacky bitcasts around the fpext/fptrunc calls with f16,
which works on x86 even when not supporting f16c. Other llvm backends not
really supporting halfs will still crash there as before (albeit it should
be a "cleaner" crash as the IR is now correct...), but at least keeps them
running for more ordinary things such as f16 texture sampling / render
targets (which they wouldn't if we'd use llvm half type everywhere).

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13807
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13865
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37344>
2025-09-20 01:32:46 +00:00
.ci-farms Revert "ci: disable Collabora's farm due to maintenance" 2025-09-08 16:16:52 +00:00
.ci-farms-disabled Revert "ci: disable Collabora's farm due to maintenance" 2025-09-08 16:16:52 +00:00
.github/workflows meson: remove unused osmesa option 2025-06-23 06:42:50 +00:00
.gitlab docs: update gitlab docs urls 2025-02-23 00:31:59 +01:00
.gitlab-ci ci/build-rust: strip rust libs and binaries 2025-09-19 17:28:42 +00:00
.marge/hooks ci: pipeline_message: reset empty errors 2025-01-07 05:08:10 +00:00
android android: Only include libdrm_intel for i915 as iris do not depend on it 2025-09-04 07:53:36 +00:00
bin ci/lava: Update fire for compatibility with Debian 13 2025-09-16 06:16:21 +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 zink: add ZINK_DEBUG=nogeneral to disable unified image layouts 2025-09-19 23:53:02 +00:00
include drm-uapi: Sync panfrost_drm.h 2025-09-19 10:05:43 +00:00
licenses licenses: add missing licenses 2025-01-08 20:37:51 +00:00
src llvmpipe: add bitcasts around fptrunc/fpext operations 2025-09-20 01:32:46 +00:00
subprojects subprojects: fix ignore exception for files under packagefiles/ 2025-08-25 15:55:53 +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 clang-format: Add src/imagination to .clang-format-include 2025-09-17 10:05:18 +00:00
.dir-locals.el
.editorconfig editorconfig: move OpenCL configuration to root 2025-08-30 22:49:08 -07:00
.git-blame-ignore-revs freedreno: Add register renaming to .git-blame-ignore-revs 2025-07-03 12:50:04 +00:00
.gitattributes gitlab: Highlight .cl as C 2023-11-02 11:37:46 +00:00
.gitignore .gitignore: Add KDevelop *.kdev4 2025-07-24 16:12:10 +00:00
.gitlab-ci.yml ci: Uprev ci-templates to pull in new helpers 2025-09-16 06:16:21 +00:00
.graphqlrc.yml
.mailmap mailmap: Update for Dylan Baker 2025-09-16 19:45:15 +00:00
.mr-label-maker.yml mr-label-maker.yml: remove remaining osmesa occurrences 2025-06-23 06:42:50 +00:00
.shellcheckrc ci: move shellcheck options to .shellcheckrc 2024-10-24 22:43:03 +00:00
CODEOWNERS intel: update code owners 2025-08-31 15:38:27 +00:00
meson.build ci: use MSRV for build-for-tests jobs and recent version in build-only jobs and CI components 2025-09-19 17:28:42 +00:00
meson.options pvr, pco: usc program (pre-)generation boilerplate 2025-09-16 18:26:09 +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.3 2025-07-16 13:50:24 +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://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.