1/*++
2
3Copyright (c)  1999 - 2002 Intel Corporation. All rights reserved
4This software and associated documentation (if any) is furnished
5under a license and may only be used or copied in accordance
6with the terms of the license. Except as permitted by such
7license, no part of this software or documentation may be
8reproduced, stored in a retrieval system, or transmitted in any
9form or by any means without the express written consent of
10Intel Corporation.
11
12Module Name:
13
14    efigop.h
15
16Abstract:
17    Info about framebuffers
18
19
20
21
22Revision History
23
24--*/
25
26#ifndef _EFIGOP_H
27#define _EFIGOP_H
28
29#define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
30    { 0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a} }
31
32INTERFACE_DECL(_EFI_GRAPHICS_OUTPUT);
33
34typedef struct {
35	UINT32	RedMask;
36	UINT32	GreenMask;
37	UINT32	BlueMask;
38	UINT32	ReservedMask;
39} EFI_PIXEL_BITMASK;
40
41typedef enum {
42	PixelRedGreenBlueReserved8BitPerColor,
43	PixelBlueGreenRedReserved8BitPerColor,
44	PixelBitMask,
45	PixelBltOnly,
46	PixelFormatMax,
47} EFI_GRAPHICS_PIXEL_FORMAT;
48
49typedef struct {
50	UINT32				Version;
51	UINT32				HorizontalResolution;
52	UINT32				VerticalResolution;
53	EFI_GRAPHICS_PIXEL_FORMAT	PixelFormat;
54	EFI_PIXEL_BITMASK		PixelInformation;
55	UINT32				PixelsPerScanLine;
56} EFI_GRAPHICS_OUTPUT_MODE_INFORMATION;
57
58typedef struct {
59	UINT32					MaxMode;
60	UINT32					Mode;
61	EFI_GRAPHICS_OUTPUT_MODE_INFORMATION	*Info;
62	UINTN					SizeOfInfo;
63	EFI_PHYSICAL_ADDRESS			FrameBufferBase;
64	UINTN					FrameBufferSize;
65} EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE;
66
67typedef
68EFI_STATUS
69(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE) (
70    IN  struct _EFI_GRAPHICS_OUTPUT		*This,
71    IN  UINT32					ModeNumber,
72    OUT UINTN					*SizeOfInfo,
73    OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION	**Info
74    );
75
76typedef
77EFI_STATUS
78(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE) (
79    IN  struct _EFI_GRAPHICS_OUTPUT	*This,
80    IN  UINT32				ModeNumber
81    );
82
83typedef struct {
84	UINT8	Blue;
85	UINT8	Green;
86	UINT8	Red;
87	UINT8	Reserved;
88} EFI_GRAPHICS_OUTPUT_BLT_PIXEL;
89
90typedef enum {
91	EfiBltVideoFill,
92	EfiBltVideoToBltBuffer,
93	EfiBltBufferToVideo,
94	EfiBltVideoToVideo,
95	EfiGraphcisOutputBltOperationMax,
96} EFI_GRAPHICS_OUTPUT_BLT_OPERATION;
97
98typedef
99EFI_STATUS
100(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT) (
101    IN struct _EFI_GRAPHICS_OUTPUT		*This,
102    IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL	*BltBuffer,
103    IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION	BltOperation,
104    IN UINTN					SourceX,
105    IN UINTN					SourceY,
106    IN UINTN					DestinationX,
107    IN UINTN					DestinationY,
108    IN UINTN					Width,
109    IN UINTN					Height,
110    IN UINTN					Delta
111    );
112
113typedef struct _EFI_GRAPHICS_OUTPUT {
114	EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE	QueryMode;
115	EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE	SetMode;
116	EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT	Blt;
117	EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE	*Mode;
118} EFI_GRAPHICS_OUTPUT;
119
120#endif /* _EFIGOP_H */
121