Remove usleeps from sis driver. We probably aren't doing anyone a service

sleeping with the lock held.  Also, rename cEngineState to engineState since
it isn't a char any more.
This commit is contained in:
Eric Anholt 2003-12-09 00:00:40 +00:00
parent 73c3c397e4
commit e8bec8832b
3 changed files with 7 additions and 10 deletions

View File

@ -84,27 +84,25 @@ static const char * const card_extensions[] =
void void
WaitEngIdle (sisContextPtr smesa) WaitEngIdle (sisContextPtr smesa)
{ {
GLuint cEngineState; GLuint engineState;
do { do {
cEngineState = MMIO_READ(REG_CommandQueue); engineState = MMIO_READ(REG_CommandQueue);
} while ((cEngineState & SiS_EngIdle) != SiS_EngIdle); } while ((engineState & SiS_EngIdle) != SiS_EngIdle);
} }
void void
Wait2DEngIdle (sisContextPtr smesa) Wait2DEngIdle (sisContextPtr smesa)
{ {
GLuint cEngineState; GLuint engineState;
do { do {
cEngineState = MMIO_READ(REG_CommandQueue); engineState = MMIO_READ(REG_CommandQueue);
} while ((cEngineState & SiS_EngIdle2d) != SiS_EngIdle2d); } while ((engineState & SiS_EngIdle2d) != SiS_EngIdle2d);
} }
/* To be called from mWait3DCmdQueue. Separate function for profiling /* To be called from mWait3DCmdQueue. Separate function for profiling
* purposes, and speed doesn't matter because we're spinning anyway. * purposes, and speed doesn't matter because we're spinning anyway.
* This function should use usleeps to release cpu probably, but I have yet
* to see it get called.
*/ */
void void
WaitingFor3dIdle(sisContextPtr smesa, int wLen) WaitingFor3dIdle(sisContextPtr smesa, int wLen)

View File

@ -162,7 +162,7 @@ static void sisCopyBuffer( __DRIdrawablePrivate *dPriv )
ENGPACKET stEngPacket; ENGPACKET stEngPacket;
while ((*smesa->FrameCountPtr) - MMIO_READ(0x8a2c) > SIS_MAX_FRAME_LENGTH) while ((*smesa->FrameCountPtr) - MMIO_READ(0x8a2c) > SIS_MAX_FRAME_LENGTH)
usleep(1); ;
LOCK_HARDWARE(); LOCK_HARDWARE();

View File

@ -870,7 +870,6 @@ sisMakeRoomAGP( sisContextPtr smesa, GLint num )
sisUpdateAGP( smesa ); sisUpdateAGP( smesa );
while (size > AGP_SpaceLeft) { while (size > AGP_SpaceLeft) {
/* Spin until space is available. */ /* Spin until space is available. */
usleep(1);
AGP_ReadPtr = (GLfloat *)((long)MMIO_READ(REG_3D_AGPCmBase) - AGP_ReadPtr = (GLfloat *)((long)MMIO_READ(REG_3D_AGPCmBase) -
(long)smesa->AGPCmdBufAddr + (long)smesa->AGPCmdBufBase); (long)smesa->AGPCmdBufAddr + (long)smesa->AGPCmdBufBase);
sisUpdateAGP( smesa ); sisUpdateAGP( smesa );