XGI310Idle
}
-/* 310/325 series ------------------------------------------------ */
-
-static void
-XGI310SetupForScreenToScreenCopy(int xdir, int ydir, int rop,
- unsigned int planemask, int trans_color)
-{
- XGI310SetupDSTColorDepth(xgi_video_info.DstColor);
- XGI310SetupSRCPitch(xgi_video_info.video_linelength)
- XGI310SetupDSTRect(xgi_video_info.video_linelength, 0xFFF)
- if (trans_color != -1) {
- XGI310SetupROP(0x0A)
- XGI310SetupSRCTrans(trans_color)
- XGI310SetupCMDFlag(TRANSPARENT_BITBLT)
- } else {
- XGI310SetupROP(XGIALUConv[rop])
- /* Set command - not needed, both 0 */
- /* XGISetupCMDFlag(BITBLT | SRCVIDEO) */
- }
- XGI310SetupCMDFlag(xgi_video_info.XGI310_AccelDepth)
- /* TW: The 310/325 series is smart enough to know the direction */
-}
-
-static void
-XGI310SubsequentScreenToScreenCopy(int src_x, int src_y, int dst_x, int dst_y,
- int width, int height)
-{
- long srcbase, dstbase;
- int mymin, mymax;
-
- srcbase = dstbase = 0;
- mymin = min(src_y, dst_y);
- mymax = max(src_y, dst_y);
-
- /* Although the chip knows the direction to use
- * if the source and destination areas overlap,
- * that logic fails if we fiddle with the bitmap
- * addresses. Therefore, we check if the source
- * and destination blitting areas overlap and
- * adapt the bitmap addresses synchronously
- * if the coordinates exceed the valid range.
- * The the areas do not overlap, we do our
- * normal check.
- */
- if((mymax - mymin) < height) {
- if((src_y >= 2048) || (dst_y >= 2048)) {
- srcbase = xgi_video_info.video_linelength * mymin;
- dstbase = xgi_video_info.video_linelength * mymin;
- src_y -= mymin;
- dst_y -= mymin;
- }
- } else {
- if(src_y >= 2048) {
- srcbase = xgi_video_info.video_linelength * src_y;
- src_y = 0;
- }
- if(dst_y >= 2048) {
- dstbase = xgi_video_info.video_linelength * dst_y;
- dst_y = 0;
- }
- }
-
- XGI310SetupSRCBase(srcbase);
- XGI310SetupDSTBase(dstbase);
- XGI310SetupRect(width, height)
- XGI310SetupSRCXY(src_x, src_y)
- XGI310SetupDSTXY(dst_x, dst_y)
- XGI310DoCMD
-}
-
-static void
-XGI310SetupForSolidFill(int color, int rop, unsigned int planemask)
-{
- XGI310SetupPATFG(color)
- XGI310SetupDSTRect(xgi_video_info.video_linelength, 0xFFF)
- XGI310SetupDSTColorDepth(xgi_video_info.DstColor);
- XGI310SetupROP(XGIPatALUConv[rop])
- XGI310SetupCMDFlag(PATFG | xgi_video_info.XGI310_AccelDepth)
-}
-
-static void
-XGI310SubsequentSolidFillRect(int x, int y, int w, int h)
-{
- long dstbase;
-
- dstbase = 0;
- if(y >= 2048) {
- dstbase = xgi_video_info.video_linelength * y;
- y = 0;
- }
- XGI310SetupDSTBase(dstbase)
- XGI310SetupDSTXY(x,y)
- XGI310SetupRect(w,h)
- XGI310SetupCMDFlag(BITBLT)
- XGI310DoCMD
-}
-
/* --------------------------------------------------------------------- */
/* The exported routines */