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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? atidri.c

?? x.org上有關(guān)ati系列顯卡最新驅(qū)動
?? C
?? 第 1 頁 / 共 4 頁
字號:
   pATI->have3DWindows = TRUE;}#endif /* USE_XAA */#ifdef USE_EXAstatic void ATIDRITransitionTo2d_EXA(ScreenPtr pScreen){   ScrnInfoPtr pScreenInfo = xf86Screens[pScreen->myNum];   ATIPtr pATI = ATIPTR(pScreenInfo);#if 0   ATIDRIServerInfoPtr pATIDRIServer = pATI->pDRIServerInfo;   exaEnableDisableFBAccess(pScreen->myNum, FALSE);   pATI->pExa->offScreenBase = pATIDRIServer->backOffset;   exaEnableDisableFBAccess(pScreen->myNum, TRUE);#endif   pATI->have3DWindows = FALSE;}static void ATIDRITransitionTo3d_EXA(ScreenPtr pScreen){   ScrnInfoPtr pScreenInfo = xf86Screens[pScreen->myNum];   ATIPtr pATI = ATIPTR(pScreenInfo);#if 0   ATIDRIServerInfoPtr pATIDRIServer = pATI->pDRIServerInfo;   exaEnableDisableFBAccess(pScreen->myNum, FALSE);   pATI->pExa->offScreenBase = pATIDRIServer->textureOffset +			       pATIDRIServer->textureSize;   exaEnableDisableFBAccess(pScreen->myNum, TRUE);#endif   pATI->have3DWindows = TRUE;}#endif /* USE_EXA *//* Initialize the state of the back and depth buffers. */static void ATIDRIInitBuffers( WindowPtr pWin, RegionPtr prgn, CARD32 indx ){#ifdef USE_XAA   ScreenPtr   pScreen = pWin->drawable.pScreen;   ScrnInfoPtr pScreenInfo   = xf86Screens[pScreen->myNum];   ATIPtr pATI = ATIPTR(pScreenInfo);   ATIDRIServerInfoPtr pATIDRIServer = pATI->pDRIServerInfo;   XAAInfoRecPtr pXAAInfo = pATI->pXAAInfo;   BoxPtr      pbox, pboxSave;   int         nbox, nboxSave;   int         depth;   depth = 0x0000ffff;   if (!pXAAInfo)      return;   if (!pXAAInfo->SetupForSolidFill)      return;      /* FIXME: Only initialize the back and depth buffers for contexts      that request them */   /* FIXME: Use drm clear? (see Radeon driver) */   pboxSave = pbox = REGION_RECTS(prgn);   nboxSave = nbox = REGION_NUM_RECTS(prgn);   (*pXAAInfo->SetupForSolidFill)(pScreenInfo, 0, GXcopy, (CARD32)(-1));   for (; nbox; nbox--, pbox++) {      (*pXAAInfo->SubsequentSolidFillRect)(pScreenInfo,					      pbox->x1 + pATIDRIServer->fbX,					      pbox->y1 + pATIDRIServer->fbY,					      pbox->x2 - pbox->x1,					      pbox->y2 - pbox->y1);      (*pXAAInfo->SubsequentSolidFillRect)(pScreenInfo,					      pbox->x1 + pATIDRIServer->backX,					      pbox->y1 + pATIDRIServer->backY,					      pbox->x2 - pbox->x1,					      pbox->y2 - pbox->y1);   }   pbox = pboxSave;   nbox = nboxSave;   (*pXAAInfo->SetupForSolidFill)(pScreenInfo, depth, GXcopy, (CARD32)(-1));   for (; nbox; nbox--, pbox++)      (*pXAAInfo->SubsequentSolidFillRect)(pScreenInfo,					      pbox->x1 + pATIDRIServer->depthX,					      pbox->y1 + pATIDRIServer->depthY,					      pbox->x2 - pbox->x1,					      pbox->y2 - pbox->y1);   ATIDRIMarkSyncInt(pScreenInfo);#endif}/* Copy the back and depth buffers when the X server moves a window. *  * Note: this function was copied from the Radeon driver... *  * This routine is a modified form of XAADoBitBlt with the calls to * ScreenToScreenBitBlt built in. My routine has the prgnSrc as source * instead of destination. My origin is upside down so the ydir cases * are reversed. */static void ATIDRIMoveBuffers( WindowPtr pWin, DDXPointRec ptOldOrg,			       RegionPtr prgnSrc, CARD32 indx ){#ifdef USE_XAA    ScreenPtr pScreen = pWin->drawable.pScreen;    ScrnInfoPtr pScreenInfo = xf86Screens[pScreen->myNum];    ATIPtr pATI = ATIPTR(pScreenInfo);    XAAInfoRecPtr pXAAInfo = pATI->pXAAInfo;    int backOffsetPitch =  (((pATI->pDRIServerInfo->backPitch/8) << 22) |					   (pATI->pDRIServerInfo->backOffset >> 3));#if 0    int depthOffsetPitch = (((pATI->pDRIServerInfo->depthPitch/8) << 22) |					   (pATI->pDRIServerInfo->depthOffset >> 3));#endif    BoxPtr        pboxTmp, pboxNext, pboxBase;    DDXPointPtr   pptTmp;    int           xdir, ydir;    int           screenwidth = pScreenInfo->virtualX;    int           screenheight = pScreenInfo->virtualY;    BoxPtr        pbox     = REGION_RECTS(prgnSrc);    int           nbox     = REGION_NUM_RECTS(prgnSrc);    BoxPtr        pboxNew1 = NULL;    BoxPtr        pboxNew2 = NULL;    DDXPointPtr   pptNew1  = NULL;    DDXPointPtr   pptNew2  = NULL;    DDXPointPtr   pptSrc   = &ptOldOrg;    int           dx       = pWin->drawable.x - ptOldOrg.x;    int           dy       = pWin->drawable.y - ptOldOrg.y;   if (!pXAAInfo)      return;   if (!pXAAInfo->SetupForScreenToScreenCopy)      return;    /* FIXME: Only move the back and depth buffers for contexts     * that request them.     */    /* If the copy will overlap in Y, reverse the order */    if (dy > 0) {	ydir = -1;	if (nbox > 1) {	    /* Keep ordering in each band, reverse order of bands */	    pboxNew1 = (BoxPtr)ALLOCATE_LOCAL(sizeof(BoxRec)*nbox);	    if (!pboxNew1) return;	    pptNew1 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec)*nbox);	    if (!pptNew1) {		DEALLOCATE_LOCAL(pboxNew1);		return;	    }	    pboxBase = pboxNext = pbox+nbox-1;	    while (pboxBase >= pbox) {		while ((pboxNext >= pbox) && (pboxBase->y1 == pboxNext->y1))		    pboxNext--;		pboxTmp = pboxNext+1;		pptTmp  = pptSrc + (pboxTmp - pbox);		while (pboxTmp <= pboxBase) {		    *pboxNew1++ = *pboxTmp++;		    *pptNew1++  = *pptTmp++;		}		pboxBase = pboxNext;	    }	    pboxNew1 -= nbox;	    pbox      = pboxNew1;	    pptNew1  -= nbox;	    pptSrc    = pptNew1;	}    } else {	/* No changes required */	ydir = 1;    }    /* If the regions will overlap in X, reverse the order */    if (dx > 0) {	xdir = -1;	if (nbox > 1) {	    /* reverse order of rects in each band */	    pboxNew2 = (BoxPtr)ALLOCATE_LOCAL(sizeof(BoxRec)*nbox);	    pptNew2  = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec)*nbox);	    if (!pboxNew2 || !pptNew2) {		DEALLOCATE_LOCAL(pptNew2);		DEALLOCATE_LOCAL(pboxNew2);		DEALLOCATE_LOCAL(pptNew1);		DEALLOCATE_LOCAL(pboxNew1);		return;	    }	    pboxBase = pboxNext = pbox;	    while (pboxBase < pbox+nbox) {		while ((pboxNext < pbox+nbox)		       && (pboxNext->y1 == pboxBase->y1))		    pboxNext++;		pboxTmp = pboxNext;		pptTmp  = pptSrc + (pboxTmp - pbox);		while (pboxTmp != pboxBase) {		    *pboxNew2++ = *--pboxTmp;		    *pptNew2++  = *--pptTmp;		}		pboxBase = pboxNext;	    }	    pboxNew2 -= nbox;	    pbox      = pboxNew2;	    pptNew2  -= nbox;	    pptSrc    = pptNew2;	}    } else {	/* No changes are needed */	xdir = 1;    }    (*pXAAInfo->SetupForScreenToScreenCopy)(pScreenInfo, xdir, ydir, GXcopy,					       (CARD32)(-1), -1);    for (; nbox-- ; pbox++) {	int xa    = pbox->x1;	int ya    = pbox->y1;	int destx = xa + dx;	int desty = ya + dy;	int w     = pbox->x2 - xa + 1;	int h     = pbox->y2 - ya + 1;	if (destx < 0)                xa -= destx, w += destx, destx = 0;	if (desty < 0)                ya -= desty, h += desty, desty = 0;	if (destx + w > screenwidth)  w = screenwidth  - destx;	if (desty + h > screenheight) h = screenheight - desty;	if (w <= 0) continue;	if (h <= 0) continue;	ATIMach64WaitForFIFO(pATI, 2);	outf(SRC_OFF_PITCH, backOffsetPitch);	outf(DST_OFF_PITCH, backOffsetPitch);	(*pXAAInfo->SubsequentScreenToScreenCopy)(pScreenInfo,						     xa, ya,						     destx, desty,						     w, h);#if 0	/* FIXME: Move depth buffers? */	ATIMach64WaitForFIFO(pATI, 2);	outf(SRC_OFF_PITCH, depthOffsetPitch);	outf(DST_OFF_PITCH, depthOffsetPitch);	if (pATI->depthMoves)	    ATIScreenToScreenCopyDepth(pScreenInfo,					  xa, ya,					  destx, desty,					  w, h);#endif    }    ATIMach64WaitForFIFO(pATI, 2);    outf(SRC_OFF_PITCH, pATI->NewHW.dst_off_pitch);    outf(DST_OFF_PITCH, pATI->NewHW.src_off_pitch);    DEALLOCATE_LOCAL(pptNew2);    DEALLOCATE_LOCAL(pboxNew2);    DEALLOCATE_LOCAL(pptNew1);    DEALLOCATE_LOCAL(pboxNew1);    ATIDRIMarkSyncInt(pScreenInfo);#endif}/* Compute log base 2 of val. */static int Mach64MinBits(int val){    int bits;    if (!val) return 1;    for (bits = 0; val; val >>= 1, ++bits);    return bits;}static Bool ATIDRISetAgpMode( ScreenPtr pScreen ){   ScrnInfoPtr pScreenInfo = xf86Screens[pScreen->myNum];   ATIPtr pATI = ATIPTR(pScreenInfo);   ATIDRIServerInfoPtr pATIDRIServer = pATI->pDRIServerInfo;   unsigned long mode   = drmAgpGetMode( pATI->drmFD );        /* Default mode */   unsigned int vendor = drmAgpVendorId( pATI->drmFD );   unsigned int device = drmAgpDeviceId( pATI->drmFD );   if (pATI->OptionAGPMode > 0 && pATI->OptionAGPMode <= ATI_AGP_MAX_MODE) {      pATIDRIServer->agpMode = pATI->OptionAGPMode;      xf86DrvMsg( pScreen->myNum, X_CONFIG, "[agp] Using AGP %dx Mode\n", 		  pATIDRIServer->agpMode );   } else if (pATI->OptionAGPMode > 0) {      xf86DrvMsg( pScreen->myNum, X_ERROR, "[agp] Illegal AGP Mode: %d\n", 		  pATI->OptionAGPMode );      return FALSE;   } else {      /* If no mode configured, use the default mode obtained from agpgart */      if ( mode & AGP_MODE_2X ) {	 pATIDRIServer->agpMode = 2;      } else if ( mode & AGP_MODE_1X ) {	 pATIDRIServer->agpMode = 1;      }      xf86DrvMsg( pScreen->myNum, X_DEFAULT, "[agp] Using AGP %dx Mode\n", 		  pATIDRIServer->agpMode );   }   mode &= ~AGP_MODE_MASK;   switch ( pATIDRIServer->agpMode ) {   case 2:          mode |= AGP_MODE_2X;   case 1: default: mode |= AGP_MODE_1X;   }   if (pATI->OptionAGPSize) {      switch (pATI->OptionAGPSize) {      case 128:      case  64:      case  32:      case  16:      case   8:      case   4:	 pATIDRIServer->agpSize = pATI->OptionAGPSize;	 xf86DrvMsg( pScreen->myNum, X_CONFIG, "[agp] Using %d MB AGP aperture\n", 		     pATIDRIServer->agpSize );	 break;      default:	 xf86DrvMsg( pScreen->myNum, X_ERROR,		     "[agp] Illegal aperture size %d MB\n", pATI->OptionAGPSize );	 return FALSE;      }   } else {      xf86DrvMsg( pScreen->myNum, X_DEFAULT, "[agp] Using %d MB AGP aperture\n", 		  pATIDRIServer->agpSize );   }   xf86DrvMsg( pScreen->myNum, X_INFO,	       "[agp] Mode 0x%08lx [AGP 0x%04x/0x%04x; Card 0x%04x/0x%04x]\n",	       mode, vendor, device,	       pATI->PCIInfo->vendor,	       pATI->PCIInfo->chipType );   if ( drmAgpEnable( pATI->drmFD, mode ) < 0 ) {      xf86DrvMsg( pScreen->myNum, X_ERROR, "[agp] AGP not enabled\n" );      drmAgpRelease( pATI->drmFD );      return FALSE;   }   return TRUE;}/* Initialize the AGP state.  Request memory for use in AGP space, and * initialize the Rage Pro registers to point to that memory. */static Bool ATIDRIAgpInit( ScreenPtr pScreen ){   ScrnInfoPtr pScreenInfo = xf86Screens[pScreen->myNum];   ATIPtr pATI = ATIPTR(pScreenInfo);   ATIDRIServerInfoPtr pATIDRIServer = pATI->pDRIServerInfo;   int ret;   unsigned long cntl;   int s, l;   pATIDRIServer->agpSize = ATI_DEFAULT_AGP_SIZE;   pATIDRIServer->agpMode = ATI_DEFAULT_AGP_MODE;   pATIDRIServer->bufferSize = ATI_DEFAULT_BUFFER_SIZE;   pATIDRIServer->ringSize = 16; /* 16 kB ring */   if ( drmAgpAcquire( pATI->drmFD ) < 0 ) {      xf86DrvMsg( pScreen->myNum, X_WARNING, "[agp] AGP not available\n" );      return FALSE;   }   if (!ATIDRISetAgpMode( pScreen ))      return FALSE;   pATIDRIServer->agpOffset = 0;   ret = drmAgpAlloc( pATI->drmFD, pATIDRIServer->agpSize*1024*1024,		      0, NULL, &pATIDRIServer->agpHandle );   if ( ret < 0 ) {      xf86DrvMsg( pScreen->myNum, X_ERROR, "[agp] Out of memory (%d)\n", ret );      drmAgpRelease( pATI->drmFD );      return FALSE;   }   xf86DrvMsg( pScreen->myNum, X_INFO,	       "[agp] %d kB allocated with handle 0x%08x\n",	       pATIDRIServer->agpSize*1024, pATIDRIServer->agpHandle );   if ( drmAgpBind( pATI->drmFD, pATIDRIServer->agpHandle, pATIDRIServer->agpOffset) < 0 ) {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人一级电影| 中文字幕国产一区二区| 久久一夜天堂av一区二区三区 | 精品夜夜嗨av一区二区三区| 成人一区二区视频| 日韩欧美在线网站| 亚洲免费av高清| 亚洲成a人v欧美综合天堂下载| 国内外成人在线| 欧美日韩一区高清| 亚洲色图欧美激情| 国产乱子轮精品视频| 欧美一区二区精品在线| 亚洲欧美另类在线| 国产一区二区三区不卡在线观看| 制服.丝袜.亚洲.中文.综合| 国产精品热久久久久夜色精品三区| 激情综合亚洲精品| 欧美肥大bbwbbw高潮| 国产婷婷色一区二区三区| 免费在线观看视频一区| 日本乱码高清不卡字幕| 亚洲欧美自拍偷拍色图| 国产丶欧美丶日本不卡视频| 精品三级av在线| 日韩高清电影一区| 99vv1com这只有精品| 国产精品久久久久四虎| 国产曰批免费观看久久久| 日韩欧美精品在线| 日韩经典中文字幕一区| 欧美日韩国产免费| 一区二区三区久久久| 色菇凉天天综合网| 中文字幕制服丝袜成人av| 日韩女优av电影| 国产精品黄色在线观看| 成人午夜视频网站| 678五月天丁香亚洲综合网| 亚洲一区二区三区四区中文字幕| 成人激情电影免费在线观看| 日韩欧美色综合| 三级久久三级久久| 欧美久久久久久蜜桃| 日日夜夜免费精品视频| 欧美无砖砖区免费| 亚洲mv在线观看| 欧美在线你懂的| 天天综合网天天综合色| 欧美日韩一级视频| 亚洲成va人在线观看| 欧美网站大全在线观看| 一区二区三区资源| 欧洲一区二区三区在线| 亚洲高清视频在线| 91精品国产丝袜白色高跟鞋| 三级久久三级久久久| 精品久久一区二区三区| 精品一二三四在线| 69久久夜色精品国产69蝌蚪网| 人人狠狠综合久久亚洲| 日韩三级视频在线看| 狠狠网亚洲精品| www国产成人免费观看视频 深夜成人网| 国产黑丝在线一区二区三区| 久久日韩粉嫩一区二区三区| 国产米奇在线777精品观看| 国产午夜精品理论片a级大结局| 国产一区二区三区黄视频| 国产精品美女久久久久av爽李琼| 99久久99久久精品免费看蜜桃 | 欧洲精品视频在线观看| 亚洲国产精品久久久久秋霞影院| 51久久夜色精品国产麻豆| 男女性色大片免费观看一区二区| 在线播放/欧美激情| 国产一区二区看久久| 国产精品区一区二区三| 色综合久久99| 午夜精品福利在线| 精品少妇一区二区三区视频免付费 | 91成人免费在线| 午夜精品久久久久| 久久久久国产精品厨房| 99久久国产综合色|国产精品| 午夜精品久久久久久久蜜桃app| 日韩欧美国产综合在线一区二区三区| 国产伦精品一区二区三区在线观看| 最新高清无码专区| 欧美伦理电影网| 成人天堂资源www在线| 亚洲男同1069视频| 精品卡一卡二卡三卡四在线| www.一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 国产午夜精品一区二区三区嫩草| 日本韩国欧美一区二区三区| 日韩黄色小视频| 欧美日韩成人综合天天影院| 精品综合久久久久久8888| 国产精品久久久久久久久晋中| 91精品蜜臀在线一区尤物| 国产成人欧美日韩在线电影 | 91国偷自产一区二区开放时间| 国产精品久久久久久久久图文区 | 亚洲欧洲三级电影| 色婷婷av一区| 国内精品写真在线观看| 亚洲精品ww久久久久久p站| 日韩精品一区二| 欧美熟乱第一页| 国产成人av自拍| 午夜成人免费视频| 国产精品久久午夜夜伦鲁鲁| 欧美日韩午夜在线| 成人综合婷婷国产精品久久蜜臀 | 日韩av不卡在线观看| 国产精品女上位| 91精品国产91久久久久久最新毛片| 风间由美中文字幕在线看视频国产欧美 | 麻豆一区二区在线| 国产精品天干天干在线综合| 在线播放中文一区| 日韩高清不卡一区二区| 国产精品白丝在线| 91高清视频在线| 国产精品538一区二区在线| 午夜国产不卡在线观看视频| 国产精品久久久久久久蜜臀| 欧美大度的电影原声| 日本久久电影网| 久久国产综合精品| 久久一留热品黄| 日本一道高清亚洲日美韩| 成人久久18免费网站麻豆 | 青青草一区二区三区| 中文字幕一区二区在线播放| 欧美一区二区高清| 99久久精品国产麻豆演员表| 久久精品国产亚洲高清剧情介绍 | 欧美精品一区二区三区很污很色的| 91麻豆成人久久精品二区三区| 粉嫩av亚洲一区二区图片| 美国av一区二区| 蜜臀精品久久久久久蜜臀 | 精品精品欲导航| 欧美精品久久99久久在免费线| 91免费视频网| www.日韩av| 成人在线视频一区| 国产麻豆精品久久一二三| 日日摸夜夜添夜夜添国产精品| 一区二区三区国产| 亚洲精品乱码久久久久久久久 | 国产精品国产自产拍高清av王其| 欧美久久一二三四区| 欧美三区在线观看| 欧洲视频一区二区| 一本色道亚洲精品aⅴ| 国产另类ts人妖一区二区| 国产美女av一区二区三区| 狠狠色狠狠色综合| 精品一区二区成人精品| 久久国产精品露脸对白| 麻豆一区二区三| 蜜臀av一级做a爰片久久| 免费观看在线色综合| 日本不卡中文字幕| 日本不卡视频在线| 另类成人小视频在线| 国产中文字幕一区| 国产成人在线视频网站| 成人免费高清视频| 95精品视频在线| 国产精品1024久久| 成人a区在线观看| 99国产欧美另类久久久精品| 91成人免费在线视频| 色偷偷88欧美精品久久久| 欧美三级日韩在线| 91麻豆精品国产自产在线| 久久一留热品黄| 精品国产网站在线观看| 国产精品美女久久久久久久| 精品国产污污免费网站入口| 久久久久久一二三区| 久久一区二区三区国产精品| 国产欧美日韩亚州综合| 亚洲国产高清aⅴ视频| 亚洲少妇中出一区| 午夜精品一区在线观看| 喷水一区二区三区| 狠狠色丁香久久婷婷综| 精品一区二区影视| 国产激情精品久久久第一区二区| 成人性色生活片| 日本不卡123| 成人毛片视频在线观看| 91在线国内视频| 日韩一区二区电影在线|