xref: /openbsd-src/sys/stand/efi/include/efigop.h (revision aa2a8ca5e5140b61be1a50d5e92ee775499a1008)
1060fee10Skettenis /* $FreeBSD: head/sys/boot/efi/include/efigop.h 264095 2014-04-04 00:16:46Z emaste $ */
2060fee10Skettenis /*++
3060fee10Skettenis 
4060fee10Skettenis Copyright (c)  1999 - 2002 Intel Corporation. All rights reserved
5060fee10Skettenis This software and associated documentation (if any) is furnished
6060fee10Skettenis under a license and may only be used or copied in accordance
7060fee10Skettenis with the terms of the license. Except as permitted by such
8060fee10Skettenis license, no part of this software or documentation may be
9060fee10Skettenis reproduced, stored in a retrieval system, or transmitted in any
10060fee10Skettenis form or by any means without the express written consent of
11060fee10Skettenis Intel Corporation.
12060fee10Skettenis 
13060fee10Skettenis Module Name:
14060fee10Skettenis 
15060fee10Skettenis     efigop.h
16060fee10Skettenis 
17060fee10Skettenis Abstract:
18060fee10Skettenis     Info about framebuffers
19060fee10Skettenis 
20060fee10Skettenis 
21060fee10Skettenis 
22060fee10Skettenis 
23060fee10Skettenis Revision History
24060fee10Skettenis 
25060fee10Skettenis --*/
26060fee10Skettenis 
27060fee10Skettenis #ifndef _EFIGOP_H
28060fee10Skettenis #define _EFIGOP_H
29060fee10Skettenis 
30060fee10Skettenis #define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
31*aa2a8ca5Sjsg     { 0x9042a9de, 0x23dc, 0x4a38, { 0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } }
32060fee10Skettenis 
33060fee10Skettenis INTERFACE_DECL(_EFI_GRAPHICS_OUTPUT);
34060fee10Skettenis 
35060fee10Skettenis typedef struct {
36060fee10Skettenis 	UINT32	RedMask;
37060fee10Skettenis 	UINT32	GreenMask;
38060fee10Skettenis 	UINT32	BlueMask;
39060fee10Skettenis 	UINT32	ReservedMask;
40060fee10Skettenis } EFI_PIXEL_BITMASK;
41060fee10Skettenis 
42060fee10Skettenis typedef enum {
43060fee10Skettenis 	PixelRedGreenBlueReserved8BitPerColor,
44060fee10Skettenis 	PixelBlueGreenRedReserved8BitPerColor,
45060fee10Skettenis 	PixelBitMask,
46060fee10Skettenis 	PixelBltOnly,
47060fee10Skettenis 	PixelFormatMax,
48060fee10Skettenis } EFI_GRAPHICS_PIXEL_FORMAT;
49060fee10Skettenis 
50060fee10Skettenis typedef struct {
51060fee10Skettenis 	UINT32				Version;
52060fee10Skettenis 	UINT32				HorizontalResolution;
53060fee10Skettenis 	UINT32				VerticalResolution;
54060fee10Skettenis 	EFI_GRAPHICS_PIXEL_FORMAT	PixelFormat;
55060fee10Skettenis 	EFI_PIXEL_BITMASK		PixelInformation;
56060fee10Skettenis 	UINT32				PixelsPerScanLine;
57060fee10Skettenis } EFI_GRAPHICS_OUTPUT_MODE_INFORMATION;
58060fee10Skettenis 
59060fee10Skettenis typedef struct {
60060fee10Skettenis 	UINT32					MaxMode;
61060fee10Skettenis 	UINT32					Mode;
62060fee10Skettenis 	EFI_GRAPHICS_OUTPUT_MODE_INFORMATION	*Info;
63060fee10Skettenis 	UINTN					SizeOfInfo;
64060fee10Skettenis 	EFI_PHYSICAL_ADDRESS			FrameBufferBase;
65060fee10Skettenis 	UINTN					FrameBufferSize;
66060fee10Skettenis } EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE;
67060fee10Skettenis 
68060fee10Skettenis typedef
69060fee10Skettenis EFI_STATUS
70060fee10Skettenis (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE) (
71060fee10Skettenis     IN  struct _EFI_GRAPHICS_OUTPUT		*This,
72060fee10Skettenis     IN  UINT32					ModeNumber,
73060fee10Skettenis     OUT UINTN					*SizeOfInfo,
74060fee10Skettenis     OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION	**Info
75060fee10Skettenis     );
76060fee10Skettenis 
77060fee10Skettenis typedef
78060fee10Skettenis EFI_STATUS
79060fee10Skettenis (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE) (
80060fee10Skettenis     IN  struct _EFI_GRAPHICS_OUTPUT	*This,
81060fee10Skettenis     IN  UINT32				ModeNumber
82060fee10Skettenis     );
83060fee10Skettenis 
84060fee10Skettenis typedef struct {
85060fee10Skettenis 	UINT8	Blue;
86060fee10Skettenis 	UINT8	Green;
87060fee10Skettenis 	UINT8	Red;
88060fee10Skettenis 	UINT8	Reserved;
89060fee10Skettenis } EFI_GRAPHICS_OUTPUT_BLT_PIXEL;
90060fee10Skettenis 
91060fee10Skettenis typedef enum {
92060fee10Skettenis 	EfiBltVideoFill,
93060fee10Skettenis 	EfiBltVideoToBltBuffer,
94060fee10Skettenis 	EfiBltBufferToVideo,
95060fee10Skettenis 	EfiBltVideoToVideo,
96060fee10Skettenis 	EfiGraphcisOutputBltOperationMax,
97060fee10Skettenis } EFI_GRAPHICS_OUTPUT_BLT_OPERATION;
98060fee10Skettenis 
99060fee10Skettenis typedef
100060fee10Skettenis EFI_STATUS
101060fee10Skettenis (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT) (
102060fee10Skettenis     IN struct _EFI_GRAPHICS_OUTPUT		*This,
103060fee10Skettenis     IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL	*BltBuffer,
104060fee10Skettenis     IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION	BltOperation,
105060fee10Skettenis     IN UINTN					SourceX,
106060fee10Skettenis     IN UINTN					SourceY,
107060fee10Skettenis     IN UINTN					DestinationX,
108060fee10Skettenis     IN UINTN					DestinationY,
109060fee10Skettenis     IN UINTN					Width,
110060fee10Skettenis     IN UINTN					Height,
111060fee10Skettenis     IN UINTN					Delta
112060fee10Skettenis     );
113060fee10Skettenis 
114060fee10Skettenis typedef struct _EFI_GRAPHICS_OUTPUT {
115060fee10Skettenis 	EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE	QueryMode;
116060fee10Skettenis 	EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE	SetMode;
117060fee10Skettenis 	EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT	Blt;
118060fee10Skettenis 	EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE	*Mode;
119060fee10Skettenis } EFI_GRAPHICS_OUTPUT;
120060fee10Skettenis 
121060fee10Skettenis #endif /* _EFIGOP_H */
122