diff options
author | Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> | 2008-10-08 18:36:11 -0300 |
---|---|---|
committer | Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> | 2008-10-08 18:36:11 -0300 |
commit | 61f814d1c8ad9440bab89eda44e64b01ba0eb703 (patch) | |
tree | b776af98375e5ff02463bb9759d76d9cded37385 /src | |
parent | 1656fb6de5308ff586676e8d6a8aa8d4579ebf4c (diff) |
Rewrite WaitQueue and WaitIdle accell macros
WaitQueue() did receive an unused parameter, that was removed. The
parameter was unused since version 1.0 in XFree86 CVS, so probably
nobody knows for what it was used.
WaitIdle() now also replaces WaitIdleEmpty(), as an idle engine
should also have an empty fifo.
SMI_SubsequentScreenToScreenCopy() was changed to use WaitIdle()
instead of WaitQueue() before submitting the commands to the engine.
This fixes a nasty lockup when using XaaOffscreenPixmaps (what is
desired/wanted to help improve performance), and the lockup in the
MSOC was clearly due to an engine overrun, when sending commands
faster then the engine could process.
Diffstat (limited to 'src')
-rw-r--r-- | src/regsmi.h | 89 | ||||
-rw-r--r-- | src/smi_accel.c | 53 | ||||
-rw-r--r-- | src/smi_exa.c | 11 | ||||
-rw-r--r-- | src/smi_shadow.c | 20 | ||||
-rw-r--r-- | src/smi_xaa.c | 52 |
5 files changed, 113 insertions, 112 deletions
diff --git a/src/regsmi.h b/src/regsmi.h index bdf4035..106b13c 100644 --- a/src/regsmi.h +++ b/src/regsmi.h @@ -194,51 +194,66 @@ VGAOUT8(SMIPtr pSmi, int port, CARD8 data) #define SMI_QUICK_START 0x10000000 #define SMI_START_ENGINE 0x80000000 -#define MAXLOOP 0x100000 /* timeout value for engine waits */ - -#define ENGINE_IDLE() \ - (IS_MSOC(pSmi) ? \ - (READ_SCR(pSmi, 0x0000) & 0x00080000) == 0 : \ - (VGAIN8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x16) & 0x08) == 0) -#define FIFO_EMPTY() \ - (IS_MSOC(pSmi) ? \ - READ_SCR(pSmi, 0x0000) & 0x00100000 : \ - VGAIN8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x16) & 0x10) - -/* Wait until "v" queue entries are free */ -/**** FIXME - **** This is completely ilogical. Argument "v" is ignored, and - **** pSmi->PCIRetry defaults to false (but on smi sources this - **** macro is a noop and will get stuck on engine reset timeouts if enabled...) - ***/ -#define WaitQueue(v) \ +/* timeout value for engine waits */ +#define MAXLOOP 0x100000 + +/* Wait until 2d engine queue is empty */ +#define WaitQueue() \ do { \ - if (!IS_MSOC(pSmi)) { \ - int loop = MAXLOOP; \ + int loop = MAXLOOP; \ \ - mem_barrier(); \ - while (!FIFO_EMPTY()) \ - if (loop-- <= 0) \ - break; \ - if (loop <= 0) SMI_GEReset(pScrn, 1, __LINE__, __FILE__); \ + mem_barrier(); \ + if (IS_MSOC(pSmi)) { \ + /* 20:20 2D Engine FIFO Status. This bit is read-only. + * 0: FIFO not emtpy. + * 1: FIFO empty. + */ \ + while (loop-- && \ + (READ_SCR(pSmi, 0x0000) & (1 << 20)) == 0) \ + ; \ + } \ + else { \ + while (loop-- && \ + (VGAIN8_INDEX(pSmi, VGA_SEQ_INDEX, \ + VGA_SEQ_DATA, 0x16) & 0x10)) \ + ; \ } \ + if (loop <= 0) \ + SMI_GEReset(pScrn, 1, __LINE__, __FILE__); \ } while (0) /* Wait until GP is idle */ -#define WaitIdle() \ - do { \ - int loop = MAXLOOP; mem_barrier(); \ - while (!ENGINE_IDLE()) \ - if (loop-- == 0) break; \ - if (loop <= 0) SMI_GEReset(pScrn, 1, __LINE__, __FILE__); \ +#define WaitIdle() \ + do { \ + int status; \ + int loop = MAXLOOP; \ + \ + mem_barrier(); \ + if (IS_MSOC(pSmi)) { \ + /* bit 0: 2d engine idle if *not set* + * bit 1: 2d fifo empty if *set* + * bit 2: 2d setup idle if if *not set* + * bit 18: color conversion idle if *not set* + * bit 19: command fifo empty if *set* + * bit 20: 2d memory fifo empty idle if *set* + */ \ + for (status = READ_SCR(pSmi, 0x0024); \ + loop && (status & 0x1C0007) != 0x180002; \ + status = READ_SCR(pSmi, 0x0024), loop--) \ + ; \ + } \ + else { \ + for (status = VGAIN8_INDEX(pSmi, VGA_SEQ_INDEX, \ + VGA_SEQ_DATA, 0x16); \ + loop && (status & 0x18) != 0x10; \ + status = VGAIN8_INDEX(pSmi, VGA_SEQ_INDEX, \ + VGA_SEQ_DATA, 0x16), loop--) \ + ; \ + } \ + if (loop <= 0) \ + SMI_GEReset(pScrn, 1, __LINE__, __FILE__); \ } while (0) -/* Wait until GP is idle and queue is empty */ -#define WaitIdleEmpty() \ - do { \ - WaitQueue(MAXFIFO); \ - WaitIdle(); \ - } while (0) #define RGB8_PSEUDO (-1) #define RGB16_565 0 diff --git a/src/smi_accel.c b/src/smi_accel.c index 7395afa..0d6af9a 100644 --- a/src/smi_accel.c +++ b/src/smi_accel.c @@ -37,32 +37,35 @@ authorization from the XFree86 Project and silicon Motion. void SMI_GEReset(ScrnInfoPtr pScrn, int from_timeout, int line, char *file) { - SMIPtr pSmi = SMIPTR(pScrn); - unsigned int iTempVal; - CARD8 tmp; + SMIPtr pSmi = SMIPTR(pScrn); + int32_t tmp; ENTER(); if (from_timeout) { - if (pSmi->GEResetCnt++ < 10 || xf86GetVerbosity() > 1) { - xf86DrvMsg(pScrn->scrnIndex,X_INFO,"\tSMI_GEReset called from %s line %d\n", file, line); - } - } else { - WaitIdleEmpty(); + if (pSmi->GEResetCnt++ < 10 || xf86GetVerbosity() > 1) + xf86DrvMsg(pScrn->scrnIndex,X_INFO, + "\tSMI_GEReset called from %s line %d\n", file, line); } + else + WaitIdle(); if (IS_MSOC(pSmi)) { - iTempVal = READ_SCR(pSmi, 0x0000) & ~0x00003000; - WRITE_SCR(pSmi, 0x0000, iTempVal | 0x00003000); - WRITE_SCR(pSmi, 0x0000, iTempVal); + /* 12:13 Drawing Engine Abort + * 00: Normal + * 11: Abort 2D Engine + * (0x3000 == bits 12 and 13 set) + */ + tmp = READ_SCR(pSmi, 0x0000) & ~0x00003000; + WRITE_SCR(pSmi, 0x0000, tmp | 0x00003000); + /* FIXME No need to wait here? */ + WRITE_SCR(pSmi, 0x0000, tmp); } else { tmp = VGAIN8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x15); VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x15, tmp | 0x30); } - WaitIdleEmpty(); - if (!IS_MSOC(pSmi)) VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x15, tmp); SMI_EngineReset(pScrn); @@ -78,23 +81,7 @@ SMI_AccelSync(ScrnInfoPtr pScrn) ENTER(); - WaitIdleEmpty(); /* #161 */ - if (IS_MSOC(pSmi)) { - int i, status; - - for (i = 0x1000000; i > 0; i--) { - status = READ_SCR(pSmi, CMD_STATUS); - /* bit 0: 2d engine idle if *not set* - * bit 1: 2d fifo empty if *set* - * bit 2: 2d setup idle if if *not set* - * bit 18: color conversion idle if *not set* - * bit 19: command fifo empty if *set* - * bit 20: 2d memory fifo empty idle if *set* - */ - if ((status & 0x1C0007) == 0x180002) - break; - } - } + WaitIdle(); LEAVE(); } @@ -128,7 +115,7 @@ SMI_EngineReset(ScrnInfoPtr pScrn) } } - WaitIdleEmpty(); + WaitIdle(); WRITE_DPR(pSmi, 0x10, (pSmi->Stride << 16) | pSmi->Stride); WRITE_DPR(pSmi, 0x1C, DEDataFormat); WRITE_DPR(pSmi, 0x24, 0xFFFFFFFF); @@ -188,7 +175,7 @@ SMI_SetClippingRectangle(ScrnInfoPtr pScrn, int left, int top, int right, pSmi->ClipTurnedOn = FALSE; - WaitQueue(2); + WaitQueue(); WRITE_DPR(pSmi, 0x2C, pSmi->ScissorsLeft); WRITE_DPR(pSmi, 0x30, pSmi->ScissorsRight); @@ -215,7 +202,7 @@ SMI_DisableClipping(ScrnInfoPtr pScrn) pSmi->ClipTurnedOn = FALSE; - WaitQueue(2); + WaitQueue(); WRITE_DPR(pSmi, 0x2C, pSmi->ScissorsLeft); WRITE_DPR(pSmi, 0x30, pSmi->ScissorsRight); diff --git a/src/smi_exa.c b/src/smi_exa.c index 05e90d8..98d34e8 100644 --- a/src/smi_exa.c +++ b/src/smi_exa.c @@ -210,7 +210,7 @@ SMI_PrepareCopy(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap, int xdir, int ydir, pSmi->AccelCmd |= SMI_RIGHT_TO_LEFT; } - WaitQueue(7); + WaitQueue(); /* Destination and Source Window Widths */ WRITE_DPR(pSmi, 0x3C, (dst_pitch << 16) | (src_pitch & 0xFFFF)); @@ -273,7 +273,7 @@ SMI_Copy(PixmapPtr pDstPixmap, int srcX, int srcY, int dstX, } } - WaitQueue(3); + WaitQueue(); WRITE_DPR(pSmi, 0x00, (srcX << 16) + (srcY & 0xFFFF)); WRITE_DPR(pSmi, 0x04, (dstX << 16) + (dstY & 0xFFFF)); WRITE_DPR(pSmi, 0x08, (width << 16) + (height & 0xFFFF)); @@ -340,7 +340,7 @@ SMI_PrepareSolid(PixmapPtr pPixmap, int alu, Pixel planemask, Pixel fg) | SMI_BITBLT | SMI_QUICK_START; - WaitQueue(10); + WaitQueue(); /* Destination Window Width */ WRITE_DPR(pSmi, 0x3C, (dst_pitch << 16) | (dst_pitch & 0xFFFF)); @@ -395,7 +395,7 @@ SMI_Solid(PixmapPtr pPixmap, int x1, int y1, int x2, int y2) } } - WaitQueue(2); + WaitQueue(); WRITE_DPR(pSmi, 0x04, (x1 << 16) | (y1 & 0xFFFF)); WRITE_DPR(pSmi, 0x08, (w << 16) | (h & 0xFFFF)); @@ -471,7 +471,7 @@ SMI_UploadToScreen(PixmapPtr pDst, int x, int y, int w, int h, /* set clipping */ SMI_SetClippingRectangle(pScrn, x, y, x+w, y+h); - WaitQueue(7); + WaitQueue(); /* Destination and Source Window Widths */ WRITE_DPR(pSmi, 0x3C, (dst_pixelpitch << 16) | (src_pixelpitch & 0xFFFF)); @@ -498,7 +498,6 @@ SMI_UploadToScreen(PixmapPtr pDst, int x, int y, int w, int h, WRITE_DPR(pSmi, 0x08, (w << 16) | (h & 0xFFFF)); while (h--) { -/* WaitQueue(aligned_pitch); */ memcpy(pSmi->DataPortBase, src, aligned_pitch); src += src_pitch; } diff --git a/src/smi_shadow.c b/src/smi_shadow.c index 496f255..b015580 100644 --- a/src/smi_shadow.c +++ b/src/smi_shadow.c @@ -69,7 +69,7 @@ void SMI_RefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox) return; } - WaitIdleEmpty(); + WaitIdle(); if(pSmi->useEXA) /* Some other function may have set SMI_QUICK_START */ WRITE_DPR(pSmi, 0x0C, 0); @@ -112,7 +112,7 @@ void SMI_RefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox) destX = pSmi->ShadowHeight - srcY - 1; destY = srcX; - WaitQueue(4); + WaitQueue(); WRITE_DPR(pSmi, 0x00, (srcX << 16) + srcY); WRITE_DPR(pSmi, 0x04, (destX << 16) + destY); WRITE_DPR(pSmi, 0x08, (width << 16) + height); @@ -133,7 +133,7 @@ void SMI_RefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox) destX = srcY; destY = pSmi->ShadowWidth - srcX - 1; - WaitQueue(4); + WaitQueue(); WRITE_DPR(pSmi, 0x00, (srcX << 16) + srcY); WRITE_DPR(pSmi, 0x04, (destX << 16) + destY); WRITE_DPR(pSmi, 0x08, (width << 16) + height); @@ -151,7 +151,7 @@ void SMI_RefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox) } } - WaitQueue(4); + WaitQueue(); WRITE_DPR(pSmi, 0x00, (srcX << 16) + srcY); WRITE_DPR(pSmi, 0x04, (srcX << 16) + srcY); WRITE_DPR(pSmi, 0x08, (width << 16) + height); @@ -163,7 +163,7 @@ void SMI_RefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox) pbox++; } - WaitIdleEmpty(); + WaitIdle(); WRITE_DPR(pSmi, 0x10, (pSmi->Stride << 16) | pSmi->Stride); WRITE_DPR(pSmi, 0x3C, (pSmi->Stride << 16) | pSmi->Stride); WRITE_DPR(pSmi, 0x44, 0); @@ -189,7 +189,7 @@ void SMI_RefreshArea730(ScrnInfoPtr pScrn, int num, BoxPtr pbox) return; } - WaitIdleEmpty(); + WaitIdle(); if(pSmi->useEXA) /* Some other function may have set SMI_QUICK_START */ WRITE_DPR(pSmi, 0x0C, 0); @@ -239,7 +239,7 @@ void SMI_RefreshArea730(ScrnInfoPtr pScrn, int num, BoxPtr pbox) for (tempWidth=width; tempWidth > 0;) { if (width>maxPixels) width = maxPixels; - WaitQueue(4); + WaitQueue(); WRITE_DPR(pSmi, 0x00, (srcX << 16) + srcY); WRITE_DPR(pSmi, 0x04, (destX << 16) + destY); WRITE_DPR(pSmi, 0x08, (width << 16) + height); @@ -269,7 +269,7 @@ void SMI_RefreshArea730(ScrnInfoPtr pScrn, int num, BoxPtr pbox) for (tempWidth=width; tempWidth > 0;) { if (width>maxPixels) width = maxPixels; - WaitQueue(4); + WaitQueue(); WRITE_DPR(pSmi, 0x00, (srcX << 16) + srcY); WRITE_DPR(pSmi, 0x04, (destX << 16) + destY); WRITE_DPR(pSmi, 0x08, (width << 16) + height); @@ -293,7 +293,7 @@ void SMI_RefreshArea730(ScrnInfoPtr pScrn, int num, BoxPtr pbox) } } - WaitQueue(4); + WaitQueue(); WRITE_DPR(pSmi, 0x00, (srcX << 16) + srcY); WRITE_DPR(pSmi, 0x04, (srcX << 16) + srcY); WRITE_DPR(pSmi, 0x08, (width << 16) + height); @@ -305,7 +305,7 @@ void SMI_RefreshArea730(ScrnInfoPtr pScrn, int num, BoxPtr pbox) pbox++; } - WaitIdleEmpty(); + WaitIdle(); WRITE_DPR(pSmi, 0x10, (pSmi->Stride << 16) | pSmi->Stride); WRITE_DPR(pSmi, 0x3C, (pSmi->Stride << 16) | pSmi->Stride); WRITE_DPR(pSmi, 0x44, 0); diff --git a/src/smi_xaa.c b/src/smi_xaa.c index 3414a01..4ffda45 100644 --- a/src/smi_xaa.c +++ b/src/smi_xaa.c @@ -250,12 +250,12 @@ SMI_SetupForScreenToScreenCopy(ScrnInfoPtr pScrn, int xdir, int ydir, int rop, if (trans != -1) { pSmi->AccelCmd |= SMI_TRANSPARENT_SRC | SMI_TRANSPARENT_PXL; - WaitQueue(1); + WaitQueue(); WRITE_DPR(pSmi, 0x20, trans); } if (pSmi->ClipTurnedOn) { - WaitQueue(1); + WaitQueue(); WRITE_DPR(pSmi, 0x2C, pSmi->ScissorsLeft); pSmi->ClipTurnedOn = FALSE; } @@ -295,7 +295,7 @@ SMI_SubsequentScreenToScreenCopy(ScrnInfoPtr pScrn, int x1, int y1, int x2, } } - WaitQueue(4); + WaitIdle(); CHECK_SECONDARY(pSmi); WRITE_DPR(pSmi, 0x00, (x1 << 16) + (y1 & 0xFFFF)); WRITE_DPR(pSmi, 0x04, (x2 << 16) + (y2 & 0xFFFF)); @@ -336,11 +336,11 @@ SMI_SetupForSolidFill(ScrnInfoPtr pScrn, int color, int rop, } #endif if (pSmi->ClipTurnedOn) { - WaitQueue(4); + WaitQueue(); WRITE_DPR(pSmi, 0x2C, pSmi->ScissorsLeft); pSmi->ClipTurnedOn = FALSE; } else { - WaitQueue(3); + WaitQueue(); } WRITE_DPR(pSmi, 0x14, color); WRITE_DPR(pSmi, 0x34, 0xFFFFFFFF); @@ -374,7 +374,7 @@ SMI_SubsequentSolidFillRect(ScrnInfoPtr pScrn, int x, int y, int w, int h) y = 0; } - WaitQueue(3); + WaitQueue(); CHECK_SECONDARY(pSmi); WRITE_DPR(pSmi, 0x04, (x << 16) | (y & 0xFFFF)); WRITE_DPR(pSmi, 0x08, (w << 16) | (h & 0xFFFF)); @@ -414,7 +414,7 @@ SMI_SubsequentSolidHorVertLine(ScrnInfoPtr pScrn, int x, int y, int len, } } - WaitQueue(3); + WaitQueue(); CHECK_SECONDARY(pSmi); WRITE_DPR(pSmi, 0x04, (x << 16) | (y & 0xFFFF)); WRITE_DPR(pSmi, 0x08, (w << 16) | (h & 0xFFFF)); @@ -454,7 +454,7 @@ SMI_SetupForCPUToScreenColorExpandFill(ScrnInfoPtr pScrn, int fg, int bg, if (bg == -1) { pSmi->AccelCmd |= SMI_TRANSPARENT_SRC; - WaitQueue(3); + WaitQueue(); WRITE_DPR(pSmi, 0x14, fg); WRITE_DPR(pSmi, 0x18, ~fg); WRITE_DPR(pSmi, 0x20, fg); @@ -463,7 +463,7 @@ SMI_SetupForCPUToScreenColorExpandFill(ScrnInfoPtr pScrn, int fg, int bg, if (bg == 0xFFFFFF7F) bg = -1; #endif - WaitQueue(2); + WaitQueue(); WRITE_DPR(pSmi, 0x14, fg); WRITE_DPR(pSmi, 0x18, bg); } @@ -491,17 +491,17 @@ SMI_SubsequentCPUToScreenColorExpandFill(ScrnInfoPtr pScrn, int x, int y, int w, } if (skipleft) { - WaitQueue(5); + WaitQueue(); WRITE_DPR(pSmi, 0x2C, (pSmi->ScissorsLeft & 0xFFFF0000) | (x + skipleft) | 0x2000); pSmi->ClipTurnedOn = TRUE; } else { if (pSmi->ClipTurnedOn) { - WaitQueue(5); + WaitQueue(); WRITE_DPR(pSmi, 0x2C, pSmi->ScissorsLeft); pSmi->ClipTurnedOn = FALSE; } else { - WaitQueue(4); + WaitQueue(); } } CHECK_SECONDARY(pSmi); @@ -540,14 +540,14 @@ SMI_SetupForMono8x8PatternFill(ScrnInfoPtr pScrn, int patx, int paty, int fg, | SMI_START_ENGINE; if (pSmi->ClipTurnedOn) { - WaitQueue(1); + WaitQueue(); WRITE_DPR(pSmi, 0x2C, pSmi->ScissorsLeft); pSmi->ClipTurnedOn = FALSE; } CHECK_SECONDARY(pSmi); if (bg == -1) { - WaitQueue(5); + WaitQueue(); WRITE_DPR(pSmi, 0x14, fg); WRITE_DPR(pSmi, 0x18, ~fg); WRITE_DPR(pSmi, 0x20, fg); @@ -558,7 +558,7 @@ SMI_SetupForMono8x8PatternFill(ScrnInfoPtr pScrn, int patx, int paty, int fg, if (bg == 0xFFFFFF7F) bg = -1; #endif - WaitQueue(4); + WaitQueue(); WRITE_DPR(pSmi, 0x14, fg); WRITE_DPR(pSmi, 0x18, bg); WRITE_DPR(pSmi, 0x34, patx); @@ -585,7 +585,7 @@ SMI_SubsequentMono8x8PatternFillRect(ScrnInfoPtr pScrn, int patx, int paty, } } - WaitQueue(3); + WaitQueue(); CHECK_SECONDARY(pSmi); WRITE_DPR(pSmi, 0x04, (x << 16) | (y & 0xFFFF)); WRITE_DPR(pSmi, 0x08, (w << 16) | (h & 0xFFFF)); @@ -621,7 +621,7 @@ SMI_SetupForColor8x8PatternFill(ScrnInfoPtr pScrn, int patx, int paty, int rop, /* PDR#950 */ CARD8* pattern = pSmi->FBBase + (patx + paty * pSmi->Stride) * pSmi->Bpp; - WaitIdleEmpty(); + WaitIdle(); WRITE_DPR(pSmi, 0x0C, SMI_BITBLT | SMI_COLOR_PATTERN); memcpy(pSmi->DataPortBase, pattern, 8 * pSmi->Bpp * 8); } else { @@ -633,22 +633,22 @@ SMI_SetupForColor8x8PatternFill(ScrnInfoPtr pScrn, int patx, int paty, int rop, } } - WaitQueue(1); + WaitQueue(); WRITE_DPR(pSmi, 0x00, (patx << 16) | (paty & 0xFFFF)); } - WaitQueue(1); + WaitQueue(); CHECK_SECONDARY(pSmi); if (trans_color == -1) { pSmi->AccelCmd |= SMI_TRANSPARENT_SRC | SMI_TRANSPARENT_PXL; - WaitQueue(1); + WaitQueue(); WRITE_DPR(pSmi, 0x20, trans_color); } if (pSmi->ClipTurnedOn) { - WaitQueue(1); + WaitQueue(); WRITE_DPR(pSmi, 0x2C, pSmi->ScissorsLeft); pSmi->ClipTurnedOn = FALSE; } @@ -674,7 +674,7 @@ SMI_SubsequentColor8x8PatternFillRect(ScrnInfoPtr pScrn, int patx, int paty, } } - WaitQueue(3); + WaitQueue(); CHECK_SECONDARY(pSmi); WRITE_DPR(pSmi, 0x04, (x << 16) | (y & 0xFFFF)); WRITE_DPR(pSmi, 0x08, (w << 16) | (h & 0xFFFF)); /* PDR#950 */ @@ -713,7 +713,7 @@ SMI_SetupForImageWrite(ScrnInfoPtr pScrn, int rop, unsigned int planemask, #endif pSmi->AccelCmd |= SMI_TRANSPARENT_SRC | SMI_TRANSPARENT_PXL; - WaitQueue(1); + WaitQueue(); WRITE_DPR(pSmi, 0x20, trans_color); } @@ -740,17 +740,17 @@ SMI_SubsequentImageWriteRect(ScrnInfoPtr pScrn, int x, int y, int w, int h, } if (skipleft) { - WaitQueue(5); + WaitQueue(); WRITE_DPR(pSmi, 0x2C, (pSmi->ScissorsLeft & 0xFFFF0000) | (x + skipleft) | 0x2000); pSmi->ClipTurnedOn = TRUE; } else { if (pSmi->ClipTurnedOn) { - WaitQueue(5); + WaitQueue(); WRITE_DPR(pSmi, 0x2C, pSmi->ScissorsLeft); pSmi->ClipTurnedOn = FALSE; } else { - WaitQueue(4); + WaitQueue(); } } CHECK_SECONDARY(pSmi); |