vesabiosextensions.h

来自「EFI BIOS是Intel提出的下一代的BIOS标准。这里上传的Edk源代码是」· C头文件 代码 · 共 458 行 · 第 1/2 页

H
458
字号
  UINT32  OemVendorNamePtr;   // VbeFarPtr to Vendor Name String
  UINT32  OemProductNamePtr;  // VbeFarPtr to Product Name String
  UINT32  OemProductRevPtr;   // VbeFarPtr to Product Revision String
  UINT8   Reserved[222];      // Reserved for VBE implementation scratch area
  UINT8   OemData[256];       // Data area for OEM strings.  Pad to 512 byte block size
} VESA_BIOS_EXTENSIONS_INFORMATION_BLOCK;

//
// Super VGA Information Block VESASignature values
//
#define VESA_BIOS_EXTENSIONS_VESA_SIGNATURE EFI_SIGNATURE_32 ('V', 'E', 'S', 'A')
#define VESA_BIOS_EXTENSIONS_VBE2_SIGNATURE EFI_SIGNATURE_32 ('V', 'B', 'E', '2')

//
// Super VGA Information Block VESAVersion values
//
#define VESA_BIOS_EXTENSIONS_VERSION_1_2  0x0102
#define VESA_BIOS_EXTENSIONS_VERSION_2_0  0x0200
#define VESA_BIOS_EXTENSIONS_VERSION_3_0  0x0300

//
// Super VGA Information Block Capabilities field bit defintions
//
#define VESA_BIOS_EXTENSIONS_CAPABILITY_8_BIT_DAC 0x01  // 0: DAC width is fixed at 6 bits/color
// 1: DAC width switchable to 8 bits/color
//
#define VESA_BIOS_EXTENSIONS_CAPABILITY_NOT_VGA 0x02  // 0: Controller is VGA compatible
// 1: Controller is not VGA compatible
//
#define VESA_BIOS_EXTENSIONS_CAPABILITY_NOT_NORMAL_RAMDAC 0x04  // 0: Normal RAMDAC operation
// 1: Use blank bit in function 9 to program RAMDAC
//
#define VESA_BIOS_EXTENSIONS_CAPABILITY_STEREOSCOPIC  0x08  // 0: No hardware stereoscopic signal support
// 1: Hardware stereoscopic signal support
//
#define VESA_BIOS_EXTENSIONS_CAPABILITY_VESA_EVC  0x10  // 0: Stero signaling supported via external VESA stereo connector
// 1: Stero signaling supported via VESA EVC connector
//
// Super VGA mode number bite field definitions
//
#define VESA_BIOS_EXTENSIONS_MODE_NUMBER_VESA 0x0100  // 0: Not a VESA defined VBE mode
// 1: A VESA defined VBE mode
//
#define VESA_BIOS_EXTENSIONS_MODE_NUMBER_REFRESH_CONTROL_USER 0x0800  // 0: Use current BIOS default referesh rate
// 1: Use the user specified CRTC values for refresh rate
//
#define VESA_BIOS_EXTENSIONS_MODE_NUMBER_LINEAR_FRAME_BUFFER  0x4000  // 0: Use a banked/windowed frame buffer
// 1: Use a linear/flat frame buffer
//
#define VESA_BIOS_EXTENSIONS_MODE_NUMBER_PRESERVE_MEMORY  0x8000  // 0: Clear display memory
// 1: Preseve display memory
//
// Super VGA Information Block mode list terminator value
//
#define VESA_BIOS_EXTENSIONS_END_OF_MODE_LIST 0xffff

//
// Window Function
//
typedef
VOID
(*VESA_BIOS_EXTENSIONS_WINDOW_FUNCTION) (
  VOID
  );

//
// Super VGA Mode Information Block
//
typedef struct {
  //
  // Manadory fields for all VESA Bios Extensions revisions
  //
  UINT16                                ModeAttributes;   // Mode attributes
  UINT8                                 WinAAttributes;   // Window A attributes
  UINT8                                 WinBAttributes;   // Window B attributes
  UINT16                                WinGranularity;   // Window granularity in k
  UINT16                                WinSize;          // Window size in k
  UINT16                                WinASegment;      // Window A segment
  UINT16                                WinBSegment;      // Window B segment
  UINT32                                WindowFunction;   // Pointer to window function
  UINT16                                BytesPerScanLine; // Bytes per scanline
  //
  // Manadory fields for VESA Bios Extensions 1.2 and above
  //
  UINT16                                XResolution;          // Horizontal resolution
  UINT16                                YResolution;          // Vertical resolution
  UINT8                                 XCharSize;            // Character cell width
  UINT8                                 YCharSize;            // Character cell height
  UINT8                                 NumberOfPlanes;       // Number of memory planes
  UINT8                                 BitsPerPixel;         // Bits per pixel
  UINT8                                 NumberOfBanks;        // Number of CGA style banks
  UINT8                                 MemoryModel;          // Memory model type
  UINT8                                 BankSize;             // Size of CGA style banks
  UINT8                                 NumberOfImagePages;   // Number of images pages
  UINT8                                 Reserved1;            // Reserved
  UINT8                                 RedMaskSize;          // Size of direct color red mask
  UINT8                                 RedFieldPosition;     // Bit posn of lsb of red mask
  UINT8                                 GreenMaskSize;        // Size of direct color green mask
  UINT8                                 GreenFieldPosition;   // Bit posn of lsb of green mask
  UINT8                                 BlueMaskSize;         // Size of direct color blue mask
  UINT8                                 BlueFieldPosition;    // Bit posn of lsb of blue mask
  UINT8                                 RsvdMaskSize;         // Size of direct color res mask
  UINT8                                 RsvdFieldPosition;    // Bit posn of lsb of res mask
  UINT8                                 DirectColorModeInfo;  // Direct color mode attributes
  //
  // Manadory fields for VESA Bios Extensions 2.0 and above
  //
  UINT32                                PhysBasePtr;  // Physical Address for flat memory frame buffer
  UINT32                                Reserved2;    // Reserved
  UINT16                                Reserved3;    // Reserved
  //
  // Manadory fields for VESA Bios Extensions 3.0 and above
  //
  UINT16                                LinBytesPerScanLine;    // Bytes/scan line for linear modes
  UINT8                                 BnkNumberOfImagePages;  // Number of images for banked modes
  UINT8                                 LinNumberOfImagePages;  // Number of images for linear modes
  UINT8                                 LinRedMaskSize;         // Size of direct color red mask (linear mode)
  UINT8                                 LinRedFieldPosition;    // Bit posiiton of lsb of red mask (linear modes)
  UINT8                                 LinGreenMaskSize;       // Size of direct color green mask (linear mode)
  UINT8                                 LinGreenFieldPosition;  // Bit posiiton of lsb of green mask (linear modes)
  UINT8                                 LinBlueMaskSize;        // Size of direct color blue mask (linear mode)
  UINT8                                 LinBlueFieldPosition;   // Bit posiiton of lsb of blue mask (linear modes)
  UINT8                                 LinRsvdMaskSize;        // Size of direct color reserved mask (linear mode)
  UINT8                                 LinRsvdFieldPosition;   // Bit posiiton of lsb of reserved mask (linear modes)
  UINT32                                MaxPixelClock;          // Maximum pixel clock (in Hz) for graphics mode
  UINT8                                 Pad[190];               // Pad to 256 byte block size
} VESA_BIOS_EXTENSIONS_MODE_INFORMATION_BLOCK;

//
// Super VGA Mode Information Block ModeAttributes field bit defintions
//
#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_HARDWARE  0x0001  // 0: Mode not supported in handware
// 1: Mode supported in handware
//
#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_TTY 0x0004  // 0: TTY Output functions not supported by BIOS
// 1: TTY Output functions supported by BIOS
//
#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_COLOR 0x0008  // 0: Monochrome mode
// 1: Color mode
//
#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_GRAPHICS  0x0010  // 0: Text mode
// 1: Graphics mode
//
#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_NOT_VGA 0x0020  // 0: VGA compatible mode
// 1: Not a VGA compatible mode
//
#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_NOT_WINDOWED  0x0040  // 0: VGA compatible windowed memory mode
// 1: Not a VGA compatible windowed memory mode
//
#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER 0x0080  // 0: No linear fram buffer mode available
// 1: Linear frame buffer mode available
//
#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_DOUBLE_SCAN 0x0100  // 0: No double scan mode available
// 1: Double scan mode available
//
#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_INTERLACED  0x0200  // 0: No interlaced mode is available
// 1: Interlaced mode is available
//
#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_NO_TRIPPLE_BUFFER 0x0400  // 0: No hardware triple buffer mode support available
// 1: Hardware triple buffer mode support available
//
#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_STEREOSCOPIC  0x0800  // 0: No hardware steroscopic display support
// 1: Hardware steroscopic display support
//
#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_DUAL_DISPLAY  0x1000  // 0: No dual display start address support
// 1: Dual display start address support
//
// Super VGA Mode Information Block WinAAttribite/WinBAttributes field bit defintions
//
#define VESA_BIOS_EXTENSIONS_WINX_ATTRIBUTE_RELOCATABLE 0x01  // 0: Single non-relocatable window only
// 1: Relocatable window(s) are supported
//
#define VESA_BIOS_EXTENSIONS_WINX_ATTRIBUTE_READABLE  0x02  // 0: Window is not readable
// 1: Window is readable
//
#define VESA_BIOS_EXTENSIONS_WINX_ATTRIBUTE_WRITABLE  0x04  // 0: Window is not writable
// 1: Window is writable
//
// Super VGA Mode Information Block DirectColorMode field bit defintions
//
#define VESA_BIOS_EXTENSIONS_DIRECT_COLOR_MODE_PROG_COLOR_RAMP  0x01  // 0: Color ram is fixed
// 1: Color ramp is programmable
//
#define VESA_BIOS_EXTENSIONS_DIRECT_COLOR_MODE_RSVD_USABLE  0x02  // 0: Bits in Rsvd field are reserved
// 1: Bits in Rsdv field are usable
//
// Super VGA Memory Models
//
typedef enum {
  memPL = 3,  // Planar memory model
  memPK = 4,  // Packed pixel memory model
  memRGB= 6,  // Direct color RGB memory model
  memYUV= 7,  // Direct color YUV memory model
} VESA_BIOS_EXTENSIONS_MEMORY_MODELS;

//
// Super VGA CRTC Information Block
//
typedef struct {
  UINT16  HorizontalTotal;      // Horizontal total in pixels
  UINT16  HorizontalSyncStart;  // Horizontal sync start in pixels
  UINT16  HorizontalSyncEnd;    // Horizontal sync end in pixels
  UINT16  VericalTotal;         // Vertical total in pixels
  UINT16  VericalSyncStart;     // Vertical sync start in pixels
  UINT16  VericalSyncEnd;       // Vertical sync end in pixels
  UINT8   Flags;                // Flags (Interlaced/DoubleScan/etc).
  UINT32  PixelClock;           // Pixel clock in units of Hz
  UINT16  RefreshRate;          // Refresh rate in units of 0.01 Hz
  UINT8   Reserved[40];         // Pad
} VESA_BIOS_EXTENSIONS_CRTC_INFORMATION_BLOCK;

#define VESA_BIOS_EXTENSIONS_CRTC_FLAGS_DOUBLE_SCAN 0x01  // 0: Graphics mode is not souble scanned
// 1: Graphics mode is double scanned
//
#define VESA_BIOS_EXTENSIONS_CRTC_FLAGSINTERLACED 0x02  // 0: Graphics mode is not interlaced
// 1: Graphics mode is interlaced
//
#define VESA_BIOS_EXTENSIONS_CRTC_HORIZONTAL_SYNC_NEGATIVE  0x04  // 0: Horizontal sync polarity is positive(+)
// 0: Horizontal sync polarity is negative(-)
//
#define VESA_BIOS_EXTENSIONS_CRTC_VERITICAL_SYNC_NEGATIVE 0x08  // 0: Verical sync polarity is positive(+)
// 0: Verical sync polarity is negative(-)
//
// Turn off byte packing of data structures
//
#pragma pack()

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?