Problema con wine y aceleración gráfica

Iniciado por SnakeDrak, 9 Mayo 2010, 21:26 PM

0 Miembros y 1 Visitante están viendo este tema.

SnakeDrak

Hola,

Tengo debian con AMD64, no tengo problemas en la aceleración gráfica exepto a la hora de ejecutar alguna aplicación de windows con wine.

Un poco de información, lscpi -v (para la gráfica):

00:02.0 VGA compatible controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (rev 03) (prog-if 00 [VGA controller])
       Subsystem: Hewlett-Packard Company Presario C700
       Flags: bus master, fast devsel, latency 0, IRQ 26
       Memory at 51000000 (64-bit, non-prefetchable) [size=1M]
       Memory at 40000000 (64-bit, prefetchable) [size=256M]
       I/O ports at 30d0 [size=8]
       Expansion ROM at <unassigned> [disabled]
       Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
       Capabilities: [d0] Power Management version 3
       Kernel driver in use: i915

00:02.1 Display controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (rev 03)
       Subsystem: Hewlett-Packard Company Presario C700
       Flags: bus master, fast devsel, latency 0
       Memory at 51100000 (64-bit, non-prefetchable) [size=1M]
       Capabilities: [d0] Power Management version 3


Entonces intento ejecutar (utilizando las lib32 que vienen en el paquete ia32-libs) un exe con wine pero aunque se ve (a diferencia de utilizar las de 64 que entonces da error) va super lento.. es decir como si no tuviese la aceleración:

Citar
**@**:~$ LIBGL_DRIVERS_PATH=/usr/lib32/dri wine ejecutable.exe
err:module:load_builtin_dll failed to load .so lib for builtin L"winemp3.acm": libmpg123.so.0: no se puede abrir el fichero del objeto compartido: No existe el fichero o el directorio
fixme:dsalsa:IDsDriverBufferImpl_SetVolumePan (0x179638,0x179558): stub
fixme:dsalsa:IDsDriverBufferImpl_SetVolumePan (0x179638,0x179558): stub
err:winediag:X11DRV_WineGL_InitOpenglInfo The Mesa OpenGL driver is using software rendering, most likely your OpenGL drivers haven't been installed correctly
fixme:d3d_caps:wined3d_guess_card No card selector available for GL vendor 4 and card vendor 0000.
fixme:win:EnumDisplayDevicesW ((null),0,0x32f44c,0x00000000), stub!
fixme:d3d:swapchain_init Add OpenGL context recreation support to context_validate_onscreen_formats
fixme:d3d_surface:surface_download_data Read back converted textures unsupported, format=WINED3DFMT_B8G8R8X8_UNORM
fixme:d3d_surface:surface_download_data Read back converted textures unsupported, format=WINED3DFMT_B8G8R8X8_UNORM
fixme:d3d_surface:surface_download_data Read back converted textures unsupported, format=WINED3DFMT_B8G8R8X8_UNORM
fixme:dinput:SysMouseAImpl_Acquire Clipping cursor to (240,0)-(1046,625)
fixme:ddraw:IDirectDrawImpl_WaitForVerticalBlank (0x1831a0)->(1,(nil)): Stub

Entonces para ver si es que hay algún problema con la aceleración de 32 bits hago lo siguiente:
Citar
**@**:~$ LIBGL_DRIVERS_PATH=/usr/lib32/dri LIBGL_DEBUG=verbose glxinfo | grep direct
libGL: OpenDriver: trying /usr/lib32/dri/tls/i965_dri.so
libGL: OpenDriver: trying /usr/lib32/dri/i965_dri.so
libGL error: dlopen /usr/lib32/dri/i965_dri.so failed (/usr/lib32/dri/i965_dri.so: wrong ELF class: ELFCLASS32)
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL: OpenDriver: trying /usr/lib32/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib32/dri/swrast_dri.so
libGL error: dlopen /usr/lib32/dri/swrast_dri.so failed (/usr/lib32/dri/swrast_dri.so: wrong ELF class: ELFCLASS32)
libGL error: unable to load driver: swrast_dri.so
libGL error: reverting to indirect rendering
direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose)

Como pueden ver si que hay problemas, he intentado también bajando mesa-dri de i386 y copiando los libs a lib32/dri pero dan el mismo error y ya no sé que más hacer.

Espero que alguien pueda ayudarme.

Saludos y gracias.

Festor

Al parecer es un problema del controlador de tu tarjeta gráfica...

Échale un vistazo a esto a ver si te ayuda:

http://wiki.winehq.org/3DDriverIssues

Y de paso... ¿cual es el error que te da si usas las librerías de /usr/lib64? ¿has probado a actualizar el controlador de la tarjeta gráfica?

SnakeDrak

#2
Hola Festor,

Como mencioné, con las lib64 no me da errores, es decir:

Citar
**@**:~$ glxinfo | grep direct
direct rendering: Yes

Como puedes ver no hay ningún problema, pero si intento ejecutar una aplicación de 32 con wine sí que los da:

Citar
**@**:~$ wine ejecutable.exe
err:module:load_builtin_dll failed to load .so lib for builtin L"winemp3.acm": libmpg123.so.0: no se puede abrir el fichero del objeto compartido: No existe el fichero o el directorio
fixme:dsalsa:IDsDriverBufferImpl_SetVolumePan (0x178b18,0x178a38): stub
fixme:dsalsa:IDsDriverBufferImpl_SetVolumePan (0x178b18,0x178a38): stub
err:winediag:X11DRV_WineGL_InitOpenglInfo Direct rendering is disabled, most likely your OpenGL drivers haven't been installed correctly
fixme:d3d_caps:wined3d_guess_card No card selector available for GL vendor 3 and card vendor 8086.
err:d3d:match_fbo_tex_update FBO status 0
fixme:d3d:check_fbo_compat Format WINED3DFMT_B8G8R8_UNORM with rendertarget flag is not supported as FBO color attachment, and no fallback specified.
fixme:d3d:check_fbo_compat Format WINED3DFMT_B8G8R8A8_UNORM with rendertarget flag is not supported as FBO color attachment, and no fallback specified.
fixme:d3d:check_fbo_compat Format WINED3DFMT_B8G8R8X8_UNORM with rendertarget flag is not supported as FBO color attachment, and no fallback specified.
fixme:d3d:check_fbo_compat Format WINED3DFMT_B5G6R5_UNORM rtInternal format is not supported as FBO color attachment.
fixme:d3d:check_fbo_compat Format WINED3DFMT_R16G16_UNORM rtInternal format is not supported as FBO color attachment.
fixme:d3d:check_fbo_compat Format WINED3DFMT_R16G16B16A16_UNORM with rendertarget flag is not supported as FBO color attachment, and no fallback specified.
fixme:win:EnumDisplayDevicesW ((null),0,0x32f44c,0x00000000), stub!
fixme:d3d:swapchain_init Add OpenGL context recreation support to context_validate_onscreen_formats
fixme:d3d:debug_fbostatus Unrecognied FBO status 0x00000000
fixme:d3d:context_check_fbo_status FBO status unrecognized (0)
err:d3d:context_check_fbo_status FBO 0 is incomplete, driver bug?
fixme:d3d:debug_fbostatus Unrecognied FBO status 0x00000000
fixme:d3d:context_check_fbo_status FBO status unrecognized (0)
err:d3d:context_check_fbo_status FBO 0 is incomplete, driver bug?


Lo rojo se repite infinitas veces, entonces buscando un poco por google encontré que hay que usar las librerías de 32 bits, y eso hice utilizar las de lib32 del ia32-libs, el problema viene que la aceleración gráfica no funciona.

El controlador creo que funciona sin problemas ya que los instalé dirigidos y todo está correcto, solo tengo ese problema.

Por si sirve de ayuda con 64 bits al ejecutar glxgears:
Citar
**@**:~$ glxgears
2434 frames in 5.0 seconds = 486.664 FPS
2391 frames in 5.0 seconds = 477.847 FPS
2380 frames in 5.0 seconds = 475.870 FPS

Pero lo extraño viene ahora, teóricamente con 32 bits debería fallar, en cambio va hasta a más fps por segundo:
Citar
**@**:~$ LIBGL_DRIVERS_PATH=/usr/lib32/dri glxgears
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
3061 frames in 5.0 seconds = 610.347 FPS
3100 frames in 5.0 seconds = 618.240 FPS
3100 frames in 5.0 seconds = 619.064 FPS
3060 frames in 5.0 seconds = 609.543 FPS
3060 frames in 5.0 seconds = 609.760 FPS

La verdad es que estoy un poco perdido, miraré el controlador porque creo que tienes razón.

Bueno aquí te dejo las salidas, no tengo aceleración con 64 bits:
Citar
trace:wgl:X11DRV_WineGL_InitOpenglInfo GL version             : 1.4 (2.1 Mesa 7.7.1).
trace:wgl:X11DRV_WineGL_InitOpenglInfo GL renderer            : Mesa DRI Intel(R) 965GM GEM 20091221 2009Q4 .
trace:wgl:X11DRV_WineGL_InitOpenglInfo GLX version            : 1.2.
trace:wgl:X11DRV_WineGL_InitOpenglInfo Server GLX version     : 1.2.
trace:wgl:X11DRV_WineGL_InitOpenglInfo Server GLX vendor:     : SGI.
trace:wgl:X11DRV_WineGL_InitOpenglInfo Client GLX version     : 1.4.
trace:wgl:X11DRV_WineGL_InitOpenglInfo Client GLX vendor:     : SGI.
trace:wgl:X11DRV_WineGL_InitOpenglInfo Direct rendering enabled: False

Y en cambio esto es lo raro, aquí con las lib32 dice que si tengo aceleración (porque no utiliza las de Mesa):
Citar
trace:wgl:X11DRV_WineGL_InitOpenglInfo GL version             : 2.1 Mesa 7.5.1.
trace:wgl:X11DRV_WineGL_InitOpenglInfo GL renderer            : Software Rasterizer.
trace:wgl:X11DRV_WineGL_InitOpenglInfo GLX version            : 1.2.
trace:wgl:X11DRV_WineGL_InitOpenglInfo Server GLX version     : 1.2.
trace:wgl:X11DRV_WineGL_InitOpenglInfo Server GLX vendor:     : SGI.
trace:wgl:X11DRV_WineGL_InitOpenglInfo Client GLX version     : 1.4.
trace:wgl:X11DRV_WineGL_InitOpenglInfo Client GLX vendor:     : SGI.
trace:wgl:X11DRV_WineGL_InitOpenglInfo Direct rendering enabled: True

Ahora ya me perdí del todo.

Saludos y gracias por tu ayuda!

Festor

Cita de: SnakeDrak en 10 Mayo 2010, 16:03 PM
El controlador creo que funciona sin problemas ya que los instalé dirigidos y todo está correcto, solo tengo ese problema.

No dije que el controlador funcionara mal, sólo te comenté si habías actualizado el controlador ya que según lei en Internet parece que mejora ligeramente el rendimiento en las aplicaciones emuladas vía wine.

Citar
Por si sirve de ayuda con 64 bits al ejecutar glxgears:

Pero lo extraño viene ahora, teóricamente con 32 bits debería fallar, en cambio va hasta a más fps por segundo:

No soy ningún experto en programación 3D pero por lo que tengo entendido glxgears no es de las mejores fuentes de información para comprobar el funcionamiento del controlador de tu tarjeta gráfica.

Lo mejor es probar directamente un videojuego o una aplicación 3D.

Citar
La verdad es que estoy un poco perdido, miraré el controlador porque creo que tienes razón.

No sé que rama de Debian usas, pero si usas Debian Testing puedes probar a actualizar el controlador a su versión experimental.

http://packages.debian.org/experimental/xserver-xorg-video-intel

Digo esto porque, en teoría, no deberías tener problemas ya que parece que tienen la misma versión del xserver como dependencia... pero aun así ten presente que no está en la rama experimental por simple decoración...  :-\

En cambio si usas Debian Stable te recomendaría que actualizaras todo el sistema a Debian Testing si te interesa actualizar el controlador.

SnakeDrak

Hola,

Tenía los drivers de sid pero he instalado los de experimental y aún da el mismo problema con 64:

Citar
trace:wgl:X11DRV_WineGL_InitOpenglInfo Direct rendering enabled: False

Parece ser problema de la configuración de wine ya que con glxinfo me aparece que tengo aceleración gráfica. Continuaré buscando.

Gracias por tu ayuda.

Saludos.

Foxy Rider

Probaste cambiar el modo de rendering ? en winetricks tenés el atajo para cambiar estos modos en caso de problemas

Citar
  orm=backbuffer Registry tweak: OffscreenRenderingMode=backbuffer
  orm=fbo        Registry tweak: OffscreenRenderingMode=fbo (default)
  orm=pbuffer    Registry tweak: OffscreenRenderingMode=pbuffer

en mi caso fbo me daba problemas con algunas aplicaciones y con backbuffer no tuve más dramas ...

CitarNo soy ningún experto en programación 3D pero por lo que tengo entendido glxgears no es de las mejores fuentes de información para comprobar el funcionamiento del controlador de tu tarjeta gráfica.
Citartrace:wgl:X11DRV_WineGL_InitOpenglInfo GL renderer            : Software Rasterizer.

Correcto, glxgears no es lo mejor ... con revisar glxinfo alcanza, ya que te da la salida de glGetString()  (con GL_VENDOR,GL_RENDERER y GL_VERSION)
el mantra de siempre ...

Código (bash) [Seleccionar]
glxinfo | grep OpenGL

Respecto al software rasterizer ... eso no es tener aceleración, es un raster por software, aunque sea direct rendering ... 
la respuesta corta es que no te dice si es por hard o no, sino quien se encarga de dibujar ... that's all ....
en tu caso luce ser indirect rendering por hardware (usando las libs de 64)

Saludos.

P.S: el problema solo está en los "err:" de la salida de wine

SnakeDrak

#6
Hola Alex,

Sí, efectivamente usando las lib64 es por hardware.

El Software Rasterizer es solo con las lib32 porque no encuentra las de MESA DRI (supongo), en cambio con glxinfo (a las de 32) sí que detecta el mesa dri:

Citar
**@**:~$ LIBGL_DRIVERS_PATH=/usr/lib32/dri glxinfo | grep OpenGL
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Intel(R) 965GM GEM 20091221 2009Q4
OpenGL version string: 1.4 (2.1 Mesa 7.7.1)
OpenGL extensions:

Y por si sirve de utilidad, con las de 64:

Citar
**@B**:~$ glxinfo | grep OpenGL
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Intel(R) 965GM GEM 20091221 2009Q4
OpenGL version string: 2.1 Mesa 7.7.1
OpenGL shading language version string: 1.20
OpenGL extensions:

He probado cambiando el modo de rendering, en las lib32 no cambia nada pero en lib64 utilizando backbuffer ahora sí funciona (aunque tarda mucho en encenderse, unos 3-4 minutos), el único problema es que sigue yendo algo lento (más rápido que lib32 al menos). Pero aún me sigue mostrando:

Citar
err:winediag:X11DRV_WineGL_InitOpenglInfo Direct rendering is disabled, most likely your OpenGL drivers haven't been installed correctly

Lo extraño es que solo me está dando problemas en wine :S

Saludos!

Foxy Rider

Fijate este post de acá -> http://bbs.archlinux.org/viewtopic.php?id=44267

No conozco mucho como viene la mano con el tema de las intel y sus drivers, pero usando el DRI de 64 estás usando el hardware, el tema es el método de render, quizá es un problema en la config de Xorg/DRI, fijate ese enlace ... me huele a que es ese problema ... (que fallbackea a indirect rendering por no poder hacer direct rendering)

Saludos.

EvilGoblin

sera medio tonta mi pregunta, pero no veo el nombre tu placa solo la integrada

que placa estas usando?
Experimental Serial Lain [Linux User]