Alexander von Gluck IV 485b5cf8bc efi: Refactor our EFI code to use fuchsia's cleaner EFI headers.
* Drop gnu-efi

Change-Id: Ib601fc8ced49b18281b6b98cf861a5aef1b9c065
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2026
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2019-12-22 10:59:34 +00:00

77 lines
2.3 KiB
C

// Copyright 2016 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#pragma once
#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;