- Fix a segfault on VT switch with DRI. Still dies due to cursor allocation

troubles.
- Move the RemoveBlockAndWakeupHandlers to match
    RegisterBlockAndWakeupHandlers.
- Enable R100 trapezoid "acceleration" when DRI is working, so that it can
    be exposed and worked on.
This commit is contained in:
Eric Anholt 2004-09-12 23:22:31 +00:00
parent ab50679aab
commit 80dc84d067

View File

@ -677,7 +677,8 @@ ATIBlockHandler(pointer blockData, OSTimePtr timeout, pointer readmask)
/* When the server is going to sleep, make sure that all DMA data has
* been flushed.
*/
ATIFlushIndirect(atis, 1);
if (atis->indirectBuffer)
ATIFlushIndirect(atis, 1);
}
static void
@ -770,17 +771,11 @@ ATIDrawEnable(ScreenPtr pScreen)
atis->kaa.PrepareComposite = R128PrepareComposite;
atis->kaa.Composite = R128Composite;
atis->kaa.DoneComposite = R128DoneComposite;
/*atis->kaa.PrepareTrapezoids = R128PrepareTrapezoids;
atis->kaa.Trapezoids = R128Trapezoids;
atis->kaa.DoneTrapezoids = R128DoneTrapezoids;*/
} else if (atic->is_r100) {
atis->kaa.CheckComposite = R100CheckComposite;
atis->kaa.PrepareComposite = R100PrepareComposite;
atis->kaa.Composite = RadeonComposite;
atis->kaa.DoneComposite = RadeonDoneComposite;
/*atis->kaa.PrepareTrapezoids = RadeonPrepareTrapezoids;
atis->kaa.Trapezoids = RadeonTrapezoids;
atis->kaa.DoneTrapezoids = RadeonDoneTrapezoids;*/
} else if (0 && atic->is_r200) { /* XXX */
atis->kaa.CheckComposite = R200CheckComposite;
atis->kaa.PrepareComposite = R200PrepareComposite;
@ -788,6 +783,19 @@ ATIDrawEnable(ScreenPtr pScreen)
atis->kaa.DoneComposite = RadeonDoneComposite;
}
}
#ifdef USE_DRI
if (atis->using_dri) {
if (!atic->is_radeon) {
/*atis->kaa.PrepareTrapezoids = R128PrepareTrapezoids;
atis->kaa.Trapezoids = R128Trapezoids;
atis->kaa.DoneTrapezoids = R128DoneTrapezoids;*/
} else if (atic->is_r100) {
atis->kaa.PrepareTrapezoids = RadeonPrepareTrapezoids;
atis->kaa.Trapezoids = RadeonTrapezoids;
atis->kaa.DoneTrapezoids = RadeonDoneTrapezoids;
}
}
#endif /* USE_DRI */
atis->kaa.UploadToScreen = ATIUploadToScreen;
@ -809,8 +817,6 @@ ATIDrawEnable(ScreenPtr pScreen)
void
ATIDrawDisable(ScreenPtr pScreen)
{
RemoveBlockAndWakeupHandlers (ATIBlockHandler, ATIWakeupHandler,
pScreen);
ATIDMATeardown(pScreen);
}
@ -827,6 +833,9 @@ ATIDrawFini(ScreenPtr pScreen)
}
#endif /* USE_DRI */
RemoveBlockAndWakeupHandlers(ATIBlockHandler, ATIWakeupHandler,
pScreen);
kaaDrawFini(pScreen);
}