xf86-video-ast-0.89.0

This commit is contained in:
Y.C. Chen
2009-04-13 21:01:51 +08:00
parent da1387d472
commit ca0863e91c
6 changed files with 41 additions and 17 deletions

View File

@@ -1,3 +1,11 @@
2009-04-13 Y.C. Chen <yc_chen@aspedtech.com>
* src/ast.h, ast_cursor.c
- Fixed xorg bugzilla #20606
* src/ast_driver.c
- Fixed xorg bugzilla #20472
* src/ast_accel.c
- Fixed desktop display abnormal if video buffer is above than 16MB
2009-01-16 Y.C. Chen <yc_chen@aspedtech.com>
* src/ast_driver.c
- Fixed Support Modes Incorrect Issues on Solaris 10 x86

View File

@@ -22,7 +22,7 @@
AC_PREREQ(2.57)
AC_INIT([xf86-video-ast],
0.88.8,
0.89.0,
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
xf86-video-ast)

View File

@@ -132,7 +132,8 @@ typedef struct {
USHORT offset_y;
ULONG fg;
ULONG bg;
UCHAR cursorpattern[1024];
} HWCINFO, *PHWCINFO;

View File

@@ -351,22 +351,29 @@ ASTSubsequentScreenToScreenCopy(ScrnInfoPtr pScrn, int x1, int y1, int x2,
else
cmdreg &= ~CMD_ENABLE_CLIP;
srcbase = dstbase = 0;
if (x1 < x2)
cmdreg |= CMD_X_DEC;
if (y1 < y2)
cmdreg |= CMD_Y_DEC;
if (y1 >= MAX_SRC_Y)
if ((y1 + height) >= MAX_SRC_Y)
{
srcbase=pAST->VideoModeInfo.ScreenPitch*y1;
y1 = 0;
}
if (y2 >= pScrn->virtualY)
if ((y2 + height) >= pScrn->virtualY)
{
dstbase=pAST->VideoModeInfo.ScreenPitch*y2;
y2 = 0;
}
if (x1 < x2)
if (cmdreg & CMD_X_DEC)
{
src_x = x1 + width - 1;
dst_x = x2 + width - 1;
cmdreg |= CMD_X_DEC;
src_x = x1 + width - 1;
dst_x = x2 + width - 1;
}
else
{
@@ -374,20 +381,13 @@ ASTSubsequentScreenToScreenCopy(ScrnInfoPtr pScrn, int x1, int y1, int x2,
dst_x = x2;
}
if (y1 < y2)
{
if (srcbase) y1 = 0;
if (dstbase) y2 = 0;
if (cmdreg & CMD_Y_DEC)
{
src_y = y1 + height - 1;
dst_y = y2 + height - 1;
cmdreg |= CMD_Y_DEC;
}
else
{
if (srcbase) y1 = 0;
if (dstbase) y2 = 0;
src_y = y1;
dst_y = y2;
}

View File

@@ -203,6 +203,10 @@ ASTSetCursorColors(ScrnInfoPtr pScrn, int bg, int fg)
pAST->HWCInfo.fg = (fg & 0x0F) | (((fg>>8) & 0x0F) << 4) | (((fg>>16) & 0x0F) << 8);
pAST->HWCInfo.bg = (bg & 0x0F) | (((bg>>8) & 0x0F) << 4) | (((bg>>16) & 0x0F) << 8);
/* Fixed xorg bugzilla #20609, ycchen@031209 */
ASTLoadCursorImage(pScrn, pAST->HWCInfo.cursorpattern);
}
static void
@@ -223,6 +227,10 @@ ASTLoadCursorImage(ScrnInfoPtr pScrn, UCHAR *src)
pAST->HWCInfo.offset_x = MAX_HWC_WIDTH - pAST->HWCInfo.width;
pAST->HWCInfo.offset_y = MAX_HWC_HEIGHT - pAST->HWCInfo.height;
/* copy to hwc info */
for (i=0; i< MAX_HWC_WIDTH*MAX_HWC_HEIGHT/4; i+=4)
*(ULONG *) (pAST->HWCInfo.cursorpattern + i) = *(ULONG *) (src + i);
/* copy cursor image to cache */
pjSrcXor = src;
pjSrcAnd = src + (MAX_HWC_WIDTH*MAX_HWC_HEIGHT/8);

View File

@@ -658,10 +658,12 @@ ASTPreInit(ScrnInfoPtr pScrn, int flags)
pAST->FbMapSize = pScrn->videoRam * 1024;
#if 0
if (!ASTMapMem(pScrn)) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Map FB Memory Failed \n");
return FALSE;
}
#endif
pScrn->memPhysBase = (ULONG)pAST->FBPhysAddr;
pScrn->fbOffset = 0;
@@ -797,6 +799,11 @@ ASTScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
pScrn = xf86Screens[pScreen->myNum];
pAST = ASTPTR(pScrn);
hwp = VGAHWPTR(pScrn);
if (!ASTMapMem(pScrn)) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Map FB Memory Failed \n");
return FALSE;
}
/* if (!pAST->noAccel) */
{