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