#ifndef _VBE_MODES_H
typedef struct _VbeModeInfoData {
int mode;
VbeModeInfoBlock *data;
VbeCRTCInfoBlock *block;
} VbeModeInfoData;
#define V_DEPTH_1 0x001
#define V_DEPTH_4 0x002
#define V_DEPTH_8 0x004
#define V_DEPTH_15 0x008
#define V_DEPTH_16 0x010
#define V_DEPTH_24_24 0x020
#define V_DEPTH_24_32 0x040
#define V_DEPTH_24 (V_DEPTH_24_24 | V_DEPTH_24_32)
#define V_DEPTH_30 0x080
#define V_DEPTH_32 0x100
#define VBE_MODE_SUPPORTED(m) (((m)->ModeAttributes & 0x01) != 0)
#define VBE_MODE_COLOR(m) (((m)->ModeAttributes & 0x08) != 0)
#define VBE_MODE_GRAPHICS(m) (((m)->ModeAttributes & 0x10) != 0)
#define VBE_MODE_VGA(m) (((m)->ModeAttributes & 0x40) == 0)
#define VBE_MODE_LINEAR(m) (((m)->ModeAttributes & 0x80) != 0 && \
((m)->PhysBasePtr != 0))
#define VBE_MODE_USABLE(m, f) (VBE_MODE_SUPPORTED(m) || \
(f & V_MODETYPE_BAD)) && \
VBE_MODE_GRAPHICS(m) && \
(VBE_MODE_VGA(m) || VBE_MODE_LINEAR(m))
#define V_MODETYPE_VBE 0x01
#define V_MODETYPE_VGA 0x02
#define V_MODETYPE_BAD 0x04
extern int VBEFindSupportedDepths(vbeInfoPtr pVbe, VbeInfoBlock *vbe,
int *flags24, int modeTypes);
extern DisplayModePtr VBEGetModePool(ScrnInfoPtr pScrn, vbeInfoPtr pVbe,
VbeInfoBlock *vbe, int modeTypes);
extern void VBESetModeNames(DisplayModePtr pMode);
extern void VBESetModeParameters(ScrnInfoPtr pScrn, vbeInfoPtr pVbe);
extern int VBEValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
char **modeNames, ClockRangePtr clockRanges,
int *linePitches, int minPitch, int maxPitch,
int pitchInc, int minHeight, int maxHeight,
int virtualX, int virtualY, int apertureSize,
LookupModeFlags strategy);
extern void VBEPrintModes(ScrnInfoPtr scrp);
#endif