123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- typedef struct Cursor Cursor;
- typedef struct Cursorinfo Cursorinfo;
- struct Cursorinfo {
- Cursor;
- Lock;
- };
- /* devmouse.c */
- extern void mousetrack(int, int, int, int);
- extern Point mousexy(void);
- extern void mouseaccelerate(int);
- extern int m3mouseputc(Queue*, int);
- extern int m5mouseputc(Queue*, int);
- extern int mouseputc(Queue*, int);
- extern Cursorinfo cursor;
- extern Cursor arrow;
- /*
- * Generic VGA registers.
- */
- enum {
- MiscW = 0x03C2, /* Miscellaneous Output (W) */
- MiscR = 0x03CC, /* Miscellaneous Output (R) */
- Status0 = 0x03C2, /* Input status 0 (R) */
- Status1 = 0x03DA, /* Input Status 1 (R) */
- FeatureR = 0x03CA, /* Feature Control (R) */
- FeatureW = 0x03DA, /* Feature Control (W) */
- Seqx = 0x03C4, /* Sequencer Index, Data at Seqx+1 */
- Crtx = 0x03D4, /* CRT Controller Index, Data at Crtx+1 */
- Grx = 0x03CE, /* Graphics Controller Index, Data at Grx+1 */
- Attrx = 0x03C0, /* Attribute Controller Index and Data */
- PaddrW = 0x03C8, /* Palette Address Register, write */
- Pdata = 0x03C9, /* Palette Data Register */
- Pixmask = 0x03C6, /* Pixel Mask Register */
- PaddrR = 0x03C7, /* Palette Address Register, read */
- Pstatus = 0x03C7, /* DAC Status (RO) */
- Pcolours = 256, /* Palette */
- Pred = 0,
- Pgreen = 1,
- Pblue = 2,
- Pblack = 0x00,
- Pwhite = 0xFF,
- };
- #define VGAMEM() PADDR(arch->pcimem(0xA0000, 1<<16))
- #define vgai(port) inb(port)
- #define vgao(port, data) outb(port, data)
- extern int vgaxi(long, uchar);
- extern int vgaxo(long, uchar, uchar);
- /*
- */
- typedef struct VGAdev VGAdev;
- typedef struct VGAcur VGAcur;
- typedef struct VGAscr VGAscr;
- struct VGAdev {
- char* name;
- void (*enable)(VGAscr*);
- void (*disable)(VGAscr*);
- void (*page)(VGAscr*, int);
- void (*linear)(VGAscr*, int, int);
- void (*drawinit)(VGAscr*);
- int (*fill)(VGAscr*, Rectangle, ulong);
- void (*flush)(VGAscr*, Rectangle);
- };
- struct VGAcur {
- char* name;
- void (*enable)(VGAscr*);
- void (*disable)(VGAscr*);
- void (*load)(VGAscr*, Cursor*);
- int (*move)(VGAscr*, Point);
- int doespanning;
- };
- /*
- */
- struct VGAscr {
- Lock devlock;
- VGAdev* dev;
- Pcidev* pci;
- VGAcur* cur;
- ulong storage;
- Cursor;
- int useflush;
- ulong paddr; /* frame buffer */
- void* vaddr;
- int apsize;
- ulong io; /* device specific registers */
- ulong *mmio;
-
- ulong colormap[Pcolours][3];
- int palettedepth;
- Memimage* gscreen;
- Memdata* gscreendata;
- Memsubfont* memdefont;
- int (*fill)(VGAscr*, Rectangle, ulong);
- int (*scroll)(VGAscr*, Rectangle, Rectangle);
- void (*blank)(VGAscr*, int);
- ulong id; /* internal identifier for driver use */
- };
- extern VGAscr vgascreen[];
- enum {
- Backgnd = 0, /* black */
- };
- /* mouse.c */
- extern void mousectl(Cmdbuf*);
- /* screen.c */
- extern int hwaccel; /* use hw acceleration; default on */
- extern int hwblank; /* use hw blanking; default on */
- extern void addvgaseg(char*, ulong, ulong);
- extern uchar* attachscreen(Rectangle*, ulong*, int*, int*, int*);
- extern void flushmemscreen(Rectangle);
- extern int cursoron(int);
- extern void cursoroff(int);
- extern void setcursor(Cursor*);
- extern int screensize(int, int, int, ulong);
- extern int screenaperture(int, int);
- extern Rectangle physgscreenr; /* actual monitor size */
- extern void blankscreen(int);
- extern VGAcur swcursor;
- extern void swcursorinit(void);
- extern void swcursorhide(void);
- extern void swcursoravoid(Rectangle);
- extern void swcursorunhide(void);
- /* devdraw.c */
- extern void deletescreenimage(void);
- extern int drawhasclients(void);
- extern ulong blanktime;
- extern QLock drawlock;
- /* vga.c */
- extern void vgascreenwin(VGAscr*);
- extern void vgaimageinit(ulong);
- extern void vgalinearpciid(VGAscr*, int, int);
- extern void vgalinearpci(VGAscr*);
- extern void vgalinearaddr(VGAscr*, ulong, int);
- extern void drawblankscreen(int);
- extern void vgablank(VGAscr*, int);
- extern Lock vgascreenlock;
- #define ishwimage(i) (vgascreen[0].gscreendata && (i)->data->bdata == vgascreen[0].gscreendata->bdata)
|