AquilaOS documentation
How it works, and its code
Loading...
Searching...
No Matches
vbe.h
Go to the documentation of this file.
1#ifndef _VIDEO_VBE_H
2#define _VIDEO_VBE_H
3
4#include <core/system.h>
5
6/*
7 * VESA BIOS Extensions (VBE): the structures that the video BIOS fills,
8 * which the boot loader passes when it sets a graphics mode, as the VBE
9 * specification names them.
10 */
11
31
34/* Mandatory information for all VBE revisions */
44/* Mandatory information for VBE 1.2 and above */
56/* Direct Color fields (required for direct/6 and YUV/7 memory models) */
66/* Mandatory information for VBE 2.0 and above */
70/* Mandatory information for VBE 3.0 and above */
84} __packed;
85
86/* VBE Mode Numbers */
87#define VBE_MODE_VESA_DEFINED 0x0100
88#define VBE_MODE_REFRESH_RATE_USE_CRTC 0x0800
89#define VBE_MODE_LINEAR_FRAME_BUFFER 0x4000
90#define VBE_MODE_PRESERVE_DISPLAY_MEMORY 0x8000
91
92/* VBE GFX Mode Number */
93#define VBE_VESA_MODE_640X400X8 0x100
94#define VBE_VESA_MODE_640X480X8 0x101
95#define VBE_VESA_MODE_800X600X4 0x102
96#define VBE_VESA_MODE_800X600X8 0x103
97#define VBE_VESA_MODE_1024X768X4 0x104
98#define VBE_VESA_MODE_1024X768X8 0x105
99#define VBE_VESA_MODE_1280X1024X4 0x106
100#define VBE_VESA_MODE_1280X1024X8 0x107
101#define VBE_VESA_MODE_320X200X1555 0x10D
102#define VBE_VESA_MODE_320X200X565 0x10E
103#define VBE_VESA_MODE_320X200X888 0x10F
104#define VBE_VESA_MODE_640X480X1555 0x110
105#define VBE_VESA_MODE_640X480X565 0x111
106#define VBE_VESA_MODE_640X480X888 0x112
107#define VBE_VESA_MODE_800X600X1555 0x113
108#define VBE_VESA_MODE_800X600X565 0x114
109#define VBE_VESA_MODE_800X600X888 0x115
110#define VBE_VESA_MODE_1024X768X1555 0x116
111#define VBE_VESA_MODE_1024X768X565 0x117
112#define VBE_VESA_MODE_1024X768X888 0x118
113#define VBE_VESA_MODE_1280X1024X1555 0x119
114#define VBE_VESA_MODE_1280X1024X565 0x11A
115#define VBE_VESA_MODE_1280X1024X888 0x11B
116#define VBE_VESA_MODE_1600X1200X8 0x11C
117#define VBE_VESA_MODE_1600X1200X1555 0x11D
118#define VBE_VESA_MODE_1600X1200X565 0x11E
119#define VBE_VESA_MODE_1600X1200X888 0x11F
120
121/* BOCHS/PLEX86 'own' mode numbers */
122#define VBE_OWN_MODE_320X200X8888 0x140
123#define VBE_OWN_MODE_640X400X8888 0x141
124#define VBE_OWN_MODE_640X480X8888 0x142
125#define VBE_OWN_MODE_800X600X8888 0x143
126#define VBE_OWN_MODE_1024X768X8888 0x144
127#define VBE_OWN_MODE_1280X1024X8888 0x145
128#define VBE_OWN_MODE_320X200X8 0x146
129#define VBE_OWN_MODE_1600X1200X8888 0x147
130#define VBE_OWN_MODE_1152X864X8 0x148
131#define VBE_OWN_MODE_1152X864X1555 0x149
132#define VBE_OWN_MODE_1152X864X565 0x14a
133#define VBE_OWN_MODE_1152X864X888 0x14b
134#define VBE_OWN_MODE_1152X864X8888 0x14c
135
136#define VBE_VESA_MODE_END_OF_LIST 0xFFFF
137
138/* Capabilities */
139#define VBE_CAPABILITY_8BIT_DAC 0x0001
140#define VBE_CAPABILITY_NOT_VGA_COMPATIBLE 0x0002
141#define VBE_CAPABILITY_RAMDAC_USE_BLANK_BIT 0x0004
142#define VBE_CAPABILITY_STEREOSCOPIC_SUPPORT 0x0008
143#define VBE_CAPABILITY_STEREO_VIA_VESA_EVC 0x0010
144
145/* Mode Attributes */
146#define VBE_MODE_ATTRIBUTE_SUPPORTED 0x0001
147#define VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE 0x0002
148#define VBE_MODE_ATTRIBUTE_TTY_BIOS_SUPPORT 0x0004
149#define VBE_MODE_ATTRIBUTE_COLOR_MODE 0x0008
150#define VBE_MODE_ATTRIBUTE_GRAPHICS_MODE 0x0010
151#define VBE_MODE_ATTRIBUTE_NOT_VGA_COMPATIBLE 0x0020
152#define VBE_MODE_ATTRIBUTE_NO_VGA_COMPATIBLE_WINDOW 0x0040
153#define VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE 0x0080
154#define VBE_MODE_ATTRIBUTE_DOUBLE_SCAN_MODE 0x0100
155#define VBE_MODE_ATTRIBUTE_INTERLACE_MODE 0x0200
156#define VBE_MODE_ATTRIBUTE_HARDWARE_TRIPLE_BUFFER 0x0400
157#define VBE_MODE_ATTRIBUTE_HARDWARE_STEREOSCOPIC_DISPLAY 0x0800
158#define VBE_MODE_ATTRIBUTE_DUAL_DISPLAY_START_ADDRESS 0x1000
159
160#define VBE_MODE_ATTTRIBUTE_LFB_ONLY ( VBE_MODE_ATTRIBUTE_NO_VGA_COMPATIBLE_WINDOW | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE )
161
162/* Window attributes */
163#define VBE_WINDOW_ATTRIBUTE_RELOCATABLE 0x01
164#define VBE_WINDOW_ATTRIBUTE_READABLE 0x02
165#define VBE_WINDOW_ATTRIBUTE_WRITEABLE 0x04
166
167/* Memory model */
168#define VBE_MEMORYMODEL_TEXT_MODE 0x00
169#define VBE_MEMORYMODEL_CGA_GRAPHICS 0x01
170#define VBE_MEMORYMODEL_HERCULES_GRAPHICS 0x02
171#define VBE_MEMORYMODEL_PLANAR 0x03
172#define VBE_MEMORYMODEL_PACKED_PIXEL 0x04
173#define VBE_MEMORYMODEL_NON_CHAIN_4_256 0x05
174#define VBE_MEMORYMODEL_DIRECT_COLOR 0x06
175#define VBE_MEMORYMODEL_YUV 0x07
176
177/* DirectColorModeInfo */
178#define VBE_DIRECTCOLOR_COLOR_RAMP_PROGRAMMABLE 0x01
179#define VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE 0x02
180
193
194#endif /* _VIDEO_VBE_H */
#define __packed
Definition system.h:30
unsigned int uint32_t
Definition stddef.h:22
unsigned char uint8_t
Definition stddef.h:20
unsigned short int uint16_t
Definition stddef.h:21
A VBE mode's information block.
Definition vbe.h:33
uint8_t number_of_banks
Definition vbe.h:51
uint8_t bits_per_pixel
Definition vbe.h:50
uint8_t red_field_position
Definition vbe.h:58
uint8_t y_char_size
Definition vbe.h:48
uint16_t off_screen_mem_size
Definition vbe.h:69
uint8_t rsvd_mask_size
Definition vbe.h:63
uint32_t off_screen_mem_offset
Definition vbe.h:68
uint16_t mode_attributes
Definition vbe.h:35
uint8_t blue_mask_size
Definition vbe.h:61
uint8_t lin_red_mask_size
Definition vbe.h:74
uint8_t rsvd_field_position
Definition vbe.h:64
uint8_t reserved_page
Definition vbe.h:55
uint16_t bytes_per_scanline
Definition vbe.h:43
uint8_t lin_blue_mask_size
Definition vbe.h:78
uint8_t red_mask_size
Definition vbe.h:57
uint8_t direct_color_mode_info
Definition vbe.h:65
uint8_t x_char_size
Definition vbe.h:47
uint8_t blue_field_position
Definition vbe.h:62
uint8_t green_mask_size
Definition vbe.h:59
uint8_t lin_blue_field_position
Definition vbe.h:79
uint16_t x_resolution
Definition vbe.h:45
uint16_t win_size
Definition vbe.h:39
uint8_t lin_green_mask_size
Definition vbe.h:76
uint32_t win_func_ptr
Definition vbe.h:42
uint8_t lin_rsvd_mask_size
Definition vbe.h:80
uint16_t win_a_segment
Definition vbe.h:40
uint16_t win_granularity
Definition vbe.h:38
uint8_t green_field_position
Definition vbe.h:60
uint8_t lin_green_field_position
Definition vbe.h:77
uint8_t lin_rsvd_field_position
Definition vbe.h:81
uint16_t win_b_segment
Definition vbe.h:41
uint32_t max_pixel_clock
Definition vbe.h:82
uint8_t memory_model
Definition vbe.h:52
uint8_t number_of_image_pages
Definition vbe.h:54
uint8_t lin_red_field_position
Definition vbe.h:75
uint32_t phys_base_ptr
Definition vbe.h:67
uint8_t reserved[189]
Definition vbe.h:83
uint16_t y_resolution
Definition vbe.h:46
uint8_t lin_number_of_pages
Definition vbe.h:73
uint8_t win_a_attributes
Definition vbe.h:36
uint8_t bnk_number_of_pages
Definition vbe.h:72
uint8_t win_b_attributes
Definition vbe.h:37
uint8_t number_of_planes
Definition vbe.h:49
uint16_t lin_bytes_per_scanline
Definition vbe.h:71
uint8_t bank_size
Definition vbe.h:53
uint8_t checksum
Definition vbe.h:191
uint16_t b800h
Definition vbe.h:188
char signature[4]
Definition vbe.h:182
uint16_t code_seg_sel
Definition vbe.h:189
uint16_t b000h
Definition vbe.h:187
uint16_t entry_point
Definition vbe.h:183
uint16_t pm_initalize
Definition vbe.h:184
uint16_t bios_data_sel
Definition vbe.h:185
uint8_t in_protect_mode
Definition vbe.h:190
uint16_t a000h
Definition vbe.h:186
The VBE controller information block.
Definition vbe.h:13
uint16_t total_memory
Definition vbe.h:23
uint16_t video_mode_ptr_seg
Definition vbe.h:22
uint16_t vbe_version
Definition vbe.h:18
uint32_t oem_product_rev
Definition vbe.h:27
uint32_t oem_product_name
Definition vbe.h:26
uint16_t oem_software_rev
Definition vbe.h:24
uint16_t reserved[111]
Definition vbe.h:28
uint32_t oem_string
Definition vbe.h:19
uint8_t oemdata[256]
Definition vbe.h:29
uint8_t capabilities[4]
Definition vbe.h:20
uint32_t oem_vendor_name
Definition vbe.h:25
union vbe_info_block::@265127140151124161061275075032325137016204121255 vbe_signature
uint16_t video_mode_ptr_off
Definition vbe.h:21