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

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

?? vmware_vga.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 3 頁
字號:
    uint8_t *src;    uint8_t col[4];# ifdef DIRECT_VRAM    if (s->ds->dpy_fill)        s->ds->dpy_fill(s->ds, x, y, w, h, c);    else# endif    {        col[0] = c;        col[1] = c >> 8;        col[2] = c >> 16;        col[3] = c >> 24;        if (line --) {            dst = fst;            src = col;            for (column = width; column > 0; column --) {                *(dst ++) = *(src ++);                if (src - col == bypp)                    src = col;            }            dst = fst;            for (; line > 0; line --) {                dst += bypl;                memcpy(dst, fst, width);            }        }    }    vmsvga_update_rect_delayed(s, x, y, w, h);}#endifstruct vmsvga_cursor_definition_s {    int width;    int height;    int id;    int bpp;    int hot_x;    int hot_y;    uint32_t mask[1024];    uint32_t image[1024];};#define SVGA_BITMAP_SIZE(w, h)		((((w) + 31) >> 5) * (h))#define SVGA_PIXMAP_SIZE(w, h, bpp)	(((((w) * (bpp)) + 31) >> 5) * (h))#ifdef HW_MOUSE_ACCELstatic inline void vmsvga_cursor_define(struct vmsvga_state_s *s,                struct vmsvga_cursor_definition_s *c){    int i;    for (i = SVGA_BITMAP_SIZE(c->width, c->height) - 1; i >= 0; i --)        c->mask[i] = ~c->mask[i];    if (s->ds->cursor_define)        s->ds->cursor_define(c->width, c->height, c->bpp, c->hot_x, c->hot_y,                        (uint8_t *) c->image, (uint8_t *) c->mask);}#endifstatic inline int vmsvga_fifo_empty(struct vmsvga_state_s *s){    if (!s->config || !s->enable)        return 1;    return (s->cmd->next_cmd == s->cmd->stop);}static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s){    uint32_t cmd = s->fifo[s->cmd->stop >> 2];    s->cmd->stop += 4;    if (s->cmd->stop >= s->cmd->max)        s->cmd->stop = s->cmd->min;    return cmd;}static void vmsvga_fifo_run(struct vmsvga_state_s *s){    uint32_t cmd, colour;    int args = 0;    int x, y, dx, dy, width, height;    struct vmsvga_cursor_definition_s cursor;    while (!vmsvga_fifo_empty(s))        switch (cmd = vmsvga_fifo_read(s)) {        case SVGA_CMD_UPDATE:        case SVGA_CMD_UPDATE_VERBOSE:            x = vmsvga_fifo_read(s);            y = vmsvga_fifo_read(s);            width = vmsvga_fifo_read(s);            height = vmsvga_fifo_read(s);            vmsvga_update_rect_delayed(s, x, y, width, height);            break;        case SVGA_CMD_RECT_FILL:            colour = vmsvga_fifo_read(s);            x = vmsvga_fifo_read(s);            y = vmsvga_fifo_read(s);            width = vmsvga_fifo_read(s);            height = vmsvga_fifo_read(s);#ifdef HW_FILL_ACCEL            vmsvga_fill_rect(s, colour, x, y, width, height);            break;#else            goto badcmd;#endif        case SVGA_CMD_RECT_COPY:            x = vmsvga_fifo_read(s);            y = vmsvga_fifo_read(s);            dx = vmsvga_fifo_read(s);            dy = vmsvga_fifo_read(s);            width = vmsvga_fifo_read(s);            height = vmsvga_fifo_read(s);#ifdef HW_RECT_ACCEL            vmsvga_copy_rect(s, x, y, dx, dy, width, height);            break;#else            goto badcmd;#endif        case SVGA_CMD_DEFINE_CURSOR:            cursor.id = vmsvga_fifo_read(s);            cursor.hot_x = vmsvga_fifo_read(s);            cursor.hot_y = vmsvga_fifo_read(s);            cursor.width = x = vmsvga_fifo_read(s);            cursor.height = y = vmsvga_fifo_read(s);            vmsvga_fifo_read(s);            cursor.bpp = vmsvga_fifo_read(s);            for (args = 0; args < SVGA_BITMAP_SIZE(x, y); args ++)                cursor.mask[args] = vmsvga_fifo_read(s);            for (args = 0; args < SVGA_PIXMAP_SIZE(x, y, cursor.bpp); args ++)                cursor.image[args] = vmsvga_fifo_read(s);#ifdef HW_MOUSE_ACCEL            vmsvga_cursor_define(s, &cursor);            break;#else            args = 0;            goto badcmd;#endif        /*         * Other commands that we at least know the number of arguments         * for so we can avoid FIFO desync if driver uses them illegally.         */        case SVGA_CMD_DEFINE_ALPHA_CURSOR:            vmsvga_fifo_read(s);            vmsvga_fifo_read(s);            vmsvga_fifo_read(s);            x = vmsvga_fifo_read(s);            y = vmsvga_fifo_read(s);            args = x * y;            goto badcmd;        case SVGA_CMD_RECT_ROP_FILL:            args = 6;            goto badcmd;        case SVGA_CMD_RECT_ROP_COPY:            args = 7;            goto badcmd;        case SVGA_CMD_DRAW_GLYPH_CLIPPED:            vmsvga_fifo_read(s);            vmsvga_fifo_read(s);            args = 7 + (vmsvga_fifo_read(s) >> 2);            goto badcmd;        case SVGA_CMD_SURFACE_ALPHA_BLEND:            args = 12;            goto badcmd;        /*         * Other commands that are not listed as depending on any         * CAPABILITIES bits, but are not described in the README either.         */        case SVGA_CMD_SURFACE_FILL:        case SVGA_CMD_SURFACE_COPY:        case SVGA_CMD_FRONT_ROP_FILL:        case SVGA_CMD_FENCE:        case SVGA_CMD_INVALID_CMD:            break; /* Nop */        default:        badcmd:            while (args --)                vmsvga_fifo_read(s);            printf("%s: Unknown command 0x%02x in SVGA command FIFO\n",                            __FUNCTION__, cmd);            break;        }    s->syncing = 0;}static uint32_t vmsvga_index_read(void *opaque, uint32_t address){    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;    return s->index;}static void vmsvga_index_write(void *opaque, uint32_t address, uint32_t index){    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;    s->index = index;}static uint32_t vmsvga_value_read(void *opaque, uint32_t address){    uint32_t caps;    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;    switch (s->index) {    case SVGA_REG_ID:        return s->svgaid;    case SVGA_REG_ENABLE:        return s->enable;    case SVGA_REG_WIDTH:        return s->width;    case SVGA_REG_HEIGHT:        return s->height;    case SVGA_REG_MAX_WIDTH:        return SVGA_MAX_WIDTH;    case SVGA_REG_MAX_HEIGHT:        return SVGA_MAX_HEIGHT;    case SVGA_REG_DEPTH:        return s->depth;    case SVGA_REG_BITS_PER_PIXEL:        return (s->depth + 7) & ~7;    case SVGA_REG_PSEUDOCOLOR:        return 0x0;    case SVGA_REG_RED_MASK:        return s->wred;    case SVGA_REG_GREEN_MASK:        return s->wgreen;    case SVGA_REG_BLUE_MASK:        return s->wblue;    case SVGA_REG_BYTES_PER_LINE:        return ((s->depth + 7) >> 3) * s->new_width;    case SVGA_REG_FB_START:        return SVGA_MEM_BASE;    case SVGA_REG_FB_OFFSET:        return 0x0;    case SVGA_REG_VRAM_SIZE:        return s->vram_size - SVGA_FIFO_SIZE;    case SVGA_REG_FB_SIZE:        return s->fb_size;    case SVGA_REG_CAPABILITIES:        caps = SVGA_CAP_NONE;#ifdef HW_RECT_ACCEL        caps |= SVGA_CAP_RECT_COPY;#endif#ifdef HW_FILL_ACCEL        caps |= SVGA_CAP_RECT_FILL;#endif#ifdef HW_MOUSE_ACCEL        if (s->ds->mouse_set)            caps |= SVGA_CAP_CURSOR | SVGA_CAP_CURSOR_BYPASS_2 |                    SVGA_CAP_CURSOR_BYPASS;#endif        return caps;    case SVGA_REG_MEM_START:        return SVGA_MEM_BASE + s->vram_size - SVGA_FIFO_SIZE;    case SVGA_REG_MEM_SIZE:        return SVGA_FIFO_SIZE;    case SVGA_REG_CONFIG_DONE:        return s->config;    case SVGA_REG_SYNC:    case SVGA_REG_BUSY:        return s->syncing;    case SVGA_REG_GUEST_ID:        return s->guest;    case SVGA_REG_CURSOR_ID:        return s->cursor.id;    case SVGA_REG_CURSOR_X:        return s->cursor.x;    case SVGA_REG_CURSOR_Y:        return s->cursor.x;    case SVGA_REG_CURSOR_ON:        return s->cursor.on;    case SVGA_REG_HOST_BITS_PER_PIXEL:        return (s->depth + 7) & ~7;    case SVGA_REG_SCRATCH_SIZE:        return s->scratch_size;    case SVGA_REG_MEM_REGS:    case SVGA_REG_NUM_DISPLAYS:    case SVGA_REG_PITCHLOCK:    case SVGA_PALETTE_BASE ... SVGA_PALETTE_END:        return 0;    default:        if (s->index >= SVGA_SCRATCH_BASE &&                s->index < SVGA_SCRATCH_BASE + s->scratch_size)            return s->scratch[s->index - SVGA_SCRATCH_BASE];        printf("%s: Bad register %02x\n", __FUNCTION__, s->index);    }    return 0;}static void vmsvga_value_write(void *opaque, uint32_t address, uint32_t value){    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;    switch (s->index) {    case SVGA_REG_ID:        if (value == SVGA_ID_2 || value == SVGA_ID_1 || value == SVGA_ID_0)            s->svgaid = value;        break;    case SVGA_REG_ENABLE:        s->enable = value;        s->config &= !!value;        s->width = -1;        s->height = -1;        s->invalidated = 1;#ifdef EMBED_STDVGA        s->invalidate(opaque);#endif        if (s->enable)            s->fb_size = ((s->depth + 7) >> 3) * s->new_width * s->new_height;        break;    case SVGA_REG_WIDTH:        s->new_width = value;        s->invalidated = 1;        break;    case SVGA_REG_HEIGHT:        s->new_height = value;        s->invalidated = 1;        break;    case SVGA_REG_DEPTH:    case SVGA_REG_BITS_PER_PIXEL:        if (value != s->depth) {            printf("%s: Bad colour depth: %i bits\n", __FUNCTION__, value);            s->config = 0;        }        break;    case SVGA_REG_CONFIG_DONE:        if (value) {            s->fifo = (uint32_t *) &s->vram[s->vram_size - SVGA_FIFO_SIZE];            /* Check range and alignment.  */            if ((s->cmd->min | s->cmd->max |                        s->cmd->next_cmd | s->cmd->stop) & 3)                break;            if (s->cmd->min < (uint8_t *) s->cmd->fifo - (uint8_t *) s->fifo)                break;            if (s->cmd->max > SVGA_FIFO_SIZE)                break;            if (s->cmd->max < s->cmd->min + 10 * 1024)                break;        }        s->config = !!value;        break;    case SVGA_REG_SYNC:        s->syncing = 1;        vmsvga_fifo_run(s); /* Or should we just wait for update_display? */        break;    case SVGA_REG_GUEST_ID:        s->guest = value;#ifdef VERBOSE        if (value >= GUEST_OS_BASE && value < GUEST_OS_BASE +                sizeof(vmsvga_guest_id) / sizeof(*vmsvga_guest_id))            printf("%s: guest runs %s.\n", __FUNCTION__,                            vmsvga_guest_id[value - GUEST_OS_BASE]);#endif        break;    case SVGA_REG_CURSOR_ID:        s->cursor.id = value;        break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图另类专区| 久久中文娱乐网| 国内外成人在线| 国产日韩精品一区| 欧美中文字幕一区| 久久er精品视频| 亚洲最快最全在线视频| 欧美一级午夜免费电影| 国产麻豆欧美日韩一区| 天天做天天摸天天爽国产一区| 久久天堂av综合合色蜜桃网| 在线成人av影院| a亚洲天堂av| 免费成人小视频| 亚洲高清在线视频| 亚洲国产成人在线| 精品sm捆绑视频| 2021国产精品久久精品| 蜜臀久久99精品久久久久久9| 国产精品天干天干在观线| 欧美久久久一区| 日本福利一区二区| 成人污污视频在线观看| 青娱乐精品视频| 亚洲男人天堂一区| 久久国产精品99久久久久久老狼| 亚洲国产综合视频在线观看| 中文字幕不卡在线| 91精品国产麻豆| 欧美天堂一区二区三区| 成人免费不卡视频| 粉嫩aⅴ一区二区三区四区| 蜜臀av国产精品久久久久| 亚洲影院久久精品| 久久精品水蜜桃av综合天堂| 欧美精品电影在线播放| 天天综合色天天综合色h| 亚洲成人黄色小说| 亚洲精品视频免费看| 中文字幕不卡一区| 久久精品这里都是精品| 国产在线精品免费av| 美女精品自拍一二三四| 亚洲成人福利片| 亚洲色图视频网| 伊人性伊人情综合网| 亚洲欧美日韩在线播放| 亚洲综合在线视频| 一区二区在线看| 国产欧美一区二区精品久导航| 久久久久免费观看| 久久久精品中文字幕麻豆发布| 国产日韩精品一区| 日本一区二区三区视频视频| 国产精品色哟哟网站| 国产精品无圣光一区二区| 国产精品理论片| 亚洲免费毛片网站| 亚洲午夜免费电影| 毛片av一区二区三区| 欧美日韩国产片| 欧美一区三区二区| 久久久精品tv| 中文一区一区三区高中清不卡| 伊人一区二区三区| 丁香婷婷综合激情五月色| 欧美一级久久久| 久久人人爽人人爽| 26uuu国产一区二区三区| 国产女人18水真多18精品一级做| 欧美国产欧美亚州国产日韩mv天天看完整| 久久婷婷久久一区二区三区| 亚洲欧洲国产日本综合| 一区二区三区四区国产精品| 欧美aaa在线| 国产精品亚洲人在线观看| 成人av电影在线| 欧美肥妇free| 久久久国产一区二区三区四区小说| 亚洲欧洲精品成人久久奇米网| 亚洲综合偷拍欧美一区色| 亚洲一区二区三区视频在线| 国内偷窥港台综合视频在线播放| 成人黄色电影在线| 欧美一区二区三区视频在线观看 | 日本不卡中文字幕| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 精品国产免费一区二区三区香蕉| 国产精品久久久久aaaa| 欧美一级欧美一级在线播放| 国产人成亚洲第一网站在线播放 | 久久精品日韩一区二区三区| 亚洲免费资源在线播放| 久久av老司机精品网站导航| 国产suv精品一区二区三区| 56国语精品自产拍在线观看| 精油按摩中文字幕久久| 91官网在线免费观看| 精品福利一区二区三区免费视频| 亚洲男同1069视频| 国产麻豆午夜三级精品| 欧美性猛片xxxx免费看久爱| 中文字幕一区二区在线观看| 免费黄网站欧美| 欧美三级电影网站| 久久久久久久电影| 青青草91视频| 91蜜桃在线观看| 久久色在线观看| 美女一区二区在线观看| 91老师片黄在线观看| 国产欧美久久久精品影院| 日韩国产欧美在线播放| 国产欧美日韩三级| 久久精品视频免费观看| 亚洲一级电影视频| 99re这里都是精品| 国产午夜精品一区二区三区视频 | 日韩影院免费视频| av电影天堂一区二区在线| 91精品国产综合久久久久| 亚洲图片欧美色图| 99视频一区二区| 国产精品免费丝袜| 三级欧美韩日大片在线看| 国产精品原创巨作av| 欧美久久久久久久久中文字幕| 日韩伦理免费电影| 久久成人免费网| 亚洲精品在线电影| 久久精品国产网站| 日韩精品一区二区三区中文不卡| 午夜精品福利久久久| 欧美日韩精品一区二区三区| 亚洲精品一二三区| 色婷婷精品久久二区二区蜜臂av| 国产精品乱子久久久久| 国产中文字幕精品| 国产亚洲综合性久久久影院| 久久精品国产一区二区三 | 国产欧美日韩另类一区| 日韩精品亚洲一区二区三区免费| 欧美日韩精品久久久| 亚洲综合色成人| 99久久精品免费| 亚洲午夜免费福利视频| 欧美色电影在线| 日韩成人免费在线| 欧美一区在线视频| 国产精品一区久久久久| 久久久久久久久久久久久久久99 | 亚洲精选免费视频| 欧美日韩国产首页| 在线观看91视频| 免费观看一级特黄欧美大片| 欧美精品高清视频| 国产一区二区三区日韩| 2023国产精品自拍| 99精品国产一区二区三区不卡| 亚洲品质自拍视频| 91老师片黄在线观看| 日本欧美肥老太交大片| 日韩免费高清电影| 成人黄动漫网站免费app| 国产精品久久久久影视| 欧美丝袜丝nylons| 美女脱光内衣内裤视频久久网站| 欧美人妇做爰xxxⅹ性高电影| 免费三级欧美电影| 久久精品欧美一区二区三区不卡| 91亚洲精品久久久蜜桃网站| 洋洋成人永久网站入口| 精品国产一区二区三区不卡| 国产不卡视频一区二区三区| 亚洲五码中文字幕| 精品国产一区二区三区不卡| 国产一区二区免费看| 亚洲精品视频在线观看免费| 91麻豆精品国产91久久久久久久久 | 欧美亚洲一区二区三区四区| 日日夜夜免费精品视频| 中文字幕乱码久久午夜不卡| 在线中文字幕一区二区| 视频一区视频二区中文| 中文字幕的久久| 欧美日韩一区二区三区视频| 风间由美一区二区av101| 亚洲精品乱码久久久久久黑人 | 国产69精品久久99不卡| 亚洲第一综合色| 精品久久久久久久久久久久久久久 | 久久综合久久鬼色| 91在线小视频| 男人的j进女人的j一区| 精品久久99ma| 精品污污网站免费看| 国产盗摄女厕一区二区三区| 日韩精品每日更新| 国产精品久久久久影院亚瑟| 精品国产伦一区二区三区免费|