Mesa: Difference between revisions
imported>PedroHLC m Help users find the default drivers |
Nekowinston (talk | contribs) amend the Intel Xe note for Mesa >25.1.0 |
||
(5 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
[https://www.mesa3d.org/ Mesa] is an open source implementation of several graphics APIs including OpenGL and Vulkan. | [https://www.mesa3d.org/ Mesa] is an open source implementation of several graphics APIs including OpenGL and Vulkan. | ||
You can change the Mesa version using the <code>hardware.graphics.package</code> option as of NixOS 25.05. | |||
== Enabling Vulkan Layers == | == Enabling Vulkan Layers == | ||
{{outdated|Vulkan layers are enabled by default since we merged {{pull|196310}}. However, this is a good example on how to properly override mesa's package attributes.}} | |||
Vulkan Layers are not enabled by default in [https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/mesa/default.nix Nixpkgs]. You can override the existing Mesa packages and specify them in <code>config.hardware.opengl</code>. | Vulkan Layers are not enabled by default in [https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/mesa/default.nix Nixpkgs]. You can override the existing Mesa packages and specify them in <code>config.hardware.opengl</code>. | ||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
Line 56: | Line 60: | ||
== Default drivers == | == Default drivers == | ||
In case you wonder where does <code>["auto"]</code> in mesa's attributes lead you, this might be another way to see them (for 22. | In case you wonder where does <code>["auto"]</code> in mesa's attributes lead you, this might be another way to see them (for 22.3.0[https://gitlab.freedesktop.org/mesa/mesa/-/blob/mesa-22.3.0/meson.build]): | ||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
, galliumDrivers ? | , galliumDrivers ? | ||
Line 62: | Line 66: | ||
if stdenv.isLinux then | if stdenv.isLinux then | ||
if stdenv.isi686 || stdenv.isx86_64 then ["r300" "r600" "radeonsi" "nouveau" "virgl" "svga" "swrast" "iris" "crocus" "i915"] | if stdenv.isi686 || stdenv.isx86_64 then ["r300" "r600" "radeonsi" "nouveau" "virgl" "svga" "swrast" "iris" "crocus" "i915"] | ||
else if stdenv.isAarch64 then ["v3d" "vc4" "freedreno" "etnaviv" "nouveau" "tegra" "virgl" "lima" "panfrost" "swrast"] | else if stdenv.isAarch64 then ["v3d" "vc4" "freedreno" "etnaviv" "nouveau" "svga" "tegra" "virgl" "lima" "panfrost" "swrast"] | ||
else throw "Unsupported platform: this derivation only supports i686/x86_64/aarch64" | else throw "Unsupported platform: this derivation only supports i686/x86_64/aarch64" | ||
else if stdenv.isDarwin then ["swrast"] | else if stdenv.isDarwin then ["swrast"] | ||
Line 69: | Line 73: | ||
# Search for `_vulkan_drivers.contains('auto')` in meson.build | # Search for `_vulkan_drivers.contains('auto')` in meson.build | ||
if stdenv.isLinux then | if stdenv.isLinux then | ||
if stdenv.isi686 || stdenv.isx86_64 then ["amd" "intel" "swrast"] | if stdenv.isi686 || stdenv.isx86_64 then ["amd" "intel" "intel_hasvk" "swrast"] | ||
else if stdenv.isAarch64 || stdenv.isArch32 then ["swrast"] | else if stdenv.isAarch64 || stdenv.isArch32 then ["swrast"] | ||
else throw "Unsupported platform: this derivation only supports i686/x86_64/aarch64" | else throw "Unsupported platform: this derivation only supports i686/x86_64/aarch64" | ||
Line 75: | Line 79: | ||
else throw "Unsupported platform: this derivation only supports Linux/Darwin" | else throw "Unsupported platform: this derivation only supports Linux/Darwin" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Intel Xe Driver Warning Spam == | |||
If you're using the Intel Xe driver you may end up getting a lot of <code>MESA: warning: Support for this platform is experimental with Xe KMD, bug reports may be ignored.</code> messages spam in your console when running various tools. You can disable this spam by setting the [https://docs.mesa3d.org/envvars.html MESA_LOG_FILE] environment variable to some file location (like <code>/dev/null</code>). To make the change permanent you could add it to your <code>environment.variables</code> attribute set in your nix config. The downside to this approach is that you won't see legitimate Mesa warnings or errors on your console afterwards. | |||
Starting with [https://docs.mesa3d.org/relnotes/25.1.0.html Mesa 25.1.0], you can suppress the warning with <code>INTEL_XE_IGNORE_EXPERIMENTAL_WARNING=1</code>. | |||
[[Category: Video]] |