blob: 919625fe900a6a23b4a9798bc9ba1bfb14245d92 [file] [log] [blame]
// Copyright 2016 The Fuchsia Authors
//
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT
#ifndef ZIRCON_KERNEL_LIB_EFI_INCLUDE_EFI_PROTOCOL_GRAPHICS_OUTPUT_H_
#define ZIRCON_KERNEL_LIB_EFI_INCLUDE_EFI_PROTOCOL_GRAPHICS_OUTPUT_H_
#include <efi/types.h>
#define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
{ \
0x9042a9de, 0x23dc, 0x4a38, { 0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } \
}
extern efi_guid GraphicsOutputProtocol;
typedef struct {
uint32_t RedMask;
uint32_t GreenMask;
uint32_t BlueMask;
uint32_t ReservedMask;
} efi_pixel_bitmask;
typedef enum {
PixelRedGreenBlueReserved8BitPerColor,
PixelBlueGreenRedReserved8BitPerColor,
PixelBitMask,
PixelBltOnly,
PixelFormatMax
} efi_graphics_pixel_format;
typedef struct {
uint32_t Version;
uint32_t HorizontalResolution;
uint32_t VerticalResolution;
efi_graphics_pixel_format PixelFormat;
efi_pixel_bitmask PixelInformation;
uint32_t PixelsPerScanLine;
} efi_graphics_output_mode_information;
typedef struct {
uint32_t MaxMode;
uint32_t Mode;
efi_graphics_output_mode_information* Info;
size_t SizeOfInfo;
efi_physical_addr FrameBufferBase;
size_t FrameBufferSize;
} efi_graphics_output_mode;
typedef struct {
uint8_t Blue;
uint8_t Green;
uint8_t Red;
uint8_t Reserved;
} efi_graphics_output_blt_pixel;
typedef enum {
EfiBltVideoFill,
EfiBltVideoToBltBuffer,
EfiBltBufferToVideo,
EfiBltVideoToVideo,
EfiGraphicsOutputBltOperationMax
} efi_graphics_output_blt_operation;
typedef struct efi_graphics_output_protocol {
efi_status (*QueryMode)(struct efi_graphics_output_protocol* self, uint32_t mode_num,
size_t* info_len, efi_graphics_output_mode_information** info) EFIAPI;
efi_status (*SetMode)(struct efi_graphics_output_protocol* self, uint32_t mode_num) EFIAPI;
efi_status (*Blt)(struct efi_graphics_output_protocol* self,
efi_graphics_output_blt_pixel* blt_buf,
efi_graphics_output_blt_operation blt_operation, size_t src_x, size_t src_y,
size_t dest_x, size_t dest_y, size_t width, size_t height, size_t delta) EFIAPI;
efi_graphics_output_mode* Mode;
} efi_graphics_output_protocol;
#endif // ZIRCON_KERNEL_LIB_EFI_INCLUDE_EFI_PROTOCOL_GRAPHICS_OUTPUT_H_