亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? atiscreen.c

?? x.org上有關ati系列顯卡最新驅動
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atiscreen.c,v 1.30 2003/04/23 21:51:30 tsi Exp $ *//* * Copyright 1999 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting documentation, and * that the name of Marc Aurele La France not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission.  Marc Aurele La France makes no representations * about the suitability of this software for any purpose.  It is provided * "as-is" without express or implied warranty. * * MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO * EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. * * DRI support by: *    Gareth Hughes <gareth@valinux.com> *    José Fonseca <j_r_fonseca@yahoo.co.uk> *    Leif Delgass <ldelgass@retinalburn.net> */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <string.h>#include "ati.h"#include "atibus.h"#include "atichip.h"#include "atiaccel.h"#include "aticonsole.h"#include "aticursor.h"#include "atidac.h"#include "atidga.h"#include "atidri.h"#include "atimach64.h"#include "atimode.h"#include "atiscreen.h"#include "atistruct.h"#include "atixv.h"#include "atimach64accel.h"#ifdef XF86DRI_DEVEL#include "mach64_dri.h"#include "mach64_sarea.h"#endif#ifdef TV_OUT#include "atichip.h"#endif /* TV_OUT */#include "shadowfb.h"#include "xf86cmap.h"#include "xf1bpp.h"#include "xf4bpp.h"#include "fb.h"#include "mibank.h"#include "micmap.h"#include "mipointer.h"/* * ATIRefreshArea -- * * This function is called by the shadow frame buffer code to refresh the * hardware frame buffer. */static voidATIRefreshArea(    ScrnInfoPtr pScreenInfo,    int         nBox,    BoxPtr      pBox){    ATIPtr  pATI = ATIPTR(pScreenInfo);    pointer pSrc, pDst;    int     offset, w, h;    while (nBox-- > 0)    {        w = (pBox->x2 - pBox->x1) * pATI->AdjustDepth;        h = pBox->y2 - pBox->y1;        offset = (pBox->y1 * pATI->FBPitch) + (pBox->x1 * pATI->AdjustDepth);        pSrc = (char *)pATI->pShadow + offset;        pDst = (char *)pATI->pMemory + offset;        while (h-- > 0)        {            (void)memcpy(pDst, pSrc, w);            pSrc = (char *)pSrc + pATI->FBPitch;            pDst = (char *)pDst + pATI->FBPitch;        }        pBox++;    }}/* * ATIMinBits -- * * Compute log base 2 of val. */static intATIMinBits(    int val){    int bits;    if (!val) return 1;    for (bits = 0; val; val >>= 1, ++bits);    return bits;}#ifdef USE_XAAstatic BoolATIMach64SetupMemXAA_NoDRI(    int       iScreen,    ScreenPtr pScreen){    ScrnInfoPtr  pScreenInfo = xf86Screens[iScreen];    ATIPtr       pATI        = ATIPTR(pScreenInfo);    int maxScanlines = ATIMach64MaxY;    int maxPixelArea, PixelArea;#ifndef AVOID_CPIO    if (!pATI->BankInfo.BankSize)#endif /* AVOID_CPIO */    {        /*         * Note:  If PixelArea exceeds the engine's maximum, the excess is         *        never used, even though it would be useful for such things         *        as XVideo buffers.         */        maxPixelArea = maxScanlines * pScreenInfo->displayWidth;        PixelArea = pScreenInfo->videoRam * 1024 * 8 / pATI->bitsPerPixel;        if (PixelArea > maxPixelArea)            PixelArea = maxPixelArea;        xf86InitFBManagerArea(pScreen, PixelArea, 2);    }    return TRUE;}#ifdef XF86DRI_DEVEL/* * Memory layour for XAA with DRI (no local_textures): * | front  | pixmaps, xv | back   | depth  | textures | c | * * 1024x768@16bpp with 8 MB: * | 1.5 MB | ~3.5 MB     | 1.5 MB | 1.5 MB | 0        | c | * * 1024x768@32bpp with 8 MB: * | 3.0 MB | ~0.5 MB     | 3.0 MB | 1.5 MB | 0        | c | * * "c" is the hw cursor which occupies 1KB */static BoolATIMach64SetupMemXAA(    int       iScreen,    ScreenPtr pScreen){	ScrnInfoPtr  pScreenInfo = xf86Screens[iScreen];	ATIPtr       pATI        = ATIPTR(pScreenInfo);	ATIDRIServerInfoPtr pATIDRIServer = pATI->pDRIServerInfo;	int cpp = pATI->bitsPerPixel >> 3;	int widthBytes = pScreenInfo->displayWidth * cpp;	int zWidthBytes = pScreenInfo->displayWidth * 2; /* always 16-bit z-buffer */	int fbSize = pScreenInfo->videoRam * 1024;	int bufferSize = pScreenInfo->virtualY * widthBytes;	int zBufferSize = pScreenInfo->virtualY * zWidthBytes;	int offscreenBytes, total, scanlines;	pATIDRIServer->fbX = 0;	pATIDRIServer->fbY = 0;	pATIDRIServer->frontOffset = 0;	pATIDRIServer->frontPitch = pScreenInfo->displayWidth;	/* Calculate memory remaining for pixcache and textures after 	 * front, back, and depth buffers	 */	offscreenBytes = fbSize - ( 2 * bufferSize + zBufferSize );	if ( !pATIDRIServer->IsPCI && !pATI->OptionLocalTextures ) {	    /* Don't allocate a local texture heap for AGP unless requested */	    pATIDRIServer->textureSize = 0;	} else {	    int l, maxPixcache;#ifdef XvExtension	    int xvBytes;	    /* Try for enough pixmap cache for DVD and a full viewport	     */	    xvBytes = 720*480*cpp; /* enough for single-buffered DVD */	    maxPixcache = xvBytes > bufferSize ? xvBytes : bufferSize;#else /* XvExtension */	    /* Try for one viewport */	    maxPixcache = bufferSize;#endif /* XvExtension */	    pATIDRIServer->textureSize = offscreenBytes - maxPixcache;	    /* If that gives us less than half the offscreen mem available for textures, split 	     * the available mem between textures and pixmap cache	     */	    if (pATIDRIServer->textureSize < (offscreenBytes/2)) {		pATIDRIServer->textureSize = offscreenBytes/2;	    }	    if (pATIDRIServer->textureSize <= 0)		pATIDRIServer->textureSize = 0;	    l = ATIMinBits((pATIDRIServer->textureSize-1) / MACH64_NR_TEX_REGIONS);	    if (l < MACH64_LOG_TEX_GRANULARITY) l = MACH64_LOG_TEX_GRANULARITY;	    /* Round the texture size up to the nearest whole number of	     * texture regions.  Again, be greedy about this, don't round	     * down.	     */	    pATIDRIServer->logTextureGranularity = l;	    pATIDRIServer->textureSize =		(pATIDRIServer->textureSize >> l) << l;	}	total = fbSize - pATIDRIServer->textureSize;	scanlines = total / widthBytes;	if (scanlines > ATIMach64MaxY) scanlines = ATIMach64MaxY;	/* Recalculate the texture offset and size to accomodate any	 * rounding to a whole number of scanlines.	 * FIXME: Is this actually needed?	 */	pATIDRIServer->textureOffset = scanlines * widthBytes;	pATIDRIServer->textureSize = fbSize - pATIDRIServer->textureOffset;	/* Set a minimum usable local texture heap size.  This will fit	 * two 256x256 textures.  We check this after any rounding of	 * the texture area.	 */	if (pATIDRIServer->textureSize < 256*256 * cpp * 2) {	    pATIDRIServer->textureOffset = 0;	    pATIDRIServer->textureSize = 0;	    scanlines = fbSize / widthBytes;	    if (scanlines > ATIMach64MaxY) scanlines = ATIMach64MaxY;	}	pATIDRIServer->depthOffset = scanlines * widthBytes - zBufferSize;	pATIDRIServer->depthPitch = pScreenInfo->displayWidth;	pATIDRIServer->depthY = pATIDRIServer->depthOffset/widthBytes;	pATIDRIServer->depthX =  (pATIDRIServer->depthOffset - 				  (pATIDRIServer->depthY * widthBytes)) / cpp;	pATIDRIServer->backOffset = pATIDRIServer->depthOffset - bufferSize;	pATIDRIServer->backPitch = pScreenInfo->displayWidth;	pATIDRIServer->backY = pATIDRIServer->backOffset/widthBytes;	pATIDRIServer->backX =  (pATIDRIServer->backOffset - 				  (pATIDRIServer->backY * widthBytes)) / cpp;	scanlines = fbSize / widthBytes;	if (scanlines > ATIMach64MaxY) scanlines = ATIMach64MaxY;	if ( pATIDRIServer->IsPCI && pATIDRIServer->textureSize == 0 ) {	    xf86DrvMsg(iScreen, X_WARNING,		       "Not enough memory for local textures, disabling DRI\n");	    ATIDRICloseScreen(pScreen);	    pATI->directRenderingEnabled = FALSE;	} else {	    BoxRec ScreenArea;	    ScreenArea.x1 = 0;	    ScreenArea.y1 = 0;	    ScreenArea.x2 = pATI->displayWidth;	    ScreenArea.y2 = scanlines;	    if (!xf86InitFBManager(pScreen, &ScreenArea)) {		xf86DrvMsg(pScreenInfo->scrnIndex, X_ERROR,			   "Memory manager initialization to (%d,%d) (%d,%d) failed\n",			   ScreenArea.x1, ScreenArea.y1,			   ScreenArea.x2, ScreenArea.y2);		return FALSE;	    } else {		int width, height;		xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO,			   "Memory manager initialized to (%d,%d) (%d,%d)\n",			   ScreenArea.x1, ScreenArea.y1, ScreenArea.x2, ScreenArea.y2);		if (xf86QueryLargestOffscreenArea(pScreen, &width, &height, 0, 0, 0)) {		    xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO,			       "Largest offscreen area available: %d x %d\n",			       width, height);		    /* lines in offscreen area needed for depth buffer and textures */		    pATI->depthTexLines = scanlines			- pATIDRIServer->depthOffset / widthBytes;		    pATI->backLines     = scanlines			- pATIDRIServer->backOffset / widthBytes			- pATI->depthTexLines;		    pATI->depthTexArea  = NULL;		    pATI->backArea      = NULL;		} else {		    xf86DrvMsg(pScreenInfo->scrnIndex, X_ERROR, 			       "Unable to determine largest offscreen area available\n");		    return FALSE;		}	    }	    xf86DrvMsg(iScreen, X_INFO, "Will use %d kB of offscreen memory for XAA\n", 		       (offscreenBytes - pATIDRIServer->textureSize)/1024);	    xf86DrvMsg(iScreen, X_INFO, "Will use back buffer at offset 0x%x\n",		       pATIDRIServer->backOffset);	    xf86DrvMsg(iScreen, X_INFO, "Will use depth buffer at offset 0x%x\n",		       pATIDRIServer->depthOffset);	    if (pATIDRIServer->textureSize > 0) {		xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO,			   "Will use %d kB for local textures at offset 0x%x\n",			   pATIDRIServer->textureSize/1024,			   pATIDRIServer->textureOffset);	    }	}	return TRUE;}#endif /* XF86DRI_DEVEL */#endif /* USE_XAA */  	 /* * ATIScreenInit -- * * This function is called by DIX to initialise the screen. */_X_EXPORT BoolATIScreenInit(    int       iScreen,    ScreenPtr pScreen,    int       argc,    char      **argv){    ScrnInfoPtr  pScreenInfo = xf86Screens[iScreen];    ATIPtr       pATI        = ATIPTR(pScreenInfo);    pointer      pFB;    int          VisualMask;    /* Set video hardware state */    if (!ATIEnterGraphics(pScreen, pScreenInfo, pATI))        return FALSE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
秋霞成人午夜伦在线观看| 91黄色免费看| 欧美色爱综合网| 国产精品丝袜久久久久久app| 亚洲成人久久影院| 91一区二区三区在线观看| 26uuu色噜噜精品一区| 亚洲6080在线| 色爱区综合激月婷婷| 亚洲国产经典视频| 国产精品自拍毛片| 精品国产91洋老外米糕| 日本伊人精品一区二区三区观看方式| 色综合久久中文综合久久牛| 国产日韩欧美在线一区| 国产真实乱偷精品视频免| 日韩欧美你懂的| 午夜亚洲国产au精品一区二区| 97久久超碰精品国产| 国产精品传媒在线| 成人av电影观看| 国产精品久久二区二区| 波多野结衣在线aⅴ中文字幕不卡| 精品美女一区二区| 国模少妇一区二区三区| 欧美成人一区二区三区在线观看 | 一区二区三区波多野结衣在线观看| 粉嫩av一区二区三区在线播放| 亚洲精品一区二区三区99| 久久精品理论片| 日韩一区二区三区四区五区六区| 亚洲18女电影在线观看| 91精品国产黑色紧身裤美女| 日韩高清在线电影| 欧美电影免费观看高清完整版在| 久久国产精品一区二区| 久久精品人人做人人爽人人| 国产成人午夜电影网| 1024成人网| 欧美日韩国产首页| 日本vs亚洲vs韩国一区三区二区 | 亚洲成人福利片| 69堂精品视频| 久久se精品一区精品二区| 久久综合色之久久综合| 成人激情免费视频| 亚洲精品久久久蜜桃| 欧美狂野另类xxxxoooo| 捆绑调教一区二区三区| 久久久综合视频| 91视视频在线直接观看在线看网页在线看| 国产精品初高中害羞小美女文| 色婷婷av一区二区三区gif | 成人免费av网站| 亚洲激情图片一区| 日韩欧美一区二区免费| 盗摄精品av一区二区三区| 樱花影视一区二区| 欧美精品一区视频| 色综合天天在线| 老司机免费视频一区二区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产午夜亚洲精品理论片色戒 | 成人永久免费视频| 亚洲最新在线观看| 精品国产乱码久久久久久老虎 | 99久久综合国产精品| 午夜久久久影院| 日本一区二区三区电影| 欧美日韩激情一区| av在线不卡免费看| 免费久久精品视频| 一区二区三区四区不卡视频| 久久影视一区二区| 欧美久久一二三四区| 99久久国产免费看| 国产精品亚洲第一区在线暖暖韩国 | 日韩精品一卡二卡三卡四卡无卡| 亚洲国产精品精华液ab| 91精品国产综合久久香蕉的特点| 成人av片在线观看| 精品午夜久久福利影院 | 中国av一区二区三区| 69堂精品视频| 欧美四级电影网| 91亚洲精品久久久蜜桃网站| 国产精品综合网| 另类调教123区| 欧美96一区二区免费视频| 亚洲最新视频在线观看| 18涩涩午夜精品.www| 国产日韩欧美在线一区| 精品国产三级电影在线观看| 欧美日韩不卡在线| 欧洲一区二区av| 色欧美片视频在线观看在线视频| 国产99一区视频免费 | 图片区小说区国产精品视频| 亚洲视频1区2区| 国产精品天天看| 国产色产综合色产在线视频| 亚洲精品一线二线三线无人区| 91.成人天堂一区| 欧美三级韩国三级日本三斤 | 精品盗摄一区二区三区| 欧美精品久久99| 欧美精品国产精品| 5858s免费视频成人| 制服视频三区第一页精品| 欧美精品久久久久久久久老牛影院| 欧洲视频一区二区| 欧美在线综合视频| 欧美日韩大陆一区二区| 欧美日韩国产首页在线观看| 欧美日韩免费观看一区三区| 欧美群妇大交群中文字幕| 欧美日韩一区二区三区不卡| 欧美剧在线免费观看网站| 欧美福利电影网| 日韩欧美电影一区| 久久免费视频色| 国产精品你懂的| 亚洲综合色区另类av| 香蕉影视欧美成人| 老司机精品视频线观看86| 国产一区不卡视频| 成人精品一区二区三区中文字幕| 91丨porny丨户外露出| 精品视频在线免费| 欧美成人精品1314www| 国产午夜亚洲精品不卡| 成人欧美一区二区三区白人 | 成人蜜臀av电影| 91福利视频网站| 日韩精品一区二| 椎名由奈av一区二区三区| 三级欧美在线一区| 国产精品一级二级三级| 在线亚洲免费视频| 欧美哺乳videos| 亚洲天堂2014| 毛片av一区二区三区| 成人一区二区在线观看| 欧美在线视频全部完| 亚洲精品一区二区三区99| 亚洲精品中文字幕乱码三区| 日本美女视频一区二区| www.色精品| 欧美一级欧美三级在线观看| 国产精品午夜免费| 日本中文一区二区三区| 本田岬高潮一区二区三区| 欧美一级高清大全免费观看| 中文字幕一区二区视频| 免费成人性网站| 色婷婷亚洲精品| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲日本电影在线| 精品一区二区久久久| 色婷婷综合视频在线观看| 国产亚洲欧美一级| 日韩精品欧美精品| 91麻豆免费看| 国产蜜臀av在线一区二区三区| 婷婷综合在线观看| 91香蕉视频黄| 日本一区二区三区国色天香 | 一区二区三区精品在线观看| 国产精品一区二区黑丝| 91精品国产91综合久久蜜臀| 国产精品超碰97尤物18| 精品中文字幕一区二区小辣椒| 欧美图区在线视频| 亚洲人一二三区| 成人av第一页| 中文字幕国产一区二区| 国内久久精品视频| 日韩精品资源二区在线| 亚洲大片一区二区三区| 日本高清视频一区二区| 自拍视频在线观看一区二区| 国产精品一区二区久久不卡 | 一区二区视频在线看| 成人午夜在线免费| 国产女同性恋一区二区| 国产精品伊人色| 久久综合久久鬼色中文字| 蜜臀国产一区二区三区在线播放| 欧美日韩精品一区二区| 亚洲一区二区精品3399| 欧美性xxxxxxxx| 亚洲激情图片qvod| 在线精品亚洲一区二区不卡| 亚洲激情校园春色| 精品视频在线免费观看| 亚洲午夜日本在线观看| 欧美唯美清纯偷拍| 日韩制服丝袜av| 欧美电视剧免费观看| 久久综合综合久久综合|