rayzor
diff src/vbe.h @ 0:2a5340a6eee4
rayzor first commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 05 Apr 2014 08:46:27 +0300 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/vbe.h Sat Apr 05 08:46:27 2014 +0300 1.3 @@ -0,0 +1,70 @@ 1.4 +#ifndef VBE_H_ 1.5 +#define VBE_H_ 1.6 + 1.7 +#include "inttypes.h" 1.8 + 1.9 +#define VBE_ATTR_LFB (1 << 7) 1.10 +#define VBE_MODE_LFB (1 << 14) 1.11 + 1.12 +#pragma pack (push, 0) 1.13 +struct vbe_info { 1.14 + uint8_t sig[4]; 1.15 + uint16_t version; 1.16 + uint32_t oem_str_ptr; 1.17 + uint8_t caps[4]; /* capabilities */ 1.18 + uint32_t vid_mode_ptr; /* vbefarptr to video mode list */ 1.19 + uint16_t total_mem; /* num of 64k mem blocks */ 1.20 + uint16_t oem_sw_rev; /* VBE implementation software revision */ 1.21 + uint32_t oem_vendor_name_ptr; 1.22 + uint32_t oem_product_name_ptr; 1.23 + uint32_t oem_product_rev_ptr; 1.24 + uint8_t reserved[222]; 1.25 + uint8_t oem_data[256]; 1.26 +}; 1.27 + 1.28 +struct vbe_mode_info { 1.29 + uint16_t mode_attr; 1.30 + uint8_t wina_attr, winb_attr; 1.31 + uint16_t win_gran, win_size; 1.32 + uint16_t wina_seg, winb_seg; 1.33 + uint32_t win_func; 1.34 + uint16_t scanline_bytes; 1.35 + 1.36 + /* VBE 1.2 and above */ 1.37 + uint16_t xres, yres; 1.38 + uint8_t xcharsz, ycharsz; 1.39 + uint8_t num_planes; 1.40 + uint8_t bpp; 1.41 + uint8_t num_banks; 1.42 + uint8_t mem_model; 1.43 + uint8_t bank_size; /* bank size in KB */ 1.44 + uint8_t num_img_pages; 1.45 + uint8_t reserved1; 1.46 + 1.47 + /* direct color fields */ 1.48 + uint8_t rmask_size, rpos; 1.49 + uint8_t gmask_size, gpos; 1.50 + uint8_t bmask_size, bpos; 1.51 + uint8_t xmask_size, xpos; 1.52 + uint8_t cmode_info; /* direct color mode attributes */ 1.53 + 1.54 + /* VBE 2.0 and above */ 1.55 + uint32_t fb_addr; /* physical address of the linear framebuffer */ 1.56 + uint32_t reserved2; 1.57 + uint16_t reserved3; 1.58 + 1.59 + uint8_t reserved4[206]; 1.60 +}; 1.61 +#pragma pack (pop) 1.62 + 1.63 +struct vbe_info *vbe_get_info(void); 1.64 +struct vbe_mode_info *vbe_get_mode_info(unsigned int mode); 1.65 + 1.66 +int vbe_set_mode(unsigned int mode); 1.67 + 1.68 +int vbe_set_palette_bits(int bits); 1.69 +void vbe_set_palette(int idx, int *col, int count, int bits); 1.70 + 1.71 +void print_mode_info(FILE *fp, struct vbe_mode_info *modei); 1.72 + 1.73 +#endif /* VBE_H_ */