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

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

?? cirrus_vga.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 5 頁
字號:
            /* XXX: check for 24 bpp */	    s->cirrus_blt_srcpitch = 8 * 8 * s->cirrus_blt_pixelwidth;	}	s->cirrus_srccounter = s->cirrus_blt_srcpitch;    } else {	if (s->cirrus_blt_mode & CIRRUS_BLTMODE_COLOREXPAND) {            w = s->cirrus_blt_width / s->cirrus_blt_pixelwidth;            if (s->cirrus_blt_modeext & CIRRUS_BLTMODEEXT_DWORDGRANULARITY)                s->cirrus_blt_srcpitch = ((w + 31) >> 5);            else                s->cirrus_blt_srcpitch = ((w + 7) >> 3);	} else {            /* always align input size to 32 bits */	    s->cirrus_blt_srcpitch = (s->cirrus_blt_width + 3) & ~3;	}        s->cirrus_srccounter = s->cirrus_blt_srcpitch * s->cirrus_blt_height;    }    s->cirrus_srcptr = s->cirrus_bltbuf;    s->cirrus_srcptr_end = s->cirrus_bltbuf + s->cirrus_blt_srcpitch;    cirrus_update_memory_access(s);    return 1;}static int cirrus_bitblt_videotocpu(CirrusVGAState * s){    /* XXX */#ifdef DEBUG_BITBLT    printf("cirrus: bitblt (video to cpu) is not implemented yet\n");#endif    return 0;}static int cirrus_bitblt_videotovideo(CirrusVGAState * s){    int ret;    if (s->cirrus_blt_mode & CIRRUS_BLTMODE_PATTERNCOPY) {	ret = cirrus_bitblt_videotovideo_patterncopy(s);    } else {	ret = cirrus_bitblt_videotovideo_copy(s);    }    if (ret)	cirrus_bitblt_reset(s);    return ret;}static void cirrus_bitblt_start(CirrusVGAState * s){    uint8_t blt_rop;    s->gr[0x31] |= CIRRUS_BLT_BUSY;    s->cirrus_blt_width = (s->gr[0x20] | (s->gr[0x21] << 8)) + 1;    s->cirrus_blt_height = (s->gr[0x22] | (s->gr[0x23] << 8)) + 1;    s->cirrus_blt_dstpitch = (s->gr[0x24] | (s->gr[0x25] << 8));    s->cirrus_blt_srcpitch = (s->gr[0x26] | (s->gr[0x27] << 8));    s->cirrus_blt_dstaddr =	(s->gr[0x28] | (s->gr[0x29] << 8) | (s->gr[0x2a] << 16));    s->cirrus_blt_srcaddr =	(s->gr[0x2c] | (s->gr[0x2d] << 8) | (s->gr[0x2e] << 16));    s->cirrus_blt_mode = s->gr[0x30];    s->cirrus_blt_modeext = s->gr[0x33];    blt_rop = s->gr[0x32];#ifdef DEBUG_BITBLT    printf("rop=0x%02x mode=0x%02x modeext=0x%02x w=%d h=%d dpitch=%d spitch=%d daddr=0x%08x saddr=0x%08x writemask=0x%02x\n",           blt_rop,           s->cirrus_blt_mode,           s->cirrus_blt_modeext,           s->cirrus_blt_width,           s->cirrus_blt_height,           s->cirrus_blt_dstpitch,           s->cirrus_blt_srcpitch,           s->cirrus_blt_dstaddr,           s->cirrus_blt_srcaddr,           s->gr[0x2f]);#endif    switch (s->cirrus_blt_mode & CIRRUS_BLTMODE_PIXELWIDTHMASK) {    case CIRRUS_BLTMODE_PIXELWIDTH8:	s->cirrus_blt_pixelwidth = 1;	break;    case CIRRUS_BLTMODE_PIXELWIDTH16:	s->cirrus_blt_pixelwidth = 2;	break;    case CIRRUS_BLTMODE_PIXELWIDTH24:	s->cirrus_blt_pixelwidth = 3;	break;    case CIRRUS_BLTMODE_PIXELWIDTH32:	s->cirrus_blt_pixelwidth = 4;	break;    default:#ifdef DEBUG_BITBLT	printf("cirrus: bitblt - pixel width is unknown\n");#endif	goto bitblt_ignore;    }    s->cirrus_blt_mode &= ~CIRRUS_BLTMODE_PIXELWIDTHMASK;    if ((s->	 cirrus_blt_mode & (CIRRUS_BLTMODE_MEMSYSSRC |			    CIRRUS_BLTMODE_MEMSYSDEST))	== (CIRRUS_BLTMODE_MEMSYSSRC | CIRRUS_BLTMODE_MEMSYSDEST)) {#ifdef DEBUG_BITBLT	printf("cirrus: bitblt - memory-to-memory copy is requested\n");#endif	goto bitblt_ignore;    }    if ((s->cirrus_blt_modeext & CIRRUS_BLTMODEEXT_SOLIDFILL) &&        (s->cirrus_blt_mode & (CIRRUS_BLTMODE_MEMSYSDEST |                               CIRRUS_BLTMODE_TRANSPARENTCOMP |                               CIRRUS_BLTMODE_PATTERNCOPY |                               CIRRUS_BLTMODE_COLOREXPAND)) ==         (CIRRUS_BLTMODE_PATTERNCOPY | CIRRUS_BLTMODE_COLOREXPAND)) {        cirrus_bitblt_fgcol(s);        cirrus_bitblt_solidfill(s, blt_rop);    } else {        if ((s->cirrus_blt_mode & (CIRRUS_BLTMODE_COLOREXPAND |                                   CIRRUS_BLTMODE_PATTERNCOPY)) ==            CIRRUS_BLTMODE_COLOREXPAND) {            if (s->cirrus_blt_mode & CIRRUS_BLTMODE_TRANSPARENTCOMP) {                if (s->cirrus_blt_modeext & CIRRUS_BLTMODEEXT_COLOREXPINV)                    cirrus_bitblt_bgcol(s);                else                    cirrus_bitblt_fgcol(s);                s->cirrus_rop = cirrus_colorexpand_transp[rop_to_index[blt_rop]][s->cirrus_blt_pixelwidth - 1];            } else {                cirrus_bitblt_fgcol(s);                cirrus_bitblt_bgcol(s);                s->cirrus_rop = cirrus_colorexpand[rop_to_index[blt_rop]][s->cirrus_blt_pixelwidth - 1];            }        } else if (s->cirrus_blt_mode & CIRRUS_BLTMODE_PATTERNCOPY) {            if (s->cirrus_blt_mode & CIRRUS_BLTMODE_COLOREXPAND) {                if (s->cirrus_blt_mode & CIRRUS_BLTMODE_TRANSPARENTCOMP) {                    if (s->cirrus_blt_modeext & CIRRUS_BLTMODEEXT_COLOREXPINV)                        cirrus_bitblt_bgcol(s);                    else                        cirrus_bitblt_fgcol(s);                    s->cirrus_rop = cirrus_colorexpand_pattern_transp[rop_to_index[blt_rop]][s->cirrus_blt_pixelwidth - 1];                } else {                    cirrus_bitblt_fgcol(s);                    cirrus_bitblt_bgcol(s);                    s->cirrus_rop = cirrus_colorexpand_pattern[rop_to_index[blt_rop]][s->cirrus_blt_pixelwidth - 1];                }            } else {                s->cirrus_rop = cirrus_patternfill[rop_to_index[blt_rop]][s->cirrus_blt_pixelwidth - 1];            }        } else {	    if (s->cirrus_blt_mode & CIRRUS_BLTMODE_TRANSPARENTCOMP) {		if (s->cirrus_blt_pixelwidth > 2) {		    printf("src transparent without colorexpand must be 8bpp or 16bpp\n");		    goto bitblt_ignore;		}		if (s->cirrus_blt_mode & CIRRUS_BLTMODE_BACKWARDS) {		    s->cirrus_blt_dstpitch = -s->cirrus_blt_dstpitch;		    s->cirrus_blt_srcpitch = -s->cirrus_blt_srcpitch;		    s->cirrus_rop = cirrus_bkwd_transp_rop[rop_to_index[blt_rop]][s->cirrus_blt_pixelwidth - 1];		} else {		    s->cirrus_rop = cirrus_fwd_transp_rop[rop_to_index[blt_rop]][s->cirrus_blt_pixelwidth - 1];		}	    } else {		if (s->cirrus_blt_mode & CIRRUS_BLTMODE_BACKWARDS) {		    s->cirrus_blt_dstpitch = -s->cirrus_blt_dstpitch;		    s->cirrus_blt_srcpitch = -s->cirrus_blt_srcpitch;		    s->cirrus_rop = cirrus_bkwd_rop[rop_to_index[blt_rop]];		} else {		    s->cirrus_rop = cirrus_fwd_rop[rop_to_index[blt_rop]];		}	    }	}        // setup bitblt engine.        if (s->cirrus_blt_mode & CIRRUS_BLTMODE_MEMSYSSRC) {            if (!cirrus_bitblt_cputovideo(s))                goto bitblt_ignore;        } else if (s->cirrus_blt_mode & CIRRUS_BLTMODE_MEMSYSDEST) {            if (!cirrus_bitblt_videotocpu(s))                goto bitblt_ignore;        } else {            if (!cirrus_bitblt_videotovideo(s))                goto bitblt_ignore;        }    }    return;  bitblt_ignore:;    cirrus_bitblt_reset(s);}static void cirrus_write_bitblt(CirrusVGAState * s, unsigned reg_value){    unsigned old_value;    old_value = s->gr[0x31];    s->gr[0x31] = reg_value;    if (((old_value & CIRRUS_BLT_RESET) != 0) &&	((reg_value & CIRRUS_BLT_RESET) == 0)) {	cirrus_bitblt_reset(s);    } else if (((old_value & CIRRUS_BLT_START) == 0) &&	       ((reg_value & CIRRUS_BLT_START) != 0)) {	cirrus_bitblt_start(s);    }}/*************************************** * *  basic parameters * ***************************************/static void cirrus_get_offsets(VGAState *s1,                               uint32_t *pline_offset,                               uint32_t *pstart_addr,                               uint32_t *pline_compare){    CirrusVGAState * s = (CirrusVGAState *)s1;    uint32_t start_addr, line_offset, line_compare;    line_offset = s->cr[0x13]	| ((s->cr[0x1b] & 0x10) << 4);    line_offset <<= 3;    *pline_offset = line_offset;    start_addr = (s->cr[0x0c] << 8)	| s->cr[0x0d]	| ((s->cr[0x1b] & 0x01) << 16)	| ((s->cr[0x1b] & 0x0c) << 15)	| ((s->cr[0x1d] & 0x80) << 12);    *pstart_addr = start_addr;    line_compare = s->cr[0x18] |        ((s->cr[0x07] & 0x10) << 4) |        ((s->cr[0x09] & 0x40) << 3);    *pline_compare = line_compare;}static uint32_t cirrus_get_bpp16_depth(CirrusVGAState * s){    uint32_t ret = 16;    switch (s->cirrus_hidden_dac_data & 0xf) {    case 0:	ret = 15;	break;			/* Sierra HiColor */    case 1:	ret = 16;	break;			/* XGA HiColor */    default:#ifdef DEBUG_CIRRUS	printf("cirrus: invalid DAC value %x in 16bpp\n",	       (s->cirrus_hidden_dac_data & 0xf));#endif	ret = 15;		/* XXX */	break;    }    return ret;}static int cirrus_get_bpp(VGAState *s1){    CirrusVGAState * s = (CirrusVGAState *)s1;    uint32_t ret = 8;    if ((s->sr[0x07] & 0x01) != 0) {	/* Cirrus SVGA */	switch (s->sr[0x07] & CIRRUS_SR7_BPP_MASK) {	case CIRRUS_SR7_BPP_8:	    ret = 8;	    break;	case CIRRUS_SR7_BPP_16_DOUBLEVCLK:	    ret = cirrus_get_bpp16_depth(s);	    break;	case CIRRUS_SR7_BPP_24:	    ret = 24;	    break;	case CIRRUS_SR7_BPP_16:	    ret = cirrus_get_bpp16_depth(s);	    break;	case CIRRUS_SR7_BPP_32:	    ret = 32;	    break;	default:#ifdef DEBUG_CIRRUS	    printf("cirrus: unknown bpp - sr7=%x\n", s->sr[0x7]);#endif	    ret = 8;	    break;	}    } else {	/* VGA */	ret = 0;    }    return ret;}static void cirrus_get_resolution(VGAState *s, int *pwidth, int *pheight){    int width, height;    width = (s->cr[0x01] + 1) * 8;    height = s->cr[0x12] |        ((s->cr[0x07] & 0x02) << 7) |        ((s->cr[0x07] & 0x40) << 3);    height = (height + 1);    /* interlace support */    if (s->cr[0x1a] & 0x01)        height = height * 2;    *pwidth = width;    *pheight = height;}/*************************************** * * bank memory * ***************************************/static void cirrus_update_bank_ptr(CirrusVGAState * s, unsigned bank_index){    unsigned offset;    unsigned limit;    if ((s->gr[0x0b] & 0x01) != 0)	/* dual bank */	offset = s->gr[0x09 + bank_index];    else			/* single bank */	offset = s->gr[0x09];    if ((s->gr[0x0b] & 0x20) != 0)	offset <<= 14;    else	offset <<= 12;    if (s->real_vram_size <= offset)	limit = 0;    else	limit = s->real_vram_size - offset;    if (((s->gr[0x0b] & 0x01) == 0) && (bank_index != 0)) {	if (limit > 0x8000) {	    offset += 0x8000;	    limit -= 0x8000;	} else {	    limit = 0;	}    }    if (limit > 0) {	s->cirrus_bank_base[bank_index] = offset;	s->cirrus_bank_limit[bank_index] = limit;    } else {	s->cirrus_bank_base[bank_index] = 0;	s->cirrus_bank_limit[bank_index] = 0;    }}/*************************************** * *  I/O access between 0x3c4-0x3c5 * ***************************************/static intcirrus_hook_read_sr(CirrusVGAState * s, unsigned reg_index, int *reg_value){    switch (reg_index) {    case 0x00:			// Standard VGA    case 0x01:			// Standard VGA    case 0x02:			// Standard VGA    case 0x03:			// Standard VGA    case 0x04:			// Standard VGA	return CIRRUS_HOOK_NOT_HANDLED;    case 0x06:			// Unlock Cirrus extensions	*reg_value = s->sr[reg_index];	break;    case 0x10:    case 0x30:    case 0x50:    case 0x70:			// Graphics Cursor X    case 0x90:    case 0xb0:    case 0xd0:    case 0xf0:			// Graphics Cursor X	*reg_value = s->sr[0x10];	break;    case 0x11:    case 0x31:    case 0x51:    case 0x71:			// Graphics Cursor Y    case 0x91:    case 0xb1:    case 0xd1:    case 0xf1:			// Graphics Cursor Y	*reg_value = s->sr[0x11];	break;    case 0x05:			// ???    case 0x07:			// Extended Sequencer Mode    case 0x08:			// EEPROM Control    case 0x09:			// Scratch Register 0    case 0x0a:			// Scratch Register 1    case 0x0b:			// VCLK 0    case 0x0c:			// VCLK 1    case 0x0d:			// VCLK 2    case 0x0e:			// VCLK 3    case 0x0f:			// DRAM Control    case 0x12:			// Graphics Cursor Attribute    case 0x13:			// Graphics Cursor Pattern Address    case 0x14:			// Scratch Register 2    case 0x15:			// Scratch Register 3    case 0x16:			// Performance Tuning Register    case 0x17:			// Configuration Readback and Extended Control    case 0x18:			// Signature Generator Control    case 0x19:			// Signal Generator Result    case 0x1a:			// Signal Generator Result    case 0x1b:			// VCLK 0 Denominator & Post    case 0x1c:			// VCLK 1 Denominator & Post    case 0x1d:			// VCLK 2 Denominator & Post    case 0x1e:			// VCLK 3 Denominator & Post    case 0x1f:			// BIOS Write Enable and MCLK select#ifdef DEBUG_CIRRUS	printf("cirrus: handled inport sr_index %02x\n", reg_index);#endif	*reg_value = s->sr[reg_index];	break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品女同互慰在线看| 国产欧美一区二区精品仙草咪| 自拍偷拍亚洲综合| 欧美性猛交xxxx乱大交退制版| 午夜精品一区在线观看| 久久综合精品国产一区二区三区| 麻豆国产精品一区二区三区| 88在线观看91蜜桃国自产| 国产精品不卡在线观看| 欧美午夜电影一区| 高清视频一区二区| 亚洲一区二区三区四区五区黄| 日韩一区二区在线观看| 99综合影院在线| 秋霞国产午夜精品免费视频| 亚洲视频在线一区二区| 精品区一区二区| 欧美系列在线观看| 成人激情文学综合网| 男女男精品网站| 亚洲婷婷在线视频| 精品嫩草影院久久| 欧美伊人久久大香线蕉综合69| 激情av综合网| 视频在线观看91| 亚洲码国产岛国毛片在线| 精品国产一区二区精华| 欧美日本在线一区| 91免费观看视频| 国产在线不卡一区| 亚洲h在线观看| 国产精品久久久久影院亚瑟| 日韩欧美一二三四区| 91久久免费观看| 99久久精品免费精品国产| 久久66热re国产| 蜜臀精品久久久久久蜜臀 | 午夜精品久久久久久久99樱桃 | 国产iv一区二区三区| 午夜精品影院在线观看| 亚洲美女在线一区| 中文字幕日韩av资源站| 久久久高清一区二区三区| 成人黄页在线观看| 午夜精品久久久久久久| 精品国产三级电影在线观看| 91视视频在线观看入口直接观看www | 精品视频在线免费看| 国产最新精品免费| 奇米影视一区二区三区| 亚洲人成7777| 久久久不卡网国产精品二区| 懂色中文一区二区在线播放| 精品亚洲aⅴ乱码一区二区三区| 亚洲欧美色综合| 综合久久一区二区三区| 粉嫩绯色av一区二区在线观看| 国产精品久久久久久久久搜平片| 欧美精品成人一区二区三区四区| 精品综合免费视频观看| 一区二区欧美国产| 91丝袜呻吟高潮美腿白嫩在线观看| 日韩av一区二| 日本美女视频一区二区| 亚洲人成网站色在线观看| 国产精品久久久久精k8| 欧美激情综合在线| 国产精品久久久久久久久久久免费看| 欧美一级电影网站| 欧美一级国产精品| 91在线精品一区二区| 一区二区三区在线免费观看| 欧美婷婷六月丁香综合色| 久久av中文字幕片| 亚洲综合男人的天堂| 中文字幕的久久| 精品国产乱码久久久久久老虎| 成人av网在线| 欧美三级三级三级爽爽爽| 成人精品电影在线观看| 99精品视频在线观看免费| 欧美系列一区二区| www久久精品| 欧美日免费三级在线| 精品国产免费一区二区三区四区| 久久日韩精品一区二区五区| 久久免费的精品国产v∧| 亚洲一区二区三区四区在线免费观看 | 欧美日韩国产123区| 在线播放91灌醉迷j高跟美女| 久久久www成人免费毛片麻豆| 亚洲一区二区免费视频| 看片的网站亚洲| 欧洲日韩一区二区三区| 91精品国模一区二区三区| 国产日韩欧美精品电影三级在线| 18欧美亚洲精品| 五月天视频一区| 国产成人午夜高潮毛片| 欧美性xxxxx极品少妇| 亚洲精品一线二线三线无人区| 亚洲欧美日本韩国| 美女国产一区二区| 在线观看av不卡| 国产精品网站导航| 国内成人精品2018免费看| 欧美三级日韩三级国产三级| 国产精品午夜春色av| 精品一区二区在线视频| 777久久久精品| 亚洲成人综合网站| 91亚洲精品久久久蜜桃网站| 国产三级三级三级精品8ⅰ区| 免费成人你懂的| 欧美色偷偷大香| 悠悠色在线精品| 91麻豆自制传媒国产之光| 国产欧美日韩在线| 国产精品亚洲午夜一区二区三区| 91精品国产免费久久综合| 亚洲狠狠爱一区二区三区| 色综合色狠狠综合色| 一区在线观看免费| av在线综合网| 亚洲欧美综合另类在线卡通| gogo大胆日本视频一区| 国产精品二区一区二区aⅴ污介绍| 国产成人三级在线观看| 日本一区二区电影| 成人av资源网站| 中文字幕精品一区二区精品绿巨人| 国产成人a级片| 久久综合久久99| 国产传媒一区在线| 国产精品嫩草影院av蜜臀| eeuss鲁片一区二区三区在线观看| 久久久五月婷婷| 成人教育av在线| 亚洲色图在线播放| 一本大道久久a久久精二百| 一区二区三区四区蜜桃| 欧美日韩中字一区| 首页欧美精品中文字幕| 精品福利在线导航| 成人免费av网站| 亚洲乱码一区二区三区在线观看| 丁香婷婷深情五月亚洲| 一区二区三区日韩在线观看| 欧美视频在线观看一区二区| 亚洲成人在线网站| 91精品国产aⅴ一区二区| 加勒比av一区二区| 国产精品国模大尺度视频| 欧美在线视频日韩| 捆绑变态av一区二区三区| 国产精品成人免费| 欧美日韩一区精品| 国产原创一区二区三区| 国产欧美视频一区二区三区| 日本高清无吗v一区| 麻豆精品新av中文字幕| 日韩美女啊v在线免费观看| 精品1区2区3区| 免费看欧美女人艹b| 国产日韩欧美麻豆| 884aa四虎影成人精品一区| 国产成人综合在线观看| 亚洲国产成人av网| 国产精品日韩精品欧美在线| 欧美调教femdomvk| 国模套图日韩精品一区二区| 亚洲第一成年网| 欧美高清在线视频| 精品少妇一区二区三区在线视频| 91视频在线观看| 精品一区二区三区视频在线观看 | 亚洲一区二区精品久久av| 亚洲精品一区二区三区影院| 色婷婷av一区二区三区之一色屋| 极品少妇一区二区三区精品视频 | 91精品国产综合久久精品app | 欧美日本在线播放| 99免费精品在线| 激情欧美一区二区三区在线观看| 亚洲男人的天堂av| 国产欧美日韩精品在线| 成人黄色av电影| 蜜臀久久久久久久| 亚洲a一区二区| 国产欧美视频一区二区| 91在线免费视频观看| 奇米一区二区三区| 一区二区不卡在线播放 | 石原莉奈在线亚洲二区| 精品奇米国产一区二区三区| 在线播放国产精品二区一二区四区| 丁香婷婷综合激情五月色| 蜜桃视频一区二区三区| 亚洲特级片在线| 日韩免费一区二区|