diff options
author | Alan Hourihane <alanh@fairlite.demon.co.uk> | 2006-01-24 15:20:34 +0000 |
---|---|---|
committer | Alan Hourihane <alanh@fairlite.demon.co.uk> | 2006-01-24 15:20:34 +0000 |
commit | d8d749080923e88376db1aa18ae2ad722d5113d9 (patch) | |
tree | b2c2e948e6c075762417045a7fbc8928cbaf4c65 /src/i830_shadow.c | |
parent | 919d36b6717e9a7d930c5120309778da7b0fe16c (diff) |
Bump version to 1.5.0.0
Add Intel 945GM support
Add RandR rotation support (full 3D acceleration, HWcursor & Xvideo rotated too)
Remove shadow framebuffer rotation code
Add a new LinearAlloc option to allow more offscreen memory to be allocated
for XVideo applications. This allows HDTV movies to be played via Xvideo.
Diffstat (limited to 'src/i830_shadow.c')
-rw-r--r-- | src/i830_shadow.c | 253 |
1 files changed, 0 insertions, 253 deletions
diff --git a/src/i830_shadow.c b/src/i830_shadow.c deleted file mode 100644 index 93c72c59..00000000 --- a/src/i830_shadow.c +++ /dev/null @@ -1,253 +0,0 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_shadow.c,v 1.3 2000/03/31 20:13:33 dawes Exp $ */ - -/* - Copyright (c) 1999,2000 The XFree86 Project Inc. - based on code written by Mark Vojkovich <markv@valinux.com> -*/ - -/* - * Ported from the savage driver to the I830 by - * Helmar Spangenberg <hspangenberg@frey.de> and Dima Dorfman - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "xf86.h" -#include "i830.h" -#include "shadowfb.h" -#include "servermd.h" - - -void -I830RefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox) -{ - I830Ptr pI830 = I830PTR(pScrn); - int width, height, Bpp, FBPitch; - unsigned char *src, *dst; - - Bpp = pScrn->bitsPerPixel >> 3; - FBPitch = BitmapBytePad(pScrn->displayWidth * pScrn->bitsPerPixel); - - while(num--) { - width = (pbox->x2 - pbox->x1) * Bpp; - height = pbox->y2 - pbox->y1; - src = pI830->shadowPtr + (pbox->y1 * pI830->shadowPitch) + - (pbox->x1 * Bpp); - dst = pI830->FbBase + (pbox->y1 * FBPitch) + (pbox->x1 * Bpp); - - while(height--) { - memcpy(dst, src, width); - dst += FBPitch; - src += pI830->shadowPitch; - } - - pbox++; - } -} - - -void -I830PointerMoved(int index, int x, int y) -{ - ScrnInfoPtr pScrn = xf86Screens[index]; - I830Ptr pI830 = I830PTR(pScrn); - int newX, newY; - - if(pI830->rotate == 1) { - newX = pScrn->pScreen->height - y - 1; - newY = x; - } else { - newX = y; - newY = pScrn->pScreen->width - x - 1; - } - - (*pI830->PointerMoved)(index, newX, newY); -} - -void -I830RefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox) -{ - I830Ptr pI830 = I830PTR(pScrn); - int count, width, height, y1, y2, dstPitch, srcPitch; - CARD8 *dstPtr, *srcPtr, *src; - CARD32 *dst; - - dstPitch = pScrn->displayWidth; - srcPitch = -pI830->rotate * pI830->shadowPitch; - - while(num--) { - width = pbox->x2 - pbox->x1; - y1 = pbox->y1 & ~3; - y2 = (pbox->y2 + 3) & ~3; - height = (y2 - y1) >> 2; /* in dwords */ - - if(pI830->rotate == 1) { - dstPtr = pI830->FbBase + - (pbox->x1 * dstPitch) + pScrn->virtualX - y2; - srcPtr = pI830->shadowPtr + ((1 - y2) * srcPitch) + pbox->x1; - } else { - dstPtr = pI830->FbBase + - ((pScrn->virtualY - pbox->x2) * dstPitch) + y1; - srcPtr = pI830->shadowPtr + (y1 * srcPitch) + pbox->x2 - 1; - } - - while(width--) { - src = srcPtr; - dst = (CARD32*)dstPtr; - count = height; - while(count--) { - *(dst++) = src[0] | (src[srcPitch] << 8) | - (src[srcPitch * 2] << 16) | - (src[srcPitch * 3] << 24); - src += srcPitch * 4; - } - srcPtr += pI830->rotate; - dstPtr += dstPitch; - } - - pbox++; - } -} - - -void -I830RefreshArea16(ScrnInfoPtr pScrn, int num, BoxPtr pbox) -{ - I830Ptr pI830 = I830PTR(pScrn); - int count, width, height, y1, y2, dstPitch, srcPitch; - CARD16 *dstPtr, *srcPtr, *src; - CARD32 *dst; - - dstPitch = pScrn->displayWidth; - srcPitch = -pI830->rotate * pI830->shadowPitch >> 1; - - while(num--) { - width = pbox->x2 - pbox->x1; - y1 = pbox->y1 & ~1; - y2 = (pbox->y2 + 1) & ~1; - height = (y2 - y1) >> 1; /* in dwords */ - - if(pI830->rotate == 1) { - dstPtr = (CARD16*)pI830->FbBase + - (pbox->x1 * dstPitch) + pScrn->virtualX - y2; - srcPtr = (CARD16*)pI830->shadowPtr + - ((1 - y2) * srcPitch) + pbox->x1; - } else { - dstPtr = (CARD16*)pI830->FbBase + - ((pScrn->virtualY - pbox->x2) * dstPitch) + y1; - srcPtr = (CARD16*)pI830->shadowPtr + - (y1 * srcPitch) + pbox->x2 - 1; - } - - while(width--) { - src = srcPtr; - dst = (CARD32*)dstPtr; - count = height; - while(count--) { - *(dst++) = src[0] | (src[srcPitch] << 16); - src += srcPitch * 2; - } - srcPtr += pI830->rotate; - dstPtr += dstPitch; - } - - pbox++; - } -} - - -/* this one could be faster */ -void -I830RefreshArea24(ScrnInfoPtr pScrn, int num, BoxPtr pbox) -{ - I830Ptr pI830 = I830PTR(pScrn); - int count, width, height, y1, y2, dstPitch, srcPitch; - CARD8 *dstPtr, *srcPtr, *src; - CARD32 *dst; - - dstPitch = BitmapBytePad(pScrn->displayWidth * 24); - srcPitch = -pI830->rotate * pI830->shadowPitch; - - while(num--) { - width = pbox->x2 - pbox->x1; - y1 = pbox->y1 & ~3; - y2 = (pbox->y2 + 3) & ~3; - height = (y2 - y1) >> 2; /* blocks of 3 dwords */ - - if(pI830->rotate == 1) { - dstPtr = pI830->FbBase + - (pbox->x1 * dstPitch) + ((pScrn->virtualX - y2) * 3); - srcPtr = pI830->shadowPtr + ((1 - y2) * srcPitch) + (pbox->x1 * 3); - } else { - dstPtr = pI830->FbBase + - ((pScrn->virtualY - pbox->x2) * dstPitch) + (y1 * 3); - srcPtr = pI830->shadowPtr + (y1 * srcPitch) + (pbox->x2 * 3) - 3; - } - - while(width--) { - src = srcPtr; - dst = (CARD32*)dstPtr; - count = height; - while(count--) { - dst[0] = src[0] | (src[1] << 8) | (src[2] << 16) | - (src[srcPitch] << 24); - dst[1] = src[srcPitch + 1] | (src[srcPitch + 2] << 8) | - (src[srcPitch * 2] << 16) | - (src[(srcPitch * 2) + 1] << 24); - dst[2] = src[(srcPitch * 2) + 2] | (src[srcPitch * 3] << 8) | - (src[(srcPitch * 3) + 1] << 16) | - (src[(srcPitch * 3) + 2] << 24); - dst += 3; - src += srcPitch * 4; - } - srcPtr += pI830->rotate * 3; - dstPtr += dstPitch; - } - - pbox++; - } -} - -void -I830RefreshArea32(ScrnInfoPtr pScrn, int num, BoxPtr pbox) -{ - I830Ptr pI830 = I830PTR(pScrn); - int count, width, height, dstPitch, srcPitch; - CARD32 *dstPtr, *srcPtr, *src, *dst; - - dstPitch = pScrn->displayWidth; - srcPitch = -pI830->rotate * pI830->shadowPitch >> 2; - - while(num--) { - width = pbox->x2 - pbox->x1; - height = pbox->y2 - pbox->y1; - - if(pI830->rotate == 1) { - dstPtr = (CARD32*)pI830->FbBase + - (pbox->x1 * dstPitch) + pScrn->virtualX - pbox->y2; - srcPtr = (CARD32*)pI830->shadowPtr + - ((1 - pbox->y2) * srcPitch) + pbox->x1; - } else { - dstPtr = (CARD32*)pI830->FbBase + - ((pScrn->virtualY - pbox->x2) * dstPitch) + pbox->y1; - srcPtr = (CARD32*)pI830->shadowPtr + - (pbox->y1 * srcPitch) + pbox->x2 - 1; - } - - while(width--) { - src = srcPtr; - dst = dstPtr; - count = height; - while(count--) { - *(dst++) = *src; - src += srcPitch; - } - srcPtr += pI830->rotate; - dstPtr += dstPitch; - } - - pbox++; - } -} |