VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/OvmfPkg/Bhyve/BhyveRfbDxe/Gop.h@ 105668

Last change on this file since 105668 was 99404, checked in by vboxsync, 2 years ago

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, bugref:4643

  • Property svn:eol-style set to native
File size: 3.8 KB
Line 
1/*++ @file
2
3Copyright (c) 2020, Rebecca Cran <rebecca@bsdio.com>
4Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
5Portions copyright (c) 2010,Apple Inc. All rights reserved.<BR>
6
7SPDX-License-Identifier: BSD-2-Clause-Patent
8
9**/
10
11#ifndef _GOP_H_
12#define _GOP_H_
13
14#include <Uefi.h>
15#include <Protocol/GraphicsOutput.h>
16#include <Protocol/PciIo.h>
17#include <Protocol/DriverSupportedEfiVersion.h>
18#include <Protocol/DevicePath.h>
19
20#include <Guid/EventGroup.h>
21
22#include <Library/DebugLib.h>
23#include <Library/BaseLib.h>
24#include <Library/PcdLib.h>
25#include <Library/UefiDriverEntryPoint.h>
26#include <Library/UefiLib.h>
27#include <Library/BaseMemoryLib.h>
28#include <Library/MemoryAllocationLib.h>
29#include <Library/UefiBootServicesTableLib.h>
30#include <Library/DevicePathLib.h>
31
32#include <IndustryStandard/Pci.h>
33
34#define GRAPHICS_OUTPUT_INVALID_MODE_NUMBER 0xffff
35
36typedef struct {
37 UINT32 HorizontalResolution;
38 UINT32 VerticalResolution;
39 UINT32 ColorDepth;
40 UINT32 RefreshRate;
41} GOP_MODE_DATA;
42
43#define PIXEL_RED_SHIFT 0
44#define PIXEL_GREEN_SHIFT 3
45#define PIXEL_BLUE_SHIFT 6
46
47#define PIXEL_RED_MASK (BIT7 | BIT6 | BIT5)
48#define PIXEL_GREEN_MASK (BIT4 | BIT3 | BIT2)
49#define PIXEL_BLUE_MASK (BIT1 | BIT0)
50
51#define PIXEL_TO_COLOR_BYTE(pixel, mask, shift) ((UINT8) ((pixel & mask) << shift))
52#define PIXEL_TO_RED_BYTE(pixel) PIXEL_TO_COLOR_BYTE(pixel, PIXEL_RED_MASK, PIXEL_RED_SHIFT)
53#define PIXEL_TO_GREEN_BYTE(pixel) PIXEL_TO_COLOR_BYTE(pixel, PIXEL_GREEN_MASK, PIXEL_GREEN_SHIFT)
54#define PIXEL_TO_BLUE_BYTE(pixel) PIXEL_TO_COLOR_BYTE(pixel, PIXEL_BLUE_MASK, PIXEL_BLUE_SHIFT)
55
56#define RGB_BYTES_TO_PIXEL(Red, Green, Blue) \
57 (UINT8) ( (((Red) >> PIXEL_RED_SHIFT) & PIXEL_RED_MASK) | \
58 (((Green) >> PIXEL_GREEN_SHIFT) & PIXEL_GREEN_MASK) | \
59 (((Blue) >> PIXEL_BLUE_SHIFT) & PIXEL_BLUE_MASK) )
60
61#define PIXEL24_RED_MASK 0x00ff0000
62#define PIXEL24_GREEN_MASK 0x0000ff00
63#define PIXEL24_BLUE_MASK 0x000000ff
64
65extern EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding;
66extern EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName;
67
68#define EMU_UGA_CLASS_NAME L"EmuGopWindow"
69
70#define GOP_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('G', 'o', 'p', 'N')
71typedef struct {
72 UINT64 Signature;
73
74 EFI_HANDLE Handle;
75 EFI_PCI_IO_PROTOCOL *PciIo;
76 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;
77 EFI_DEVICE_PATH_PROTOCOL *GopDevicePath;
78
79 EFI_UNICODE_STRING_TABLE *ControllerNameTable;
80
81 //
82 // GOP Private Data for QueryMode ()
83 //
84 GOP_MODE_DATA *ModeData;
85
86 UINT64 FbAddr;
87 UINT32 FbSize;
88} GOP_PRIVATE_DATA;
89
90#define GOP_PRIVATE_DATA_FROM_THIS(a) \
91 CR(a, GOP_PRIVATE_DATA, GraphicsOutput, GOP_PRIVATE_DATA_SIGNATURE)
92
93typedef struct {
94 UINT32 FbSize;
95 UINT16 Width;
96 UINT16 Height;
97 UINT16 Depth;
98 UINT16 RefreshRate;
99} BHYVE_FBUF_MEMREGS;
100
101//
102// Global Protocol Variables
103//
104extern EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding;
105extern EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName;
106extern EFI_COMPONENT_NAME2_PROTOCOL gEmuGopComponentName2;
107
108//
109// Gop Hardware abstraction internal worker functions
110//
111EFI_STATUS
112EmuGopConstructor (
113 IN GOP_PRIVATE_DATA *Private
114 );
115
116EFI_STATUS
117EmuGopDestructor (
118 IN GOP_PRIVATE_DATA *Private
119 );
120
121VOID
122EFIAPI
123ShutdownGopEvent (
124 IN EFI_EVENT Event,
125 IN VOID *Context
126 );
127
128VOID
129BhyveSetGraphicsMode (
130 GOP_PRIVATE_DATA *Private,
131 UINT16 Width,
132 UINT16 Height,
133 UINT16 Depth
134 );
135
136VOID
137BhyveGetMemregs (
138 GOP_PRIVATE_DATA *Private,
139 BHYVE_FBUF_MEMREGS *Memregs
140 );
141
142VOID
143InstallVbeShim (
144 IN CONST CHAR16 *CardName,
145 IN EFI_PHYSICAL_ADDRESS FrameBufferBase
146 );
147
148#endif /* _GOP_H_ */
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette