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