From: Leif D. <lde...@re...> - 2003-06-05 16:47:04
|
On Wed, 4 Jun 2003, Ian Romanick wrote: > John Sheu wrote: > > Output of gdb on glxinfo: > > > > Starting program: /usr/X11R6/bin/glxinfo > > (no debugging symbols found)...[New Thread 16384 (LWP 2145)] > > name of display: :0.0 > > > > Program received signal SIGSEGV, Segmentation fault. > > [Switching to Thread 16384 (LWP 2145)] > > 0x4046dee5 in driSetTextureSwapCounterLocation (heap=0x0, counter=0x8051c18) > > at texmem.c:584 > > 584 texmem.c: No such file or directory. > > in texmem.c > > Hmm...looking at the code, my guess is that rmesa->nr_heaps is 2 on Rage > 128 even on PCI cards. In gdb you can 'print rmesa->nr_heaps' to see. > You might also try 'print r128scrn->texSize[0]' and (if nr_heaps is 2) > 'print r128scrn->texSize[1]'. Since I don't have a Rage 128, that would > help. :) > > Perhaps Leif can take a look at this. > > Note that this has *NOTHING* to do with your libGL.so. This is 100% in > the driver. nr_heaps should be 1 on PCI cards (see r128CreateScreen() in r128_screen.c). However, the DDX will enable DRI even if the local texture heap size is 0 on a PCI card, which I consider to be a bug (I changed the mach64 driver to disable DRI if there's not enough mem for a texture heap). I also think you'd run into the same problem if there is no room for a local heap, but there is space for an AGP heap. In working on texmem for mach64, I've changed the heap indexes for local/AGP to be context variables instead of #defines, so that texture_heaps[0] can be AGP if there is only an AGP heap and no local heap. I'm pretty sure I ran into this problem on r128 before when I tried running at 24-bit depth with a high enough resolution. If this is the problem, I think you'd see a message like: "Reserved 0 kb for textures at offset 0x0" in the X log. Still, I think the drivers should also check the return of driCreateTextureHeap() and bail out if it fails. -- Leif Delgass http://www.retinalburn.net |