nix-community / nixGL

A wrapper tool for nix OpenGL application [maintainer=@guibou]
628 stars 76 forks source link

error: MESA-LOADER: failed to open i965 #147

Closed blinry closed 7 months ago

blinry commented 7 months ago

I'm trying to use nixGLIntel under Arch Linux on a Thinkpad X1 Yoga Gen 5 (which seems to have a Intel UHD Graphics 620 graphics card).

Here's a flake describing my setup:

{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs";
  inputs.nixgl.url = "github:guibou/nixGL";
  inputs.flake-utils.url = "github:numtide/flake-utils";

  outputs = { self, nixpkgs, nixgl, flake-utils }:
    flake-utils.lib.eachDefaultSystem (system: {
      devShells.default =
        let
          pkgs = import nixpkgs {
            inherit system;
            overlays = [ nixgl.overlay ];
          };
        in
        pkgs.mkShell {
          nativeBuildInputs = [ pkgs.nixgl.nixGLIntel pkgs.blender ];
        };
    });
}

Then, after nix develop, I run nixGLIntel blender. Here's the error message:

libGL error: MESA-LOADER: failed to open i965: /nix/store/252bgdkwhqkxkwqi5z5l7zi6in0bc4ld-mes
a-23.1.9-drivers/lib/dri/i965_dri.so: cannot open shared object file: No such file or directory (search paths /nix/store/0lfnrz6nq5myv787cih78knzaqy9z9fc-mesa-23.1.9-drivers/lib/dri:/nix/store/252bgdkwhqkxkwqi5z5l7zi6in0bc4ld-mesa-23.1.9-drivers/lib/dri, suffix _dri)
libGL error: failed to load driver: i965
libGL error: MESA-LOADER: failed to open i965: /nix/store/252bgdkwhqkxkwqi5z5l7zi6in0bc4ld-mesa-23.1.9-drivers/lib/dri/i965_dri.so: cannot open shared object file: No such file or directory (search paths /nix/store/0lfnrz6nq5myv787cih78knzaqy9z9fc-mesa-23.1.9-drivers/lib/dri:/nix/store/252bgdkwhqkxkwqi5z5l7zi6in0bc4ld-mesa-23.1.9-drivers/lib/dri, suffix _dri)
libGL error: failed to load driver: i965

The directory /nix/store/252bgdkwhqkxkwqi5z5l7zi6in0bc4ld-mesa-23.1.9-drivers/lib/dri/ indeed does not contain a i965_dri.so, but a i915_dri.so.

How could I approach this problem or find out more?

blinry commented 7 months ago

I tried creating a symlink from /nix/store/252bgdkwhqkxkwqi5z5l7zi6in0bc4ld-mesa-23.1.9-drivers/lib/dri/i965_dri.so to i915_dri.so (which itself is a symlink to crocus_dri.so, but then the error message is:

libGL error: MESA-LOADER: failed to open i965: /nix/store/252bgdkwhqkxkwqi5z5l7zi6in0bc4ld-mesa-23.1.9-drivers/lib/dri/i965_dri.so: wrong ELF class: ELFCLASS32 (search paths /nix/store/0lfnrz6nq5myv787cih78knzaqy9z9fc-mesa-23.1.9-drivers/lib/dri:/nix/store/252bgdkwhqkxkwqi5z5l7zi6in0bc4ld-mesa-23.1.9-drivers/lib/dri, suffix _dri)

And indeed, crocus_dri.so is an "ELF 32-bit LSB shared object"...

blinry commented 7 months ago

I should mention that Blender starts, but renders extremely slowly.

blinry commented 7 months ago

I found my issue. I had set the environment variable MESA_LOADER_DRIVER_OVERRIDE=i965 several years ago, and then forgot about it. After removing that (and uninstalling xf86-video-intel, and switching from mesa-amber to mesa), nixGL now works perfectly! <3