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);