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

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

?? radeon_exa_funcs.c

?? x.org上有關ati系列顯卡最新驅動
?? C
?? 第 1 頁 / 共 2 頁
字號:
#endif    w *= bpp / 8;    dst += (x * bpp / 8) + (y * dst_pitch);    while (h--) {	memcpy(dst, src, w);	src += src_pitch;	dst += dst_pitch;    }#if X_BYTE_ORDER == X_BIG_ENDIAN    /* restore byte swapping */    OUTREG(RADEON_SURFACE_CNTL, info->ModeReg.surface_cntl);#endif    return TRUE;}#ifdef ACCEL_CP/* Emit blit with arbitrary source and destination offsets and pitches */static voidRADEONBlitChunk(ScrnInfoPtr pScrn, CARD32 datatype, CARD32 src_pitch_offset,		CARD32 dst_pitch_offset, int srcX, int srcY, int dstX, int dstY,		int w, int h){    RADEONInfoPtr info = RADEONPTR(pScrn);    ACCEL_PREAMBLE();    BEGIN_ACCEL(6);    OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL,		  RADEON_GMC_DST_PITCH_OFFSET_CNTL |		  RADEON_GMC_SRC_PITCH_OFFSET_CNTL |		  RADEON_GMC_BRUSH_NONE |		  (datatype << 8) |		  RADEON_GMC_SRC_DATATYPE_COLOR |		  RADEON_ROP3_S |		  RADEON_DP_SRC_SOURCE_MEMORY |		  RADEON_GMC_CLR_CMP_CNTL_DIS |		  RADEON_GMC_WR_MSK_DIS);    OUT_ACCEL_REG(RADEON_SRC_PITCH_OFFSET, src_pitch_offset);    OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, dst_pitch_offset);    OUT_ACCEL_REG(RADEON_SRC_Y_X, (srcY << 16) | srcX);    OUT_ACCEL_REG(RADEON_DST_Y_X, (dstY << 16) | dstX);    OUT_ACCEL_REG(RADEON_DST_HEIGHT_WIDTH, (h << 16) | w);    FINISH_ACCEL();}#endifstatic BoolFUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h,				    char *dst, int dst_pitch){#if defined(ACCEL_CP) || X_BYTE_ORDER == X_BIG_ENDIAN    RINFO_FROM_SCREEN(pSrc->drawable.pScreen);#endif#if X_BYTE_ORDER == X_BIG_ENDIAN    unsigned char *RADEONMMIO = info->MMIO;    unsigned int swapper = info->ModeReg.surface_cntl &	    ~(RADEON_NONSURF_AP0_SWP_32BPP | RADEON_NONSURF_AP1_SWP_32BPP |	      RADEON_NONSURF_AP0_SWP_16BPP | RADEON_NONSURF_AP1_SWP_16BPP);#endif    CARD8	  *src	     = pSrc->devPrivate.ptr;    int		   src_pitch = exaGetPixmapPitch(pSrc);    int		   bpp	     = pSrc->drawable.bitsPerPixel;#ifdef ACCEL_CP    CARD32 datatype, src_pitch_offset, scratch_pitch = (w * bpp/8 + 63) & ~63, scratch_off = 0;    drmBufPtr scratch;#endif    TRACE;#ifdef ACCEL_CP    /*     * Try to accelerate download. Use an indirect buffer as scratch space,     * blitting the bits to one half while copying them out of the other one and     * then swapping the halves.     */    if (info->accelDFS && bpp != 24 && RADEONGetDatatypeBpp(bpp, &datatype) &&	RADEONGetPixmapOffsetPitch(pSrc, &src_pitch_offset) &&	(scratch = RADEONCPGetBuffer(pScrn)))    {	int swap = RADEON_HOST_DATA_SWAP_NONE, wpass = w * bpp / 8;	int hpass = min(h, scratch->total/2 / scratch_pitch);	CARD32 scratch_pitch_offset = scratch_pitch << 16				    | (info->gartLocation + info->bufStart				       + scratch->idx * scratch->total) >> 10;	drmRadeonIndirect indirect;	ACCEL_PREAMBLE();	RADEON_SWITCH_TO_2D();	/* Kick the first blit as early as possible */	RADEONBlitChunk(pScrn, datatype, src_pitch_offset, scratch_pitch_offset,			x, y, 0, 0, w, hpass);	FLUSH_RING();#if X_BYTE_ORDER == X_BIG_ENDIAN	switch (bpp) {	case 16:	  swap = RADEON_HOST_DATA_SWAP_16BIT;	  break;	case 32:	  swap = RADEON_HOST_DATA_SWAP_32BIT;	  break;	}#endif	while (h) {	    int oldhpass = hpass, i = 0;	    src = (CARD8*)scratch->address + scratch_off;	    y += oldhpass;	    h -= oldhpass;	    hpass = min(h, scratch->total/2 / scratch_pitch);	    /* Prepare next blit if anything's left */	    if (hpass) {		scratch_off = scratch->total/2 - scratch_off;		RADEONBlitChunk(pScrn, datatype, src_pitch_offset, scratch_pitch_offset + (scratch_off >> 10),				x, y, 0, 0, w, hpass);	    }	    /*	     * Wait for previous blit to complete.	     *	     * XXX: Doing here essentially the same things this ioctl does in	     * the DRM results in corruption with 'small' transfers, apparently	     * because the data doesn't actually land in system RAM before the	     * memcpy. I suspect the ioctl helps mostly due to its latency; what	     * we'd really need is a way to reliably wait for the host interface	     * to be done with pushing the data to the host.	     */	    while ((drmCommandNone(info->drmFD, DRM_RADEON_CP_IDLE) == -EBUSY)		   && (i++ < RADEON_TIMEOUT))		;	    /* Kick next blit */	    if (hpass)		FLUSH_RING();	    /* Copy out data from previous blit */	    if (wpass == scratch_pitch && wpass == dst_pitch) {		RADEONCopySwap((CARD8*)dst, src, wpass * oldhpass, swap);		dst += dst_pitch * oldhpass;	    } else while (oldhpass--) {		RADEONCopySwap((CARD8*)dst, src, wpass, swap);		src += scratch_pitch;		dst += dst_pitch;	    }	}	indirect.idx = scratch->idx;	indirect.start = indirect.end = 0;	indirect.discard = 1;	drmCommandWriteRead(info->drmFD, DRM_RADEON_INDIRECT,			    &indirect, sizeof(drmRadeonIndirect));	return TRUE;    }#endif    /* Can't accelerate download */    exaWaitSync(pSrc->drawable.pScreen);#if X_BYTE_ORDER == X_BIG_ENDIAN    switch(bpp) {    case 15:    case 16:	swapper |= RADEON_NONSURF_AP0_SWP_16BPP		|  RADEON_NONSURF_AP1_SWP_16BPP;	break;    case 24:    case 32:	swapper |= RADEON_NONSURF_AP0_SWP_32BPP		|  RADEON_NONSURF_AP1_SWP_32BPP;	break;    }    OUTREG(RADEON_SURFACE_CNTL, swapper);#endif    src += (x * bpp / 8) + (y * src_pitch);    w *= bpp / 8;    while (h--) {	memcpy(dst, src, w);	src += src_pitch;	dst += dst_pitch;    }#if X_BYTE_ORDER == X_BIG_ENDIAN    /* restore byte swapping */    OUTREG(RADEON_SURFACE_CNTL, info->ModeReg.surface_cntl);#endif    return TRUE;}Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen){    RINFO_FROM_SCREEN(pScreen);    if (info->exa == NULL) {	xf86DrvMsg(pScreen->myNum, X_ERROR, "Memory map not set up\n");	return FALSE;    }    info->exa->exa_major = 2;    info->exa->exa_minor = 0;    info->exa->PrepareSolid = FUNC_NAME(RADEONPrepareSolid);    info->exa->Solid = FUNC_NAME(RADEONSolid);    info->exa->DoneSolid = FUNC_NAME(RADEONDoneSolid);    info->exa->PrepareCopy = FUNC_NAME(RADEONPrepareCopy);    info->exa->Copy = FUNC_NAME(RADEONCopy);    info->exa->DoneCopy = FUNC_NAME(RADEONDoneCopy);    info->exa->WaitMarker = FUNC_NAME(RADEONSync);    info->exa->UploadToScreen = FUNC_NAME(RADEONUploadToScreen);    info->exa->DownloadFromScreen = FUNC_NAME(RADEONDownloadFromScreen);#if X_BYTE_ORDER == X_BIG_ENDIAN    info->exa->PrepareAccess = RADEONPrepareAccess;    info->exa->FinishAccess = RADEONFinishAccess;#endif /* X_BYTE_ORDER == X_BIG_ENDIAN */    info->exa->flags = EXA_OFFSCREEN_PIXMAPS;    info->exa->pixmapOffsetAlign = RADEON_BUFFER_ALIGN + 1;    info->exa->pixmapPitchAlign = 64;    info->exa->maxX = 2047;    info->exa->maxY = 2047;#ifdef RENDER    if (info->RenderAccel) {	if (info->ChipFamily >= CHIP_FAMILY_R300) {	    xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration "			       "unsupported on R300 type cards and newer.\n");	} else if ((info->ChipFamily == CHIP_FAMILY_RV250) || 		   (info->ChipFamily == CHIP_FAMILY_RV280) || 		   (info->ChipFamily == CHIP_FAMILY_RS300) || 		   (info->ChipFamily == CHIP_FAMILY_R200)) {		xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration "			       "enabled for R200 type cards.\n");		info->exa->CheckComposite = R200CheckComposite;		info->exa->PrepareComposite =		    FUNC_NAME(R200PrepareComposite);		info->exa->Composite = FUNC_NAME(RadeonComposite);		info->exa->DoneComposite = RadeonDoneComposite;	} else {		xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration "			       "enabled for R100 type cards.\n");		info->exa->CheckComposite = R100CheckComposite;		info->exa->PrepareComposite =		    FUNC_NAME(R100PrepareComposite);		info->exa->Composite = FUNC_NAME(RadeonComposite);		info->exa->DoneComposite = RadeonDoneComposite;	}    }#endif    RADEONEngineInit(pScrn);    if (!exaDriverInit(pScreen, info->exa)) {	xfree(info->exa);	return FALSE;    }    exaMarkSync(pScreen);    return TRUE;}#undef FUNC_NAME

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
极品美女销魂一区二区三区 | 亚洲综合色区另类av| 亚洲精品免费看| 麻豆高清免费国产一区| 成人激情免费电影网址| 欧美性猛交xxxxxx富婆| 精品国产免费人成在线观看| 国产精品国产自产拍高清av王其| 国产精品网站在线观看| 亚洲色图色小说| 久久爱www久久做| 色妹子一区二区| 2024国产精品| 亚洲一区二区在线观看视频 | 欧美一区二区三区四区视频| 国产欧美一区二区精品忘忧草| 亚洲自拍都市欧美小说| 国产福利电影一区二区三区| 欧美男生操女生| 日韩理论片一区二区| 国产美女久久久久| 制服.丝袜.亚洲.另类.中文| 日本一区二区三区在线不卡| 美国三级日本三级久久99 | 国产在线播放一区二区三区| 欧美色图免费看| 国产欧美日韩精品在线| 日产国产欧美视频一区精品| 99re免费视频精品全部| 国产亚洲欧洲997久久综合| 青青国产91久久久久久| 色综合久久88色综合天天免费| 久久人人爽爽爽人久久久| 综合亚洲深深色噜噜狠狠网站| 天堂成人国产精品一区| 91黄色免费看| 亚洲靠逼com| 91一区二区三区在线播放| 中文字幕不卡在线| 国产69精品一区二区亚洲孕妇 | 中文字幕亚洲区| 成人深夜视频在线观看| 国产午夜亚洲精品午夜鲁丝片| 韩国一区二区视频| 精品电影一区二区| 激情文学综合网| 久久亚洲捆绑美女| 精品亚洲国内自在自线福利| 日韩欧美国产综合| 狠狠色丁香久久婷婷综| 欧美精品一二三| 丝袜美腿高跟呻吟高潮一区| 91精品久久久久久蜜臀| 蜜桃久久精品一区二区| 久久免费视频一区| 成人一级视频在线观看| 精品蜜桃在线看| 亚洲精品国产一区二区精华液 | 成人欧美一区二区三区小说| 成人黄色在线看| 亚洲天堂免费在线观看视频| 91久久线看在观草草青青 | 精品国产青草久久久久福利| 麻豆一区二区三区| 欧美v亚洲v综合ⅴ国产v| 国内精品视频666| 久久久精品影视| 91理论电影在线观看| 亚洲一二三四在线| 欧美一个色资源| 国产成人免费在线观看不卡| 精品蜜桃在线看| 日韩av不卡在线观看| 久久久亚洲午夜电影| 99re视频这里只有精品| 亚洲国产裸拍裸体视频在线观看乱了| 欧美人伦禁忌dvd放荡欲情| 狠狠色综合播放一区二区| 国产精品人妖ts系列视频| 欧美三片在线视频观看| 韩国毛片一区二区三区| 亚洲日本成人在线观看| 日韩一区二区三区av| 风间由美一区二区三区在线观看 | 成人黄色电影在线| 一级中文字幕一区二区| 精品理论电影在线| 91在线视频在线| 秋霞午夜鲁丝一区二区老狼| 国产精品久久夜| 制服.丝袜.亚洲.另类.中文| 成人激情黄色小说| 美女视频黄a大片欧美| 中文字幕精品综合| 777欧美精品| 99re在线精品| 国产老妇另类xxxxx| 亚洲成人av在线电影| 国产午夜亚洲精品羞羞网站| 91欧美激情一区二区三区成人| 日本欧美一区二区| 亚洲日本在线看| 久久免费精品国产久精品久久久久| 欧美在线影院一区二区| 国产成a人亚洲| 又紧又大又爽精品一区二区| 久久精品夜色噜噜亚洲a∨| 538在线一区二区精品国产| 色婷婷久久综合| 国v精品久久久网| 国产综合色产在线精品| 日韩国产成人精品| 国产精品嫩草99a| 亚洲精品一区在线观看| 日本道免费精品一区二区三区| 天堂成人国产精品一区| 夜夜揉揉日日人人青青一国产精品| 欧美经典三级视频一区二区三区| 精品国产一区a| 精品国产91乱码一区二区三区| 91.xcao| 欧美精品精品一区| 欧美日本一区二区三区四区| 99久久er热在这里只有精品15| 岛国精品一区二区| 成人午夜激情在线| 国产精品夜夜爽| 国产盗摄一区二区| 国产成人欧美日韩在线电影| 国产高清视频一区| 日韩av一级片| 视频在线在亚洲| 亚洲成av人片在线观看无码| 亚洲一区二区精品视频| 亚洲成人福利片| 日欧美一区二区| 麻豆91在线看| 国产一区二区三区四区五区入口 | 香蕉加勒比综合久久| 亚洲成人三级小说| 亚洲一区二区五区| 亚洲一区在线观看免费观看电影高清| 国产精品五月天| 欧美激情一区二区三区蜜桃视频| 欧美国产一区在线| 亚洲视频1区2区| 亚洲国产精品久久艾草纯爱| 午夜视频在线观看一区| 日韩激情一区二区| 美女视频免费一区| 国产精品中文字幕欧美| 91在线观看地址| 欧美日本乱大交xxxxx| 日韩精品在线一区| 中文字幕欧美日韩一区| 亚洲女人的天堂| 亚洲国产一区二区在线播放| 捆绑调教一区二区三区| 精品一区二区三区在线视频| 不卡一区二区在线| 欧美无砖专区一中文字| 精品欧美一区二区在线观看| 中文字幕亚洲欧美在线不卡| 天天操天天干天天综合网| 国内久久精品视频| 91社区在线播放| 欧美一区二区三区视频在线观看| 久久久久亚洲蜜桃| 亚洲综合一区二区三区| 老鸭窝一区二区久久精品| 波多野结衣在线aⅴ中文字幕不卡| 一本久久a久久精品亚洲| 国产日韩av一区| 丝袜a∨在线一区二区三区不卡| 亚欧色一区w666天堂| 91麻豆国产自产在线观看| 国产成人精品午夜视频免费| 色综合天天综合狠狠| 欧美一区二区播放| 久久久91精品国产一区二区精品| 亚洲人成小说网站色在线| 蜜桃久久精品一区二区| 色婷婷亚洲精品| 国产欧美日韩在线视频| 日本中文字幕不卡| 欧美三级蜜桃2在线观看| 亚洲欧美日韩精品久久久久| 成人丝袜18视频在线观看| 日韩一级片在线观看| 午夜精品福利视频网站| 欧美日韩国产精选| 亚洲成人免费观看| 欧美午夜寂寞影院| 亚洲福利一区二区| 欧美撒尿777hd撒尿| 一区二区三区加勒比av| 91国产精品成人| 亚洲精品免费电影| 在线视频国产一区| 亚洲一二三级电影|