2019-07-29 05:51:51 +08:00
|
|
|
const uefi = @import("std").os.uefi;
|
|
|
|
const Guid = uefi.Guid;
|
|
|
|
|
|
|
|
/// UEFI Specification, Version 2.8, 12.9
|
|
|
|
pub const GraphicsOutputProtocol = extern struct {
|
|
|
|
_query_mode: extern fn (*const GraphicsOutputProtocol, u32, *usize, **GraphicsOutputModeInformation) usize,
|
|
|
|
_set_mode: extern fn (*const GraphicsOutputProtocol, u32) usize,
|
|
|
|
_blt: extern fn (*const GraphicsOutputProtocol, ?[*]GraphicsOutputBltPixel, GraphicsOutputBltOperation, usize, usize, usize, usize, usize, usize, usize) usize,
|
|
|
|
mode: *GraphicsOutputProtocolMode,
|
|
|
|
|
|
|
|
pub fn queryMode(self: *const GraphicsOutputProtocol, mode: u32, size_of_info: *usize, info: **GraphicsOutputModeInformation) usize {
|
|
|
|
return self._query_mode(self, mode, size_of_info, info);
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn setMode(self: *const GraphicsOutputProtocol, mode: u32) usize {
|
|
|
|
return self._set_mode(self, mode);
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn blt(self: *const GraphicsOutputProtocol, blt_buffer: ?[*]GraphicsOutputBltPixel, blt_operation: GraphicsOutputBltOperation, source_x: usize, source_y: usize, destination_x: usize, destination_y: usize, width: usize, height: usize, delta: usize) usize {
|
|
|
|
return self._blt(self, blt_buffer, blt_operation, source_x, source_y, destination_x, destination_y, width, height, delta);
|
|
|
|
}
|
|
|
|
|
|
|
|
pub const guid align(8) = Guid{
|
|
|
|
.time_low = 0x9042a9de,
|
|
|
|
.time_mid = 0x23dc,
|
|
|
|
.time_high_and_version = 0x4a38,
|
|
|
|
.clock_seq_high_and_reserved = 0x96,
|
|
|
|
.clock_seq_low = 0xfb,
|
|
|
|
.node = [_]u8{ 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a },
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const GraphicsOutputProtocolMode = extern struct {
|
|
|
|
max_mode: u32,
|
|
|
|
mode: u32,
|
|
|
|
info: *GraphicsOutputModeInformation,
|
|
|
|
size_of_info: usize,
|
|
|
|
frame_buffer_base: u64,
|
|
|
|
frame_buffer_size: usize,
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const GraphicsOutputModeInformation = extern struct {
|
2019-08-07 00:06:18 +08:00
|
|
|
version: u32 = undefined,
|
|
|
|
horizontal_resolution: u32 = undefined,
|
|
|
|
vertical_resolution: u32 = undefined,
|
|
|
|
pixel_format: GraphicsPixelFormat = undefined,
|
|
|
|
pixel_information: PixelBitmask = undefined,
|
|
|
|
pixels_per_scan_line: u32 = undefined,
|
2019-07-29 05:51:51 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
pub const GraphicsPixelFormat = extern enum(u32) {
|
|
|
|
PixelRedGreenBlueReserved8BitPerColor,
|
|
|
|
PixelBlueGreenRedReserved8BitPerColor,
|
|
|
|
PixelBitMask,
|
|
|
|
PixelBltOnly,
|
|
|
|
PixelFormatMax,
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const PixelBitmask = extern struct {
|
|
|
|
red_mask: u32,
|
|
|
|
green_mask: u32,
|
|
|
|
blue_mask: u32,
|
|
|
|
reserved_mask: u32,
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const GraphicsOutputBltPixel = extern struct {
|
|
|
|
blue: u8,
|
|
|
|
green: u8,
|
|
|
|
red: u8,
|
|
|
|
reserved: u8 = undefined,
|
|
|
|
};
|
|
|
|
|
|
|
|
pub const GraphicsOutputBltOperation = extern enum(u32) {
|
|
|
|
BltVideoFill,
|
|
|
|
BltVideoToBltBuffer,
|
|
|
|
BltBufferToVideo,
|
|
|
|
BltVideoToVideo,
|
|
|
|
GraphicsOutputBltOperationMax,
|
|
|
|
};
|