Source to iokit/IOKit/graphics/IOGraphicsTypes.h
/*
* Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* The contents of this file constitute Original Code as defined in and
* are subject to the Apple Public Source License Version 1.1 (the
* "License"). You may not use this file except in compliance with the
* License. Please obtain a copy of the License at
* http://www.apple.com/publicsource and read it before using this file.
*
* This Original Code and all software distributed under the License are
* distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
* License for the specific language governing rights and limitations
* under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
/*
* Copyright (c) 1998 Apple Computer, Inc. All rights reserved.
*
* HISTORY
*
*/
#ifndef _IOKIT_IOGRAPHICSTYPES_H
#define _IOKIT_IOGRAPHICSTYPES_H
#include <IOKit/IOTypes.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef SInt32 IOIndex;
typedef UInt32 IOSelect;
typedef UInt32 IOFixed1616;
typedef SInt32 IODisplayModeID;
enum {
kIOMaxPixelBits = 64
};
typedef char IOPixelEncoding[ kIOMaxPixelBits ];
// Common Apple pixel formats
#define IO1BitIndexedPixels "P"
#define IO2BitIndexedPixels "PP"
#define IO4BitIndexedPixels "PPPP"
#define IO8BitIndexedPixels "PPPPPPPP"
#define IO16BitDirectPixels "-RRRRRGGGGGBBBBB"
#define IO32BitDirectPixels "--------RRRRRRRRGGGGGGGGBBBBBBBB"
// other possible pixel formats
#define IOYUV422Pixels "Y4U2V2"
#define IO8BitOverlayPixels "O8"
// page flipping
#define IOPagedPixels "Page1"
#define IO_SampleTypeAlpha 'A'
#define IO_SampleTypeSkip '-'
// Info about a pixel format
enum {
kIOCLUTPixels = 0,
kIOFixedCLUTPixels = 1,
kIORGBDirectPixels = 2,
kIOMonoDirectPixels = 3,
kIOMonoInverseDirectPixels = 4,
};
struct IOPixelInformation {
IOByteCount bytesPerRow;
IOByteCount bytesPerPlane;
UInt32 bitsPerPixel;
UInt32 pixelType;
UInt32 componentCount;
UInt32 bitsPerComponent;
UInt32 componentMasks[ 8 * 2 ];
IOPixelEncoding pixelFormat;
UInt32 flags;
UInt32 activeWidth;
UInt32 activeHeight;
UInt32 reserved[ 2 ];
};
typedef struct IOPixelInformation IOPixelInformation;
// Info about a display mode
struct IODisplayModeInformation {
UInt32 nominalWidth;
UInt32 nominalHeight;
IOFixed1616 refreshRate;
IOIndex maxDepthIndex;
UInt32 flags;
UInt32 reserved[ 4 ];
};
typedef struct IODisplayModeInformation IODisplayModeInformation;
// flags
enum {
kDisplayModeXXX = 0x00010000,
kDisplayModeSafetyFlags = 0x000000ff
};
enum {
kDisplayModeValidFlag = 1,
kDisplayModeSafeFlag = 2,
kDisplayModeDefaultFlag = 4
};
// Framebuffer info
struct IOFramebufferInformation {
IOPhysicalAddress baseAddress;
UInt32 activeWidth;
UInt32 activeHeight;
IOByteCount bytesPerRow;
IOByteCount bytesPerPlane;
UInt32 bitsPerPixel;
UInt32 pixelType;
UInt32 flags;
UInt32 reserved[ 4 ];
};
typedef struct IOFramebufferInformation IOFramebufferInformation;
// flags
enum {
kFramebufferSupportsCopybackCache = 0x00010000,
kFramebufferSupportsWritethruCache = 0x00020000,
kFramebufferSupportsGammaCorrection = 0x00040000
};
// Aperture is an index into supported pixel formats for a mode & depth
typedef IOIndex IOPixelAperture;
enum {
kIOFBSystemAperture = 0
};
//// CLUTs
typedef UInt16 IOColorComponent;
struct IOColorEntry {
UInt16 index;
IOColorComponent red;
IOColorComponent green;
IOColorComponent blue;
};
typedef struct IOColorEntry IOColorEntry;
// options (masks)
enum {
kSetCLUTByValue = 0x00000001, // else at index
kSetCLUTImmediately = 0x00000002, // else at VBL
kSetCLUTWithLuminance = 0x00000004 // else RGB
};
//// Controller attributes
enum {
kIOPowerAttribute = 'powr',
kIOHardwareCursorAttribute = 'crsr'
};
//// Display mode timing information
struct IODetailedTimingInformation {
// from EDID defn
UInt32 pixelClock; // Hertz
UInt32 horizontalActive; // pixels
UInt32 horizontalBlanking; // pixels
UInt32 horizontalBorder; // pixels
UInt32 horizontalSyncOffset; // pixels
UInt32 horizontalSyncWidth; // pixels
UInt32 verticalActive; // lines
UInt32 verticalBlanking; // lines
UInt32 verticalBorder; // lines
UInt32 verticalSyncOffset; // lines
UInt32 verticalSyncWidth; // lines
};
typedef struct IODetailedTimingInformation IODetailedTimingInformation;
typedef UInt32 IOAppleTimingID;
struct IOTimingInformation {
IOAppleTimingID appleTimingID; // appleTimingXXX const
UInt32 flags;
IODetailedTimingInformation detailedInfo;
};
typedef struct IOTimingInformation IOTimingInformation;
enum {
// b0-7 from EDID flags
kIODetailedTimingValid = 0x80000000
};
//// Connections
enum {
kOrConnections = 0xffffffe,
kAndConnections = 0xffffffd
};
enum {
kConnectionEnable = 'enab',
kConnectionSyncEnable = 'sync',
kConnectionSyncFlags = 'sycf',
kConnectionSupportsAppleSense = 'asns',
kConnectionSupportsLLDDCSense = 'lddc',
kConnectionSupportsHLDDCSense = 'hddc'
};
// kConnectionSyncControl values
enum {
kIOHSyncDisable = 0x00000001,
kIOVSyncDisable = 0x00000002,
kIOCSyncDisable = 0x00000004,
kIONoSeparateSyncControl = 0x00000040,
kIOTriStateSyncs = 0x00000080,
kIOSyncOnBlue = 0x00000008,
kIOSyncOnGreen = 0x00000010,
kIOSyncOnRed = 0x00000020
};
#define IO_DISPLAY_CAN_FILL 0x00000040
#define IO_DISPLAY_CAN_BLIT 0x00000020
#define IO_24BPP_TRANSFER_TABLE_SIZE 256
#define IO_15BPP_TRANSFER_TABLE_SIZE 256
#define IO_8BPP_TRANSFER_TABLE_SIZE 256
#define IO_12BPP_TRANSFER_TABLE_SIZE 256
#define IO_2BPP_TRANSFER_TABLE_SIZE 256
#define STDFB_BM256_TO_BM38_MAP_SIZE 256
#define STDFB_BM38_TO_BM256_MAP_SIZE 256
#define STDFB_BM38_TO_256_WITH_LOGICAL_SIZE \
(STDFB_BM38_TO_BM256_MAP_SIZE + (256/sizeof(int)))
#define STDFB_4BPS_TO_5BPS_MAP_SIZE 16
#define STDFB_5BPS_TO_4BPS_MAP_SIZE 32
enum {
// connection types for IOServiceOpen
kIOFBServerConnectType = 0,
kIOFBSharedConnectType = 1,
kIOFBEngineControllerConnectType = 20,
kIOFBEngineConnectType = 21
};
struct IOGPoint {
SInt16 x;
SInt16 y;
};
typedef struct IOGPoint IOGPoint;
struct IOGSize {
SInt16 width;
SInt16 height;
};
typedef struct IOGSize IOGSize;
struct IOGBounds {
SInt16 minx;
SInt16 maxx;
SInt16 miny;
SInt16 maxy;
};
typedef struct IOGBounds IOGBounds;
#if !defined(__Point__) && !defined(BINTREE_H) && !defined(__MACTYPES__)
#define __Point__
typedef IOGPoint Point;
#endif
#if !defined(__Bounds__) && !defined(BINTREE_H) && !defined(__MACTYPES__)
#define __Bounds__
typedef IOGBounds Bounds;
#endif
// interrupt types
enum {
kIOFBVBLInterruptType = 'vbl ',
kIOFBHBLInterruptType = 'hbl ',
kIOFBFrameInterruptType = 'fram',
kIOFBConnectInterruptType = 'dci '
};
// property keys
#define kIODisplayEDIDKey "IODisplayEDID"
#define kIOFramebufferInfoKey "IOFramebufferInformation"
#define kIOFBWidthKey "IOFBWidth"
#define kIOFBHeightKey "IOFBHeight"
#define kIOFBRefreshRateKey "IOFBRefreshRate"
#define kIOFBFlagsKey "IOFBFlags"
#define kIOFBBytesPerRowKey "IOFBBytesPerRow"
#define kIOFBBytesPerPlaneKey "IOFBBytesPerPlane"
#define kIOFBBitsPerPixelKey "IOFBBitsPerPixel"
#define kIOFBComponentCountKey "IOFBComponentCount"
#define kIOFBBitsPerComponentKey "IOFBBitsPerComponent"
#ifdef __cplusplus
}
#endif
#endif /* ! _IOKIT_IOGRAPHICSTYPES_H */