On Son, 2002-09-29 at 19:24, Chad Page wrote: > > On 29 Sep 2002, Michel [ISO-8859-1] Dänzer wrote: > > > On Son, 2002-09-29 at 04:47, Chad Page wrote: > > > > > > I did my own build from CVS and copied libxaa.a from it into the > > > modules directory - 2D and 3D work with one head but I still get signal 11 > > > with two heads, with and without xinerama. I can disable acceleration and > > > it will work, so there seems to be another xaa problem with shared > > > entities. > > > > Can you try to track down where the segfault occurs? > > I tracked it down to radeon_video.c in RadeonResetVideo - the > info->accel->sync(pScrn) call causes the sig 11, which would imply that > the structure hadn't been fully initialized when called. With that line > commented out it works ok, but there's probably a different root cause.
What about this patch? -- Earthling Michel Dänzer (MrCooper)/ Debian GNU/Linux (powerpc) developer XFree86 and DRI project member / CS student, Free Software enthusiast
Index: radeon_video.c =================================================================== RCS file: /cvsroot/dri/xc/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_video.c,v retrieving revision 1.11 diff -p -u -r1.11 radeon_video.c --- radeon_video.c 21 Sep 2002 17:08:06 -0000 1.11 +++ radeon_video.c 29 Sep 2002 23:51:02 -0000 @@ -383,8 +383,9 @@ RADEONResetVideo(ScrnInfoPtr pScrn) unsigned char *RADEONMMIO = info->MMIO; RADEONPortPrivPtr pPriv = info->adaptor->pPortPrivates[0].ptr; + if (info->accel && info->accel->Sync) + info->accel->Sync(pScrn); - info->accel->Sync(pScrn); OUTREG(RADEON_OV0_SCALE_CNTL, 0x80000000); OUTREG(RADEON_OV0_AUTO_FLIP_CNTL, 0); /* maybe */ OUTREG(RADEON_OV0_EXCLUSIVE_HORZ, 0); @@ -699,7 +700,8 @@ RADEONSetPortAttribute(ScrnInfoPtr pScr RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data; Bool setTransform = FALSE; - info->accel->Sync(pScrn); + if (info->accel && info->accel->Sync) + info->accel->Sync(pScrn); #define RTFSaturation(a) (1.0 + ((a)*1.0)/1000.0) #define RTFBrightness(a) (((a)*1.0)/2000.0) @@ -799,7 +801,8 @@ RADEONGetPortAttribute(ScrnInfoPtr pScr RADEONInfoPtr info = RADEONPTR(pScrn); RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data; - info->accel->Sync(pScrn); + if (info->accel && info->accel->Sync) + info->accel->Sync(pScrn); if(attribute == xvAutopaintColorkey) *value = pPriv->autopaint_colorkey; @@ -1016,7 +1019,8 @@ RADEONDisplayVideo( RADEONWaitForFifo(pScrn, 2); OUTREG(RADEON_OV0_REG_LOAD_CNTL, 1); - info->accel->Sync(pScrn); + if (info->accel && info->accel->Sync) + info->accel->Sync(pScrn); while(!(INREG(RADEON_OV0_REG_LOAD_CNTL) & (1 << 3))); RADEONWaitForFifo(pScrn, 14);