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

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

?? vmware_vga.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * QEMU VMware-SVGA "chipset". * * Copyright (c) 2007 Andrzej Zaborowski  <balrog@zabor.org> * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */#include "hw.h"#include "console.h"#include "pci.h"#define VERBOSE#define EMBED_STDVGA#undef DIRECT_VRAM#define HW_RECT_ACCEL#define HW_FILL_ACCEL#define HW_MOUSE_ACCEL#ifdef EMBED_STDVGA# include "vga_int.h"#endifstruct vmsvga_state_s {#ifdef EMBED_STDVGA    VGA_STATE_COMMON#endif    int width;    int height;    int invalidated;    int depth;    int bypp;    int enable;    int config;    struct {        int id;        int x;        int y;        int on;    } cursor;#ifndef EMBED_STDVGA    DisplayState *ds;    int vram_size;#endif    uint8_t *vram;    int index;    int scratch_size;    uint32_t *scratch;    int new_width;    int new_height;    uint32_t guest;    uint32_t svgaid;    uint32_t wred;    uint32_t wgreen;    uint32_t wblue;    int syncing;    int fb_size;    union {        uint32_t *fifo;        struct __attribute__((__packed__)) {            uint32_t min;            uint32_t max;            uint32_t next_cmd;            uint32_t stop;            /* Add registers here when adding capabilities.  */            uint32_t fifo[0];        } *cmd;    };#define REDRAW_FIFO_LEN	512    struct vmsvga_rect_s {        int x, y, w, h;    } redraw_fifo[REDRAW_FIFO_LEN];    int redraw_fifo_first, redraw_fifo_last;};struct pci_vmsvga_state_s {    PCIDevice card;    struct vmsvga_state_s chip;};#define SVGA_MAGIC		0x900000UL#define SVGA_MAKE_ID(ver)	(SVGA_MAGIC << 8 | (ver))#define SVGA_ID_0		SVGA_MAKE_ID(0)#define SVGA_ID_1		SVGA_MAKE_ID(1)#define SVGA_ID_2		SVGA_MAKE_ID(2)#define SVGA_LEGACY_BASE_PORT	0x4560#define SVGA_INDEX_PORT		0x0#define SVGA_VALUE_PORT		0x1#define SVGA_BIOS_PORT		0x2#define SVGA_VERSION_2#ifdef SVGA_VERSION_2# define SVGA_ID		SVGA_ID_2# define SVGA_IO_BASE		SVGA_LEGACY_BASE_PORT# define SVGA_IO_MUL		1# define SVGA_FIFO_SIZE		0x10000# define SVGA_MEM_BASE		0xe0000000# define SVGA_PCI_DEVICE_ID	PCI_DEVICE_ID_VMWARE_SVGA2#else# define SVGA_ID		SVGA_ID_1# define SVGA_IO_BASE		SVGA_LEGACY_BASE_PORT# define SVGA_IO_MUL		4# define SVGA_FIFO_SIZE		0x10000# define SVGA_MEM_BASE		0xe0000000# define SVGA_PCI_DEVICE_ID	PCI_DEVICE_ID_VMWARE_SVGA#endifenum {    /* ID 0, 1 and 2 registers */    SVGA_REG_ID = 0,    SVGA_REG_ENABLE = 1,    SVGA_REG_WIDTH = 2,    SVGA_REG_HEIGHT = 3,    SVGA_REG_MAX_WIDTH = 4,    SVGA_REG_MAX_HEIGHT = 5,    SVGA_REG_DEPTH = 6,    SVGA_REG_BITS_PER_PIXEL = 7,	/* Current bpp in the guest */    SVGA_REG_PSEUDOCOLOR = 8,    SVGA_REG_RED_MASK = 9,    SVGA_REG_GREEN_MASK = 10,    SVGA_REG_BLUE_MASK = 11,    SVGA_REG_BYTES_PER_LINE = 12,    SVGA_REG_FB_START = 13,    SVGA_REG_FB_OFFSET = 14,    SVGA_REG_VRAM_SIZE = 15,    SVGA_REG_FB_SIZE = 16,    /* ID 1 and 2 registers */    SVGA_REG_CAPABILITIES = 17,    SVGA_REG_MEM_START = 18,		/* Memory for command FIFO */    SVGA_REG_MEM_SIZE = 19,    SVGA_REG_CONFIG_DONE = 20,		/* Set when memory area configured */    SVGA_REG_SYNC = 21,			/* Write to force synchronization */    SVGA_REG_BUSY = 22,			/* Read to check if sync is done */    SVGA_REG_GUEST_ID = 23,		/* Set guest OS identifier */    SVGA_REG_CURSOR_ID = 24,		/* ID of cursor */    SVGA_REG_CURSOR_X = 25,		/* Set cursor X position */    SVGA_REG_CURSOR_Y = 26,		/* Set cursor Y position */    SVGA_REG_CURSOR_ON = 27,		/* Turn cursor on/off */    SVGA_REG_HOST_BITS_PER_PIXEL = 28,	/* Current bpp in the host */    SVGA_REG_SCRATCH_SIZE = 29,		/* Number of scratch registers */    SVGA_REG_MEM_REGS = 30,		/* Number of FIFO registers */    SVGA_REG_NUM_DISPLAYS = 31,		/* Number of guest displays */    SVGA_REG_PITCHLOCK = 32,		/* Fixed pitch for all modes */    SVGA_PALETTE_BASE = 1024,		/* Base of SVGA color map */    SVGA_PALETTE_END  = SVGA_PALETTE_BASE + 767,    SVGA_SCRATCH_BASE = SVGA_PALETTE_BASE + 768,};#define SVGA_CAP_NONE			0#define SVGA_CAP_RECT_FILL		(1 << 0)#define SVGA_CAP_RECT_COPY		(1 << 1)#define SVGA_CAP_RECT_PAT_FILL		(1 << 2)#define SVGA_CAP_LEGACY_OFFSCREEN	(1 << 3)#define SVGA_CAP_RASTER_OP		(1 << 4)#define SVGA_CAP_CURSOR			(1 << 5)#define SVGA_CAP_CURSOR_BYPASS		(1 << 6)#define SVGA_CAP_CURSOR_BYPASS_2	(1 << 7)#define SVGA_CAP_8BIT_EMULATION		(1 << 8)#define SVGA_CAP_ALPHA_CURSOR		(1 << 9)#define SVGA_CAP_GLYPH			(1 << 10)#define SVGA_CAP_GLYPH_CLIPPING		(1 << 11)#define SVGA_CAP_OFFSCREEN_1		(1 << 12)#define SVGA_CAP_ALPHA_BLEND		(1 << 13)#define SVGA_CAP_3D			(1 << 14)#define SVGA_CAP_EXTENDED_FIFO		(1 << 15)#define SVGA_CAP_MULTIMON		(1 << 16)#define SVGA_CAP_PITCHLOCK		(1 << 17)/* * FIFO offsets (seen as an array of 32-bit words) */enum {    /*     * The original defined FIFO offsets     */    SVGA_FIFO_MIN = 0,    SVGA_FIFO_MAX,	/* The distance from MIN to MAX must be at least 10K */    SVGA_FIFO_NEXT_CMD,    SVGA_FIFO_STOP,    /*     * Additional offsets added as of SVGA_CAP_EXTENDED_FIFO     */    SVGA_FIFO_CAPABILITIES = 4,    SVGA_FIFO_FLAGS,    SVGA_FIFO_FENCE,    SVGA_FIFO_3D_HWVERSION,    SVGA_FIFO_PITCHLOCK,};#define SVGA_FIFO_CAP_NONE		0#define SVGA_FIFO_CAP_FENCE		(1 << 0)#define SVGA_FIFO_CAP_ACCELFRONT	(1 << 1)#define SVGA_FIFO_CAP_PITCHLOCK		(1 << 2)#define SVGA_FIFO_FLAG_NONE		0#define SVGA_FIFO_FLAG_ACCELFRONT	(1 << 0)/* These values can probably be changed arbitrarily.  */#define SVGA_SCRATCH_SIZE		0x8000#define SVGA_MAX_WIDTH			2360#define SVGA_MAX_HEIGHT			1770#ifdef VERBOSE# define GUEST_OS_BASE		0x5001static const char *vmsvga_guest_id[] = {    [0x00 ... 0x15] = "an unknown OS",    [0x00] = "Dos",    [0x01] = "Windows 3.1",    [0x02] = "Windows 95",    [0x03] = "Windows 98",    [0x04] = "Windows ME",    [0x05] = "Windows NT",    [0x06] = "Windows 2000",    [0x07] = "Linux",    [0x08] = "OS/2",    [0x0a] = "BSD",    [0x0b] = "Whistler",    [0x15] = "Windows 2003",};#endifenum {    SVGA_CMD_INVALID_CMD = 0,    SVGA_CMD_UPDATE = 1,    SVGA_CMD_RECT_FILL = 2,    SVGA_CMD_RECT_COPY = 3,    SVGA_CMD_DEFINE_BITMAP = 4,    SVGA_CMD_DEFINE_BITMAP_SCANLINE = 5,    SVGA_CMD_DEFINE_PIXMAP = 6,    SVGA_CMD_DEFINE_PIXMAP_SCANLINE = 7,    SVGA_CMD_RECT_BITMAP_FILL = 8,    SVGA_CMD_RECT_PIXMAP_FILL = 9,    SVGA_CMD_RECT_BITMAP_COPY = 10,    SVGA_CMD_RECT_PIXMAP_COPY = 11,    SVGA_CMD_FREE_OBJECT = 12,    SVGA_CMD_RECT_ROP_FILL = 13,    SVGA_CMD_RECT_ROP_COPY = 14,    SVGA_CMD_RECT_ROP_BITMAP_FILL = 15,    SVGA_CMD_RECT_ROP_PIXMAP_FILL = 16,    SVGA_CMD_RECT_ROP_BITMAP_COPY = 17,    SVGA_CMD_RECT_ROP_PIXMAP_COPY = 18,    SVGA_CMD_DEFINE_CURSOR = 19,    SVGA_CMD_DISPLAY_CURSOR = 20,    SVGA_CMD_MOVE_CURSOR = 21,    SVGA_CMD_DEFINE_ALPHA_CURSOR = 22,    SVGA_CMD_DRAW_GLYPH = 23,    SVGA_CMD_DRAW_GLYPH_CLIPPED = 24,    SVGA_CMD_UPDATE_VERBOSE = 25,    SVGA_CMD_SURFACE_FILL = 26,    SVGA_CMD_SURFACE_COPY = 27,    SVGA_CMD_SURFACE_ALPHA_BLEND = 28,    SVGA_CMD_FRONT_ROP_FILL = 29,    SVGA_CMD_FENCE = 30,};/* Legal values for the SVGA_REG_CURSOR_ON register in cursor bypass mode */enum {    SVGA_CURSOR_ON_HIDE = 0,    SVGA_CURSOR_ON_SHOW = 1,    SVGA_CURSOR_ON_REMOVE_FROM_FB = 2,    SVGA_CURSOR_ON_RESTORE_TO_FB = 3,};static inline void vmsvga_update_rect(struct vmsvga_state_s *s,                int x, int y, int w, int h){#ifndef DIRECT_VRAM    int line = h;    int bypl = s->bypp * s->width;    int width = s->bypp * w;    int start = s->bypp * x + bypl * y;    uint8_t *src = s->vram + start;    uint8_t *dst = s->ds->data + start;    for (; line > 0; line --, src += bypl, dst += bypl)        memcpy(dst, src, width);#endif    dpy_update(s->ds, x, y, w, h);}static inline void vmsvga_update_screen(struct vmsvga_state_s *s){#ifndef DIRECT_VRAM    memcpy(s->ds->data, s->vram, s->bypp * s->width * s->height);#endif    dpy_update(s->ds, 0, 0, s->width, s->height);}#ifdef DIRECT_VRAM# define vmsvga_update_rect_delayed	vmsvga_update_rect#elsestatic inline void vmsvga_update_rect_delayed(struct vmsvga_state_s *s,                int x, int y, int w, int h){    struct vmsvga_rect_s *rect = &s->redraw_fifo[s->redraw_fifo_last ++];    s->redraw_fifo_last &= REDRAW_FIFO_LEN - 1;    rect->x = x;    rect->y = y;    rect->w = w;    rect->h = h;}#endifstatic inline void vmsvga_update_rect_flush(struct vmsvga_state_s *s){    struct vmsvga_rect_s *rect;    if (s->invalidated) {        s->redraw_fifo_first = s->redraw_fifo_last;        return;    }    /* Overlapping region updates can be optimised out here - if someone     * knows a smart algorithm to do that, please share.  */    while (s->redraw_fifo_first != s->redraw_fifo_last) {        rect = &s->redraw_fifo[s->redraw_fifo_first ++];        s->redraw_fifo_first &= REDRAW_FIFO_LEN - 1;        vmsvga_update_rect(s, rect->x, rect->y, rect->w, rect->h);    }}#ifdef HW_RECT_ACCELstatic inline void vmsvga_copy_rect(struct vmsvga_state_s *s,                int x0, int y0, int x1, int y1, int w, int h){# ifdef DIRECT_VRAM    uint8_t *vram = s->ds->data;# else    uint8_t *vram = s->vram;# endif    int bypl = s->bypp * s->width;    int width = s->bypp * w;    int line = h;    uint8_t *ptr[2];# ifdef DIRECT_VRAM    if (s->ds->dpy_copy)        s->ds->dpy_copy(s->ds, x0, y0, x1, y1, w, h);    else# endif    {        if (y1 > y0) {            ptr[0] = vram + s->bypp * x0 + bypl * (y0 + h - 1);            ptr[1] = vram + s->bypp * x1 + bypl * (y1 + h - 1);            for (; line > 0; line --, ptr[0] -= bypl, ptr[1] -= bypl)                memmove(ptr[1], ptr[0], width);        } else {            ptr[0] = vram + s->bypp * x0 + bypl * y0;            ptr[1] = vram + s->bypp * x1 + bypl * y1;            for (; line > 0; line --, ptr[0] += bypl, ptr[1] += bypl)                memmove(ptr[1], ptr[0], width);        }    }    vmsvga_update_rect_delayed(s, x1, y1, w, h);}#endif#ifdef HW_FILL_ACCELstatic inline void vmsvga_fill_rect(struct vmsvga_state_s *s,                uint32_t c, int x, int y, int w, int h){# ifdef DIRECT_VRAM    uint8_t *vram = s->ds->data;# else    uint8_t *vram = s->vram;# endif    int bypp = s->bypp;    int bypl = bypp * s->width;    int width = bypp * w;    int line = h;    int column;    uint8_t *fst = vram + bypp * x + bypl * y;    uint8_t *dst;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区视频 | 91美女视频网站| 欧美性xxxxxxxx| 久久久综合精品| 亚洲国产成人va在线观看天堂| 精品一区二区免费| 色播五月激情综合网| 久久伊人中文字幕| 日本不卡在线视频| 欧美日韩中字一区| 亚洲精品写真福利| 成人免费av在线| 国产三级欧美三级| 国产在线精品一区二区三区不卡| 9191久久久久久久久久久| 亚洲摸摸操操av| 色综合久久综合| 韩国女主播一区二区三区| 欧美在线啊v一区| 综合欧美一区二区三区| 成人av网站在线| 国产欧美日韩视频在线观看| 美女网站色91| 91麻豆精品国产91久久久更新时间 | 婷婷久久综合九色国产成人| 9i在线看片成人免费| 国产精品视频一区二区三区不卡| 国产又粗又猛又爽又黄91精品| 911国产精品| 青青草97国产精品免费观看无弹窗版| 精品视频在线免费观看| 亚洲高清视频的网址| 欧美性生活大片视频| 亚洲成人综合在线| 欧美美女激情18p| 天天免费综合色| 日韩一级成人av| 久久国产生活片100| 精品少妇一区二区三区在线视频| 麻豆精品在线观看| 91精品国产综合久久福利软件 | 成人黄色免费短视频| 国产亚洲va综合人人澡精品| 国产白丝精品91爽爽久久| 国产欧美一区二区在线观看| 福利一区二区在线| 国产精品久久久久影视| 99精品桃花视频在线观看| 一区二区三区在线播放| 欧美日韩成人综合在线一区二区| 蜜臀av在线播放一区二区三区| 26uuu国产日韩综合| 不卡一二三区首页| 亚洲无人区一区| 精品播放一区二区| 成人免费看片app下载| 国产精品少妇自拍| 欧美性猛交一区二区三区精品| 美女精品一区二区| 中文字幕一区二区三区四区不卡| 欧美日韩一区成人| 国产剧情av麻豆香蕉精品| 国产精品久久二区二区| 欧美三片在线视频观看 | 成人av小说网| 视频在线观看91| 久久精品视频网| 欧美在线色视频| 国产伦精品一区二区三区在线观看| 国产精品乱码一区二区三区软件| 日本高清免费不卡视频| 捆绑紧缚一区二区三区视频| 国产精品入口麻豆九色| 欧美日韩国产欧美日美国产精品| 国精产品一区一区三区mba视频| 亚洲同性gay激情无套| 日韩精品一区二区三区视频| 色婷婷综合久色| 国产一区二区三区免费在线观看| 亚洲国产视频一区| 国产精品欧美综合在线| 日韩欧美高清一区| 色婷婷av一区二区三区软件| 国产精品456| 免费美女久久99| 亚洲一区二区欧美日韩| 欧美激情资源网| 精品毛片乱码1区2区3区| 欧洲精品中文字幕| av午夜一区麻豆| 国产精品一区二区在线观看不卡| 天堂资源在线中文精品| 亚洲国产精品高清| 久久综合资源网| 日韩欧美国产综合在线一区二区三区| 色妞www精品视频| av资源网一区| 国产成人av一区二区三区在线观看| 免费成人在线网站| 日日夜夜一区二区| 亚洲一区二区三区影院| 日韩一区欧美一区| 国产精品热久久久久夜色精品三区| 日韩视频在线你懂得| 在线成人小视频| 欧美写真视频网站| 91首页免费视频| 一本色道久久综合狠狠躁的推荐| 成人国产亚洲欧美成人综合网| 懂色av一区二区三区免费看| 精品一区二区影视| 国内精品伊人久久久久av影院| 久久国产精品99精品国产 | 国产精品中文有码| 韩国一区二区视频| 国产精品一区二区在线观看不卡| 国产精品综合二区| 国产·精品毛片| 99久久久久久99| 色94色欧美sute亚洲线路一ni| 91美女片黄在线观看| 色综合天天综合狠狠| 色综合久久88色综合天天| 色综合网色综合| 欧美日韩黄色影视| 欧美一级专区免费大片| 精品国产乱码久久久久久老虎| 精品国产123| 国产精品网站在线观看| 亚洲人一二三区| 亚洲一区二区av电影| 五月激情综合网| 精品一区二区三区在线观看国产 | 国内精品国产成人| 成人综合婷婷国产精品久久免费| 成人国产电影网| 欧亚一区二区三区| 欧美一卡二卡三卡| 国产精品欧美久久久久一区二区| 亚洲三级理论片| 日本欧美加勒比视频| 国产成人鲁色资源国产91色综| 成人av手机在线观看| 在线亚洲高清视频| 精品久久人人做人人爰| 欧美国产一区二区在线观看| 亚洲一区二区精品视频| 精品在线一区二区三区| 一本久久a久久免费精品不卡| 91精品欧美久久久久久动漫 | 免费不卡在线视频| 国产精品91一区二区| 在线影院国内精品| 精品久久久久久久久久久久久久久久久 | 精品少妇一区二区三区免费观看| 国产精品日韩成人| 日本欧美肥老太交大片| 不卡的电影网站| 精品久久久网站| 国产精品久久福利| 成人小视频免费在线观看| av成人动漫在线观看| 精品少妇一区二区三区| 亚洲欧美另类在线| 国产乱码精品一区二区三区五月婷| 91污在线观看| 久久久久久久久久看片| 亚洲激情校园春色| 福利电影一区二区| 日韩欧美电影一二三| 亚洲精品中文在线观看| 国产成人在线视频网址| 日韩一区二区三区四区五区六区| 亚洲欧美经典视频| 国产一区91精品张津瑜| 欧美一区二区三区四区视频| 一区二区三区免费在线观看| 丁香桃色午夜亚洲一区二区三区| 欧美高清视频不卡网| 亚洲男人的天堂一区二区| 成人免费毛片aaaaa**| 日韩女优制服丝袜电影| 亚洲不卡av一区二区三区| 色综合久久天天综合网| 中文字幕视频一区| 国产成人免费在线视频| 精品久久国产97色综合| 免费高清在线视频一区·| 欧美日韩不卡在线| 亚洲国产日韩a在线播放| 一本一本大道香蕉久在线精品| 亚洲视频你懂的| 99久久精品国产一区二区三区| 国产精品久久久久久久第一福利| 精品一区二区三区免费视频| 欧美成人猛片aaaaaaa| 国产综合久久久久久鬼色| 欧美一区二区三区的| 日韩国产欧美在线播放| 欧美一区二区三区在线电影|