X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fdos%2Fvbe.h;h=319f7d3c13f33cf1cefb7624236ab3af37c81843;hb=2ee531a10bad1036d2279f9b626da72e345a3b37;hp=1236b28bcf90890f00256894aa8bdc125924e8c4;hpb=282021dce00ae9430184cb033c1e49ba5aa132a1;p=dosdemo diff --git a/src/dos/vbe.h b/src/dos/vbe.h index 1236b28..319f7d3 100644 --- a/src/dos/vbe.h +++ b/src/dos/vbe.h @@ -77,6 +77,13 @@ struct vbe_crtc_info { } PACKED; #pragma pack (pop) +/* returned by vbe_scanline_info() */ +struct vbe_scanline_info { + int size; + int num_pixels; + int max_scanlines; +}; + enum { VBE_8BIT_DAC = 0x01, VBE_NON_VGA = 0x02, @@ -111,7 +118,7 @@ enum { VBE_ATTR_STEREO = 0x0800, VBE_ATTR_STEREO_2FB = 0x1000, /* VBE/AF */ - VBE_ATTR_MUSTLOCK = 0x0200, /* ! */ + VBE_ATTR_MUSTLOCK = 0x0200 /* ! */ }; /* VBE memory model type (vbe_mode_info.mem_model) */ @@ -188,6 +195,21 @@ enum { VBE_CRTC_VSYNC_NEG = 0x08 }; +enum { + VBE_STATE_CTRLHW = 0x01, + VBE_STATE_BIOS = 0x02, + VBE_STATE_DAC = 0x04, + VBE_STATE_REGS = 0x08, + + VBE_STATE_ALL = 0xffff +}; + +enum { + VBE_SWAP_NOW, + VBE_SWAP_VBLANK, + VBE_SWAP_ASYNC /* schedule swap and return (triple-buffering) */ +}; + int vbe_info(struct vbe_info *info); int vbe_num_modes(struct vbe_info *info); int vbe_mode_info(int mode, struct vbe_mode_info *minf); @@ -197,5 +219,24 @@ void vbe_print_mode_info(FILE *fp, struct vbe_mode_info *minf); int vbe_setmode(uint16_t mode); int vbe_setmode_crtc(uint16_t mode, struct vbe_crtc_info *crtc); +int vbe_getmode(void); + +int vbe_state_size(unsigned int flags); +int vbe_save(void *stbuf, int sz, unsigned int flags); +int vbe_restore(void *stbuf, int sz, unsigned int flags); + +int vbe_setwin(int wid, int pos); +int vbe_getwin(int wid); + +/* returns the actual length in pixels, which might not be what was requested */ +int vbe_setscanlen(int len_pix); +int vbe_getscanlen(void); +int vbe_getpitch(void); +int vbe_scanline_info(struct vbe_scanline_info *sinf); + +int vbe_setdisp(int x, int y, int when); +int vbe_swap(uint32_t voffs, int when); +int vbe_swap_pending(void); /* 0: not pending (done) or error, 1: pending swap */ +/* TODO add stereo swap */ #endif /* VBE_H_ */