/********************************************************************************************** * VESA_AFC.H * In term of VESA Advanced Feature Connector (VAFC) Software Interface Proposal * Version: 1.0P * Revision: 0.09 * Revision date: April 13, 1994 * This header file defines the interface that a VAFC-compliant graphics subsystem * must supply. It contains the VAFC standard preprocessor definition, type and * structure definitions, and API messages. **********************************************************************************************/ #ifndef _VESA_AFC #define _VESA_AFC /*** Status codes ***/ #define VAFCERR_NONE 0 /* No errors have occurred */ #define VAFCERR_GENERAL_FAILURE 1 /* General failure */ #define VAFCERR_NOSUPPORT_COLORSPACE 2 /* Color space not supported */ #define VAFCERR_NOSUPPORT_BUSWIDTH 3 /* Bus width configuration not supported */ #define VAFCERR_NOSUPPORT_ESCAPECODE 4 /* Escape code not supported */ #define VAFCERR_NOSUPPORT_CLOCKING 5 /* Clocking mode not supported */ #define VAFCERR_NOSUPPORT_DATAMODE 6 /* Does not support synch/asynch data mode */ #define VAFCERR_NOSUPPORT_OVERLAYKEY 7 /* Graphics subsystem does not support overlay keying -- overlay key ignored */ #define VAFCERR_NOSUPPORT_POSITION 8 /* Graphics subsystem does not support new video position */ #define VAFCERR_NOSUPPORT_EXTENDED_MODE 9 /* The graphics subsystem does not support the VAFC extended mode */ #define VAFCERR_INVALID_OVERLAY_KEY 10 /* The chosen overlay color key is invalid for the current graphics color space format */ #define VAFCERR_INVALID_POSITION 11 /* The chosen window position is invalid */ #define VAFCERR_INVALID_SIZE 12 /* The chosen window size is invalid */ #define VAFCERR_INCOMPLETE_LIST 13 /* The color space format list is incomplete */ #define VAFCERR_INVALID_STRUCTURE 14 /* The passed sturcture's size is invalid for the current graphics color space format */ #define VAFCERR_NOT_WORD_BOUNDARY 15 /* The video position/size is not on a word (16-bit) boundary */ #define VAFCERR_NOT_DWORD_BOUNDARY 16 /* The video position/size is not on a double word boundary */ #define VAFCERR_NOT_QWORD_BOUNDARY 17 /* The video position/size is not on a quad word boundary */ #define VAFCERR_NOT_DQWORD_BOUNDARY 18 /* The video position/size is not on a double-quad word boundary */ #define VAFCERR_MAX_ERRORS 19 /* Number of error codes, for string table manipulation */ /*** Vendor string length ***/ #define MAX_VENDOR_LEN 63 /* Maximum characters in the VESA vendor string */ /*** VAVI Devices ***/ #define VIDEO_INPUT 0x0001 /* Video input device -- UNUSED */ #define GRAPHIC_PORT 0x0002 /* Graphics device -- UNUSED */ #define VIDEO_COMPRESSOR 0x0004 /* Video compressor */ #define VIDEO_DECOMPRESSOR 0x0008 /* Video decompressor -- UNUSED */ #define VAFC_DEVICE 0x0010 /* VAFC device -- ALWAYS use the code !!! */ #define ALL_DEVICES 0xffff /* All VAVI devices -- UNUSED */ /*** Device Capabilities ***/ #define VAFC_SUPPORTS_OVERLAY_KEY 0x00000001 /* Device supports overlay color keying */ #define VAFC_SUPPORTS_OVERLAY_MASKS 0x00000002 /* Device supports overlay masks */ #define VAFC_SUPPORTS_EXTENDED_QUERY 0x00000004 /* Device supports extended mode GET call */ #define VAFC_SUPPORTS_EXTENDED_SETUP 0x00000008 /* Device supports extended mode SET call */ #define VAFC_SUPPORTS_POSITIONING 0x00000010 /* Device supports window positioning */ #define VAFC_SUPPORTS_OEM_API 0x00000020 /* Device has an OEM-specific API */ /*** Alignment flags * If none of the following is specified, it should be assumed that the VAFC driver and * device support BYTE alignment. ***/ #define VAFC_SUPPORTS_WORD_ALIGN 0x00000040 /* Device supports word (16-bit) boundary alignment */ #define VAFC_SUPPORTS_DWORD_ALIGN 0x00000080 /* Device supports double word boundary alignment */ #define VAFC_SUPPORTS_QWORD_ALIGN 0x00000100 /* Device supports quad word boundary alignment */ #define VAFC_SUPPORTS_DQWORD_ALIGN 0x00000200 /* Device supports double-quad word boundary alignment */ /*** The following device capabilities mask is used to determine the number of color space * formats the device supports. This can be used when using the message * DRV_VAFC_QUERY_COLOR_SPACE. ***/ #define VAFC_COLOR_SPACES_MASK 0xff000000 /* Definition to mask the number of color spaces */ /*** Vendor information block ***/ typedef struct tagVESADEVICECAPS { unsigned long dwSize; /* Size of this structure */ unsigned long dwStructRevID; /* Structure revison ID = 0x0100 */ char szVendor[MAX_VENDOR_LEN+1]; /* Vendor string -- assigned by individual companies */ unsigned long dwModelID; /* Vendor specific Device ID */ unsigned long dwRevID; /* Vendor specific revison ID */ unsigned short wDeviceType; /* VESA registered device type */ unsigned long dwDeviceCaps; /* Device capabilities field */ unsigned long dwReserved1; /* Unused by VAFC, reserved for VMC usage */ unsigned short wReserved2; /* Unused by VAFC, reserved for VMC usage */ } VESA_DEVICECAPS; typedef VESA_DEVICECAPS _far *LPVESA_DEVICECAPS; /*** Graphics information block ***/ typedef struct tagGraphicsInfoBlock { unsigned long dwSize; /* Size of the structure */ unsigned long dwColorSpace; /* Graphics buffer color space format */ unsigned short wActivePixelWidth; /* Number of active pixels on the screen */ unsigned short wActivePixelHeight; /* Number of active lines on the screen */ unsigned short wTopBorderHeight; /* Number of lines in top border */ unsigned short wBottomBorderHeight; /* Number of lines in bottom border */ unsigned short wLeftBorderHeight; /* Number of lines in the left border */ unsigned short wRightBorderHeight; /* Number of lines in the right border */ unsigned short wHorzSyncPoparity; /* Graphics horizontal sync polarity */ unsigned short wVertSyncPolarity; /* Graphics vertical sync polarity */ unsigned short fInterlaced; /* Interlaced status -- TRUE/FALSE flag */ } VAFCGRAPHICS_INFO; typedef VAFCGRAPHICS_INFO _far *LPVAFCGRAPHICS_INFO; /*** Extended mode information block ***/ typedef struct tagExtendedModeInfoBlock { unsigned long dwSize; /* Size of the structure */ unsigned short wFIFOSize; /* FIFO size, in bytes */ unsigned short wFullLevel; /* Full Level of FIFO, in bytes */ } VAFCEXTENDED_INFO; typedef VAFCEXTENDED_INFO _far *LPVAFCEXTENDED_INFO; /*** Setup controls ***/ /*** VAFCESCAPE * allows vendors who control both side of the interface to define VENDOR SPECIFIC * parameters. If a parameter ANDed with VAFCESCAPE returns a none-zero result, the * option is VENDOR SPECIFIC. If the VAFC driver does not support VAFCESCAPE, it should * return VAFC_NOSUPPORT_ESCAPECODE. * Vendor specific parameters have to be handled on a vendor-by-vendor basis. To do this, * it is assumed that the application and/or driver provider will get the necessory VAFC * vendor-specific interface documents and APIs from the vendor itself. ***/ #define VAFCESCAPE 0x80000000 /* User defined */ /*** The following define the color space formats for data crossing the VAFC connector. * The default format is VAFCRGB_8_INDEXED. These same definitions are used by the VAFC * driver to specify the color space format of the graphics buffer in the current graphics * mode. ***/ #define VAFCRGB_8_INDEXED 0x00000001 /* Standard 8 bits indexed color */ #define VAFCRGB_15A 0x00000002 /* 16 bits aRGB, organized as 1:5:5:5 */ #define VAFCRGB_16 0x00000004 /* 16 bits RGB, organized as 5:6:5 */ #define VAFCRGB_24 0x00000008 /* 24 bits RGB, organized as 8:8:8 */ #define VAFCRGB_32A 0x00000010 /* 32 bits aRGB, organized as 8:8:8:8 */ #define VAFCYUV_422 0x00000020 /* Packed YUV, organized as 4:2:2 */ #define VAFCYUV_444 0x00000040 /* Packed YUV, organized as 4:4:4 */ /*** The following extra color space definitions are provided as base escape code color * space. Notice, as more color space are defined that they should be ORed with the * VAFCESCAPE code. ***/ #define VAFCRGB_8 (VAFCESCAPE | 0x00000001) /* 8 bits RGB, organized as 3:3:2 */ #define VAFCYUV_411 (VAFCESCAPE | 0x00000002) /* Packed YUV, organized as 4:1:1 */ #define VAFCRGB_15 (VAFCESCAPE | 0x00000004) /* 16 bits RGB, organized as x:5:5:5 */ /*** The following define the available bus transfer widths avaiable across the VAFC * connector. The directions of the transfer are explicitly described in the definitions. * The default or power up state of the H/W is a tri-stated VAFCBUS_8_OUT. ***/ #define VAFCBUS_8_OUT 0x00000001 /* Standard 8-bit data out (from DAC) */ #define VAFCBUS_8_IN 0x00000002 /* Standard 8-bit data out (to DAC) */ #define VAFCBUS_16_OUT 0x00000004 /* 16-bit data out (from DAC) */ #define VAFCBUS_16_IN 0x00000008 /* 16-bit data out (to DAC) */ #define VAFCBUS_32_OUT 0x00000010 /* 32-bit data out (from DAC) */ #define VAFCBUS_32_IN 0x00000020 /* 32-bit data out (to DAC) */ /*** The following define the available clocking modes across the VESA_VAFC bus. The default * power up state of the connector is 1x clocking mode, VAFCCLOCK_1X. ***/ #define VAFCCLOCK_1X 0x00000001 /* 1X clock mode -- dot clock provided */ #define VAFCCLOCK_2X 0x00000002 /* 2X clock mode -- dot clock / 2 provided */ #define VAFCCLOCK_4X 0x00000004 /* 4X clock mode -- dot clock / 4 provided; for 1280 mode support */ /*** The following define the available data mode across the VAFC connector ***/ #define VAFCDATA_SYNCHRONOUS 0x00000001 /* Synchronous data mode */ #define VAFCDATA_ASYNCHRONOUS 0x00000002 /* Asynchronous data mode */ /*** Preferred setup structure ***/ typedef struct tagPreferredParameters { unsigned long dwSize; /* Size of the structure */ unsigned long dwColorSpace; /* Color space format */ unsigned short dwBusWidth; /* Bus width */ unsigned short dwClockingMode; /* Clocking mode */ unsigned short dwDataMode; /* Data mode */ } VAFCPREFERRED_PARAMETERS; typedef VAFCPREFERRED_PARAMETERS _far *LPVAFCPREFERRED_PARAMETERS; /*** Overlay controls ***/ /*** The values for the four bColorValueN members of the VAFCOVERLAY_CONTROLS structure * depends on the color space format of the graphics subsystem: * * If the graphics is using an 8-bit indexed color space, then the lower eight bits of * bColorValue0 is the overlay color index. The rest of the variable should be masked * (value & 0xffffff00). * * If the graphics is in a true-color modes, bColorValue0 is the red value, bColorValue1 * is the green value and bColorValue2 is the blue value. If the video color space format * includes alpha information, then bColorValue3 is the alpha value. * * For VAFC devices that support both overlay color keying and overlay masking, the * bColorValueN member can be used to mask each appropriate component. * * NOTE: If the graphics sussystem does not support overlay color keying (it overlay based on * image size and position) then the VAFC driver should return VAFCERR_NOSUPPORT_OVERLAYKEY * to signify that the overlay key is ignored. ***/ typedef struct tagVAFCOverlayControls { unsigned long dwSize; /* Size of the structure */ unsigned char bColorValue0; /* Meaning depends on graphics color space format */ unsigned char bColorValue1; /* Meaning depends on graphics color space format */ unsigned char bColorValue2; /* Meaning depends on graphics color space format */ unsigned char bColorValue3; /* Meaning depends on graphics color space format */ unsigned char bMaskValue0; /* Meaning depends on graphics color space format */ unsigned char bMaskValue1; /* Meaning depends on graphics color space format */ unsigned char bMaskValue2; /* Meaning depends on graphics color space format */ unsigned char bMaskValue3; /* Meaning depends on graphics color space format */ } VAFCOVERLAY_CONTROLS; typedef VAFCOVERLAY_CONTROLS _far *LPVAFCOVERLAY_CONTROLS; /*** Interface Messages ***/ #define DRV_VAFC_GET_DEVCAPS DRV_RESERVED #define DRV_VAFC_GET_COLOR_SPACE DRV_RESERVED + 1 #define DRV_VAFC_SET_COLOR_SPACE DRV_RESERVED + 2 #define DRV_VAFC_GET_BUS_WIDTH DRV_RESERVED + 3 #define DRV_VAFC_SET_BUS_WIDTH DRV_RESERVED + 4 #define DRV_VAFC_GET_DATA_MODE DRV_RESERVED + 5 #define DRV_VAFC_SET_DATA_MODE DRV_RESERVED + 6 #define DRV_VAFC_GET_CLOCK_MODE DRV_RESERVED + 7 #define DRV_VAFC_SET_CLOCK_MODE DRV_RESERVED + 8 #define DRV_VAFC_GET_OVERLAY_COLOR_INFO DRV_RESERVED + 9 #define DRV_VAFC_SET_OVERLAY_COLOR_INFO DRV_RESERVED + 10 #define DRV_VAFC_GET_GRAPHICS_INFO DRV_RESERVED + 11 #define DRV_VAFC_GET_WINDOW_RECT DRV_RESERVED + 12 #define DRV_VAFC_SET_WINDOW_RECT DRV_RESERVED + 13 #define DRV_VAFC_QUERY_COLOR_SPACES DRV_RESERVED + 14 #define DRV_VAFC_GET_EXTENDED_SETUP DRV_RESERVED + 15 #define DRV_VAFC_SET_EXTENDED_SETUP DRV_RESERVED + 16 #define DRV_VAFC_GET_PREFERRED_SETUP DRV_RESERVED + 17 #define DRV_VAFC_GET_ERROR DRV_RESERVED + 18 #define DRV_VAFC_VENDOR_START DRV_RESERVED + 0x1000 #define DRV_VAFC_VENDOR_END DRV_RESERVED + 0x1300 #endif //*** End of standard VESA_AFC definition