libGL error: failed to open drm device: Permission denied

Jacek Konieczny jajcus at jajcus.net
Sat Dec 18 11:04:47 CET 2010


Cześć,

Ja z nowu z problemami z 3D na moim intelu…

Kupiłem sobie Humble Indie Bundle 2 – zestaw pięciu gier. Najpierw miłe
zaskoczenie – z tych pięciu gier 4 działają w miarę poprawnie. Nieźle
jak na OpenGL na Intelu w PLD ;-) Niestety, zamiast piątej (Braid)
miałem tylko czarny ekran… Google podpowiedziało tyle, że mało u kogo to
działało od początku, ale niektórym pomógł upgrade…

No to zacząłem robić upgrade. Mesa-*, xorg-*, kernel. Najpierw do
th-main, potem th-ready… doszedłem do tego, że już mi żadna z gier nie
działała – zero akceleracji.

Aktualnie zainstalowany zestaw to:
  Mesa-dri-driver-intel-i915-7.9-8.i686
  Mesa-dri-driver-intel-i965-7.9-8.i686
  Mesa-dri-driver-swrast-7.9-8.i686
  Mesa-libGL-7.9-8.i686
  Mesa-libGLU-7.9-8.i686
  Mesa-utils-7.8.2-1.i686
  kernel-drm-2.6.36.2-1.i686
  libdrm-2.4.23-1.i686
  xorg-driver-video-intel-2.13.0-3.i686
  xorg-xserver-libdri-1.9.3-1.i686

A problem objawia się tak:
  $ LIBGL_DEBUG=yes glxinfo  | grep -Ei 'direct|renderer'
  libGL error: failed to open drm device: Permission denied
  direct rendering: Yes
  OpenGL renderer string: Software Rasterizer

Najpierw powód wydał się oczywisty:

  $ ls -l /dev/dri
  total 0
  crw-------+ 1 root video 226,  0 Dec 18 10:01 card0
  crw-rw----  1 root video 226, 64 Dec 18 10:01 controlD64

Jednak po 'chmod a+rw /dev/card0' to samo…

  $ LIBGL_DEBUG=yes glxinfo  | grep -Ei 'direct|renderer'
  libGL error: failed to open drm device: Permission denied
  direct rendering: Yes
  OpenGL renderer string: Software Rasterizer
  [jajcus w lolek ~]$ ls -l /dev/dri
  total 0
  crw-rw-rw-+ 1 root video 226,  0 Dec 18 10:01 card0
  crw-rw-rw-  1 root video 226, 64 Dec 18 10:01 controlD64

Już myślałem, że coś w kernelu nie pozwala userowi z DRM korzystać, ale
zastanowił  mnie ten '+' w powyższym…

  $ getfacl /dev/dri/card0 
  getfacl: Removing leading '/' from absolute path names
  # file: dev/dri/card0
  # owner: root
  # group: video
  user::rw-
  group::---
  mask::rw-
  other::rw-

WTF?!

  # setfacl -m group::rw- /dev/dri/card0 
  $ LIBGL_DEBUG=yes glxinfo  | grep -Ei 'direct|renderer'
  direct rendering: Yes
  OpenGL renderer string: Mesa DRI Intel(R) 945GM GEM 20100330 DEVELOPMENT
  x86/MMX/SSE2

Czyli jakby naprawione (ciekawe czy gry będą działać…).

Pytania:

1. Czemu po upgrade, bez żadnej zmiany konfiguracji, /dev/dri/card0 ma
prawa dostępu ustawione 600 zamiast 660/666 (jak było przed upgrade)?
2. Po cholerę coś jeszcze ACL ustawia dla tego urządzenia?
3. Dlaczego ACL są ustawione tak, żeby akurat grupa video _nie miała_
dostępu do DRM?
4. Który z pakietów jest za to odpowiedzialny?

Pozdrowienia,
        Jacek

P.S.

Po poprawieniu ACL znowu działają cztery gry, jednak Braid (według
niektórych najciekawsza) nie:

$ ./braid -windowed
i915_program_error: Exceeded max nr indirect texture lookups (8 out of 4)
i915_program_error: Exceeded max nr indirect texture lookups (8 out of 4)
i915_program_error: Exceeded max ALU instructions (83 out of 64)



More information about the pld-devel-pl mailing list