Announcement

Collapse
No announcement yet.

On 64bit ubuntu only 64bit 3D working, 32bits fail

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • On 64bit ubuntu only 64bit 3D working, 32bits fail

    Hello,
    i've found a very nasty problem I'm running 64bit Kubuntu and fglrx 8.7.
    Somewhere during the path of going from kernel 2.6.25 to 2.6.26 and from fglrx 8.5 to 8.6 and 8.7 32bit OpenGL apps (googleearth, ETQW, 32bit fglrxinfo) stopped working..

    This is the 64bit fglrxinfo;
    Code:
    display: :0.0  screen: 0
    OpenGL vendor string: ATI Technologies Inc.
    OpenGL renderer string: ATI Mobility Radeon HD 3650
    OpenGL version string: 2.1.7769 Release
    This is the output from 32bit fglrxinfo:
    Code:
    ./fglrxd/new/23/arch/x86/usr/X11R6/bin$ ./fglrxinfo
    libGL: XF86DRIGetClientDriverName: 8.51.3 fglrx (screen 0)
    libGL: OpenDriver: trying /usr/lib/dri/fglrx_dri.so
    libGL error: dlopen /usr/lib/dri/fglrx_dri.so failed (/usr/lib/dri/fglrx_dri.so: wrong ELF class: ELFCLASS64)
    libGL error: unable to load driver: fglrx_dri.so
    display: :0.0  screen: 0
    OpenGL vendor string: Mesa project: www.mesa3d.org
    OpenGL renderer string: Mesa GLX Indirect
    OpenGL version string: 1.4 (2.1 Mesa 7.0.3-rc2)
    
    Segmentation fault
    ./fglrxd/new/23/arch/x86/usr/X11R6/bin$ ldd fglrxinfo
            linux-gate.so.1 =>  (0xffffe000)
            libGL.so.1 => /usr/lib32/libGL.so.1 (0xf7e8f000)
            libX11.so.6 => /usr/lib32/libX11.so.6 (0xf7da8000)
            libXext.so.6 => /usr/lib32/libXext.so.6 (0xf7d99000)
            libc.so.6 => /lib32/libc.so.6 (0xf7c4a000)
            libpthread.so.0 => /lib32/libpthread.so.0 (0xf7c32000)
            libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf7c27000)
            libxcb-xlib.so.0 => /usr/lib32/libxcb-xlib.so.0 (0xf7c25000)
            libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf7c0d000)
            libdl.so.2 => /lib32/libdl.so.2 (0xf7c08000)
            libXau.so.6 => /usr/lib32/libXau.so.6 (0xf7c05000)
            /lib/ld-linux.so.2 (0xf7f2c000)
            libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf7c00000)
    Also, ETQW starts, but is running v-e-r-y slowly, maybe because it's running in Software rendering mode, but somehow it seems to think everything is ok?

    This is log from ETQW
    Code:
    prg/et2/base/zpaklibGL: XF86DRIGetClientDriverName: 8.51.3 fglrx (screen 0)
    libGL: OpenDriver: trying /usr/lib/dri/fglrx_dri.so
    libGL error: dlopen /usr/lib/dri/fglrx_dri.so failed (/usr/lib/dri/fglrx_dri.so: wrong ELF class: ELFCLASS64)
    libGL error: unable to load driver: fglrx_dri.so
    ... later ..
    WARNING: GL_PROGRAM_ERROR_STRING_ARB: (null)
    error at 336:
    ] };    # 74 joints
                    PARAM   _mvp[4] = { state.matrix.mvp };
    
                    ADDRESS _A0;
                    TEMP    _R0, _R1, _R2;
    
                    # accumulate weighted joint matrices
                    ARL             _A0.x, _jointIndices.x;
                    MUL             _R0, _joints[_A0.x+0], _jointWeights.x;
                    MUL             _R1, _joints[_A0.x+1], _jointWeights.x;
                    MUL             _R2, _joints[_A0.x+2], _jointWeights.x;
                    ARL             _A0.x, _jointIndices.y;
                    MAD             _R0, _joints[_A0.x+0], _jointWeights.y, _R0;
                    MAD             _R1, _joints[_A0.x+1], _jointWeights.y, _R1;
                    MAD             _R2, _joints[_A0.x+2], _jointWeights.y, _R2;
                    ARL             _A0.x, _jointIndices.z;
    From the log it seems, that somehow libGL is tryig to load and use 64bit fglrx_dri.so.

    There's /usr/lib32/libGL.so.1.2 and /usr/lib32/dri/fglrx_dri.so with the following sizes:
    483408 2008-07-21 23:48 /usr/lib32/libGL.so.1.2
    15762196 2008-07-21 23:48 /usr/lib32/dri/fglrx_dri.so

    googleearth (32bit wine app) is totally freaked and currently causes X to crash. Previously it worked in 3D(like ETWQ did), then it was running in software OpenGL and now it's crashing

  • #2
    Found some more information about the issue from here http://www.thinkwiki.org/wiki/Problems_with_fglrx


    Code:
    fglrxd/new/23/arch/x86/usr/X11R6/bin$ echo $LIBGL_DRIVERS_PATH
    /usr/lib/dri
    
    fglrxd/new/23/arch/x86/usr/X11R6/bin$ export LIBGL_DRIVERS_PATH=/usr/lib/dri:/usr/lib32/dri/
    
    fglrxd/new/23/arch/x86/usr/X11R6/bin$ ./fglrxinfo
    libGL: XF86DRIGetClientDriverName: 8.51.3 fglrx (screen 0)
    libGL: OpenDriver: trying /usr/lib/dri/fglrx_dri.so
    libGL error: dlopen /usr/lib/dri/fglrx_dri.so failed (/usr/lib/dri/fglrx_dri.so: wrong ELF class: ELFCLASS64)
    libGL: OpenDriver: trying /usr/lib32/dri//fglrx_dri.so
    drmOpenDevice: node name is /dev/dri/card0
    drmOpenDevice: open result is 7, (OK)
    drmOpenByBusid: Searching for BusID PCI:1:0:0
    drmOpenDevice: node name is /dev/dri/card0
    drmOpenDevice: open result is 7, (OK)
    drmOpenByBusid: drmOpenMinor returns 7
    drmOpenByBusid: drmGetBusid reports PCI:1:0:0
    display: :0.0  screen: 0
    OpenGL vendor string: ATI Technologies Inc.
    OpenGL renderer string: ATI Mobility Radeon HD 3650
    OpenGL version string: 2.1.7769 Release
    Now I'm just wondering where's the environment variable LIBGL_DRIVERS_PATH setup and who's responsible for configuring it.

    Comment


    • #3
      I've found that the .run doesn't generate 32bit packages under debian, and now I use the debian svn repository for this.

      Comment

      Working...
      X