AquilaOS documentation
How it works, and its code
Toggle main menu visibility
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
13
struct
vbe_info_block
{
14
union
{
15
uint8_t
sig_chr
[4];
16
uint32_t
sig32
;
17
}
vbe_signature
;
18
uint16_t
vbe_version
;
19
uint32_t
oem_string
;
20
uint8_t
capabilities
[4];
21
uint16_t
video_mode_ptr_off
;
22
uint16_t
video_mode_ptr_seg
;
23
uint16_t
total_memory
;
24
uint16_t
oem_software_rev
;
25
uint32_t
oem_vendor_name
;
26
uint32_t
oem_product_name
;
27
uint32_t
oem_product_rev
;
28
uint16_t
reserved
[111];
29
uint8_t
oemdata
[256];
30
}
__packed
;
31
33
struct
mode_info_block
{
34
/* Mandatory information for all VBE revisions */
35
uint16_t
mode_attributes
;
36
uint8_t
win_a_attributes
;
37
uint8_t
win_b_attributes
;
38
uint16_t
win_granularity
;
39
uint16_t
win_size
;
40
uint16_t
win_a_segment
;
41
uint16_t
win_b_segment
;
42
uint32_t
win_func_ptr
;
43
uint16_t
bytes_per_scanline
;
44
/* Mandatory information for VBE 1.2 and above */
45
uint16_t
x_resolution
;
46
uint16_t
y_resolution
;
47
uint8_t
x_char_size
;
48
uint8_t
y_char_size
;
49
uint8_t
number_of_planes
;
50
uint8_t
bits_per_pixel
;
51
uint8_t
number_of_banks
;
52
uint8_t
memory_model
;
53
uint8_t
bank_size
;
54
uint8_t
number_of_image_pages
;
55
uint8_t
reserved_page
;
56
/* Direct Color fields (required for direct/6 and YUV/7 memory models) */
57
uint8_t
red_mask_size
;
58
uint8_t
red_field_position
;
59
uint8_t
green_mask_size
;
60
uint8_t
green_field_position
;
61
uint8_t
blue_mask_size
;
62
uint8_t
blue_field_position
;
63
uint8_t
rsvd_mask_size
;
64
uint8_t
rsvd_field_position
;
65
uint8_t
direct_color_mode_info
;
66
/* Mandatory information for VBE 2.0 and above */
67
uint32_t
phys_base_ptr
;
68
uint32_t
off_screen_mem_offset
;
69
uint16_t
off_screen_mem_size
;
70
/* Mandatory information for VBE 3.0 and above */
71
uint16_t
lin_bytes_per_scanline
;
72
uint8_t
bnk_number_of_pages
;
73
uint8_t
lin_number_of_pages
;
74
uint8_t
lin_red_mask_size
;
75
uint8_t
lin_red_field_position
;
76
uint8_t
lin_green_mask_size
;
77
uint8_t
lin_green_field_position
;
78
uint8_t
lin_blue_mask_size
;
79
uint8_t
lin_blue_field_position
;
80
uint8_t
lin_rsvd_mask_size
;
81
uint8_t
lin_rsvd_field_position
;
82
uint32_t
max_pixel_clock
;
83
uint8_t
reserved
[189];
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
181
struct
pm_info_block
{
182
char
signature
[4];
183
uint16_t
entry_point
;
184
uint16_t
pm_initalize
;
185
uint16_t
bios_data_sel
;
186
uint16_t
a000h
;
187
uint16_t
b000h
;
188
uint16_t
b800h
;
189
uint16_t
code_seg_sel
;
190
uint8_t
in_protect_mode
;
191
uint8_t
checksum
;
192
}
__packed
;
193
194
#endif
/* _VIDEO_VBE_H */
system.h
__packed
#define __packed
Definition
system.h:30
uint32_t
unsigned int uint32_t
Definition
stddef.h:22
uint8_t
unsigned char uint8_t
Definition
stddef.h:20
uint16_t
unsigned short int uint16_t
Definition
stddef.h:21
mode_info_block
A VBE mode's information block.
Definition
vbe.h:33
mode_info_block::number_of_banks
uint8_t number_of_banks
Definition
vbe.h:51
mode_info_block::bits_per_pixel
uint8_t bits_per_pixel
Definition
vbe.h:50
mode_info_block::red_field_position
uint8_t red_field_position
Definition
vbe.h:58
mode_info_block::y_char_size
uint8_t y_char_size
Definition
vbe.h:48
mode_info_block::off_screen_mem_size
uint16_t off_screen_mem_size
Definition
vbe.h:69
mode_info_block::rsvd_mask_size
uint8_t rsvd_mask_size
Definition
vbe.h:63
mode_info_block::off_screen_mem_offset
uint32_t off_screen_mem_offset
Definition
vbe.h:68
mode_info_block::mode_attributes
uint16_t mode_attributes
Definition
vbe.h:35
mode_info_block::blue_mask_size
uint8_t blue_mask_size
Definition
vbe.h:61
mode_info_block::lin_red_mask_size
uint8_t lin_red_mask_size
Definition
vbe.h:74
mode_info_block::rsvd_field_position
uint8_t rsvd_field_position
Definition
vbe.h:64
mode_info_block::reserved_page
uint8_t reserved_page
Definition
vbe.h:55
mode_info_block::bytes_per_scanline
uint16_t bytes_per_scanline
Definition
vbe.h:43
mode_info_block::lin_blue_mask_size
uint8_t lin_blue_mask_size
Definition
vbe.h:78
mode_info_block::red_mask_size
uint8_t red_mask_size
Definition
vbe.h:57
mode_info_block::direct_color_mode_info
uint8_t direct_color_mode_info
Definition
vbe.h:65
mode_info_block::x_char_size
uint8_t x_char_size
Definition
vbe.h:47
mode_info_block::blue_field_position
uint8_t blue_field_position
Definition
vbe.h:62
mode_info_block::green_mask_size
uint8_t green_mask_size
Definition
vbe.h:59
mode_info_block::lin_blue_field_position
uint8_t lin_blue_field_position
Definition
vbe.h:79
mode_info_block::x_resolution
uint16_t x_resolution
Definition
vbe.h:45
mode_info_block::win_size
uint16_t win_size
Definition
vbe.h:39
mode_info_block::lin_green_mask_size
uint8_t lin_green_mask_size
Definition
vbe.h:76
mode_info_block::win_func_ptr
uint32_t win_func_ptr
Definition
vbe.h:42
mode_info_block::lin_rsvd_mask_size
uint8_t lin_rsvd_mask_size
Definition
vbe.h:80
mode_info_block::win_a_segment
uint16_t win_a_segment
Definition
vbe.h:40
mode_info_block::win_granularity
uint16_t win_granularity
Definition
vbe.h:38
mode_info_block::green_field_position
uint8_t green_field_position
Definition
vbe.h:60
mode_info_block::lin_green_field_position
uint8_t lin_green_field_position
Definition
vbe.h:77
mode_info_block::lin_rsvd_field_position
uint8_t lin_rsvd_field_position
Definition
vbe.h:81
mode_info_block::win_b_segment
uint16_t win_b_segment
Definition
vbe.h:41
mode_info_block::max_pixel_clock
uint32_t max_pixel_clock
Definition
vbe.h:82
mode_info_block::memory_model
uint8_t memory_model
Definition
vbe.h:52
mode_info_block::number_of_image_pages
uint8_t number_of_image_pages
Definition
vbe.h:54
mode_info_block::lin_red_field_position
uint8_t lin_red_field_position
Definition
vbe.h:75
mode_info_block::phys_base_ptr
uint32_t phys_base_ptr
Definition
vbe.h:67
mode_info_block::reserved
uint8_t reserved[189]
Definition
vbe.h:83
mode_info_block::y_resolution
uint16_t y_resolution
Definition
vbe.h:46
mode_info_block::lin_number_of_pages
uint8_t lin_number_of_pages
Definition
vbe.h:73
mode_info_block::win_a_attributes
uint8_t win_a_attributes
Definition
vbe.h:36
mode_info_block::bnk_number_of_pages
uint8_t bnk_number_of_pages
Definition
vbe.h:72
mode_info_block::win_b_attributes
uint8_t win_b_attributes
Definition
vbe.h:37
mode_info_block::number_of_planes
uint8_t number_of_planes
Definition
vbe.h:49
mode_info_block::lin_bytes_per_scanline
uint16_t lin_bytes_per_scanline
Definition
vbe.h:71
mode_info_block::bank_size
uint8_t bank_size
Definition
vbe.h:53
pm_info_block
Definition
vbe.h:181
pm_info_block::checksum
uint8_t checksum
Definition
vbe.h:191
pm_info_block::b800h
uint16_t b800h
Definition
vbe.h:188
pm_info_block::signature
char signature[4]
Definition
vbe.h:182
pm_info_block::code_seg_sel
uint16_t code_seg_sel
Definition
vbe.h:189
pm_info_block::b000h
uint16_t b000h
Definition
vbe.h:187
pm_info_block::entry_point
uint16_t entry_point
Definition
vbe.h:183
pm_info_block::pm_initalize
uint16_t pm_initalize
Definition
vbe.h:184
pm_info_block::bios_data_sel
uint16_t bios_data_sel
Definition
vbe.h:185
pm_info_block::in_protect_mode
uint8_t in_protect_mode
Definition
vbe.h:190
pm_info_block::a000h
uint16_t a000h
Definition
vbe.h:186
vbe_info_block
The VBE controller information block.
Definition
vbe.h:13
vbe_info_block::total_memory
uint16_t total_memory
Definition
vbe.h:23
vbe_info_block::video_mode_ptr_seg
uint16_t video_mode_ptr_seg
Definition
vbe.h:22
vbe_info_block::vbe_version
uint16_t vbe_version
Definition
vbe.h:18
vbe_info_block::oem_product_rev
uint32_t oem_product_rev
Definition
vbe.h:27
vbe_info_block::oem_product_name
uint32_t oem_product_name
Definition
vbe.h:26
vbe_info_block::oem_software_rev
uint16_t oem_software_rev
Definition
vbe.h:24
vbe_info_block::reserved
uint16_t reserved[111]
Definition
vbe.h:28
vbe_info_block::oem_string
uint32_t oem_string
Definition
vbe.h:19
vbe_info_block::oemdata
uint8_t oemdata[256]
Definition
vbe.h:29
vbe_info_block::capabilities
uint8_t capabilities[4]
Definition
vbe.h:20
vbe_info_block::oem_vendor_name
uint32_t oem_vendor_name
Definition
vbe.h:25
vbe_info_block::vbe_signature
union vbe_info_block::@265127140151124161061275075032325137016204121255 vbe_signature
vbe_info_block::video_mode_ptr_off
uint16_t video_mode_ptr_off
Definition
vbe.h:21
vbe_info_block::[union].vbe_signature::sig32
uint32_t sig32
vbe_info_block::[union].vbe_signature::sig_chr
uint8_t sig_chr[4]
kernel
include
video
vbe.h
Generated by
1.18.0