Annotation of driverkit/libDriver/ppc/IOMacOSVideo.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
                      7:  * Reserved.  This file contains Original Code and/or Modifications of
                      8:  * Original Code as defined in and that are subject to the Apple Public
                      9:  * Source License Version 1.1 (the "License").  You may not use this file
                     10:  * except in compliance with the License.  Please obtain a copy of the
                     11:  * License at http://www.apple.com/publicsource and read it before using
                     12:  * this file.
                     13:  * 
                     14:  * The Original Code and all software distributed under the License are
                     15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT.  Please see the
                     19:  * License for the specific language governing rights and limitations
                     20:  * under the License.
                     21:  * 
                     22:  * @APPLE_LICENSE_HEADER_END@
                     23:  */
                     24: /*
                     25:  * Copyright (c) 1997 Apple Computer, Inc.
                     26:  *
                     27:  *
                     28:  * HISTORY
                     29:  *
                     30:  * Simon Douglas  22 Oct 97
                     31:  * - first checked in.
                     32:  */
                     33: 
                     34: 
                     35: /*
                     36:     File:       Video.h
                     37:  
                     38:     Contains:   Video Driver Interfaces.
                     39:  
                     40:     Version:    System 7.5
                     41:  
                     42:     DRI:        Fernando Urbina
                     43:  
                     44:     Copyright:  � 1984-1996 by Apple Computer, Inc.
                     45:                 All rights reserved.
                     46:  
                     47:     Warning:    *** APPLE INTERNAL USE ONLY ***
                     48:                 This file may contain unreleased API's
                     49:  
                     50:     BuildInfo:  Built by:           Simon Douglas
                     51:                 With Interfacer:    2.0d13   (PowerPC native)
                     52:                 From:               Video.i
                     53:                     Revision:       53
                     54:                     Dated:          12/13/96
                     55:                     Last change by: IH
                     56:                     Last comment:   Define a bit for built-in display modes.
                     57:  
                     58:     Bugs:       Report bugs to Radar component �System Interfaces�, �Latest�
                     59:                 List the version information (from above) in the Problem Description.
                     60:  
                     61: */
                     62: #ifndef __IOMACOSVIDEO__
                     63: #define __IOMACOSVIDEO__
                     64: 
                     65: 
                     66: #ifdef __cplusplus
                     67: extern "C" {
                     68: #endif
                     69: 
                     70: #pragma import on
                     71: 
                     72: #pragma options align=mac68k
                     73: 
                     74: 
                     75: enum {
                     76:     mBaseOffset                 = 1,                            /*Id of mBaseOffset.*/
                     77:     mRowBytes                   = 2,                            /*Video sResource parameter Id's */
                     78:     mBounds                     = 3,                            /*Video sResource parameter Id's */
                     79:     mVersion                    = 4,                            /*Video sResource parameter Id's */
                     80:     mHRes                       = 5,                            /*Video sResource parameter Id's */
                     81:     mVRes                       = 6,                            /*Video sResource parameter Id's */
                     82:     mPixelType                  = 7,                            /*Video sResource parameter Id's */
                     83:     mPixelSize                  = 8,                            /*Video sResource parameter Id's */
                     84:     mCmpCount                   = 9,                            /*Video sResource parameter Id's */
                     85:     mCmpSize                    = 10,                           /*Video sResource parameter Id's */
                     86:     mPlaneBytes                 = 11,                           /*Video sResource parameter Id's */
                     87:     mVertRefRate                = 14,                           /*Video sResource parameter Id's */
                     88:     mVidParams                  = 1,                            /*Video parameter block id.*/
                     89:     mTable                      = 2,                            /*Offset to the table.*/
                     90:     mPageCnt                    = 3,                            /*Number of pages*/
                     91:     mDevType                    = 4,                            /*Device Type*/
                     92:     oneBitMode                  = 128,                          /*Id of OneBitMode Parameter list.*/
                     93:     twoBitMode                  = 129,                          /*Id of TwoBitMode Parameter list.*/
                     94:     fourBitMode                 = 130,                          /*Id of FourBitMode Parameter list.*/
                     95:     eightBitMode                = 131                           /*Id of EightBitMode Parameter list.*/
                     96: };
                     97: 
                     98: 
                     99: enum {
                    100:     sixteenBitMode              = 132,                          /*Id of SixteenBitMode Parameter list.*/
                    101:     thirtyTwoBitMode            = 133,                          /*Id of ThirtyTwoBitMode Parameter list.*/
                    102:     firstVidMode                = 128,                          /*The new, better way to do the above. */
                    103:     secondVidMode               = 129,                          /* QuickDraw only supports six video */
                    104:     thirdVidMode                = 130,                          /* at this time.      */
                    105:     fourthVidMode               = 131,
                    106:     fifthVidMode                = 132,
                    107:     sixthVidMode                = 133,
                    108:     spGammaDir                  = 64,
                    109:     spVidNamesDir               = 65
                    110: };
                    111: 
                    112: /* csTimingFormat values in VDTimingInfo */
                    113: /* look in the declaration rom for timing info */
                    114: 
                    115: enum {
                    116:     kDeclROMtables              = 0x6465636c //'decl'
                    117: };
                    118: 
                    119: /* Size of a block of EDID (Extended Display Identification Data) */
                    120: 
                    121: enum {
                    122:     kDDCBlockSize               = 128
                    123: };
                    124: 
                    125: /* ddcBlockType constants*/
                    126: 
                    127: enum {
                    128:     kDDCBlockTypeEDID           = 0                             /* EDID block type. */
                    129: };
                    130: 
                    131: /* ddcFlags constants*/
                    132: 
                    133: enum {
                    134:     kDDCForceReadBit            = 0,                            /* Force a new read of the EDID. */
                    135:     kDDCForceReadMask           = (1 << kDDCForceReadBit)       /* Mask for kddcForceReadBit. */
                    136: };
                    137: 
                    138: /*
                    139:  Timing mode constants for Display Manager MultiMode support
                    140:     Corresponding   .h equates are in Video.h
                    141:                     .a equates are in Video.a
                    142:                     .r equates are in DepVideoEqu.r
                    143:     
                    144:     The second enum is the old names (for compatibility).
                    145:     The first enum is the new names.
                    146: */
                    147: 
                    148: enum {
                    149:     timingInvalid               = 0,                            /*  Unknown timing� force user to confirm. */
                    150:     timingInvalid_SM_T24        = 8,                            /*  Work around bug in SM Thunder24 card.*/
                    151:     timingApple_FixedRateLCD    = 42,                           /*  Lump all fixed-rate LCDs into one category.*/
                    152:     timingApple_512x384_60hz    = 130,                          /*  512x384  (60 Hz) Rubik timing. */
                    153:     timingApple_560x384_60hz    = 135,                          /*  560x384  (60 Hz) Rubik-560 timing. */
                    154:     timingApple_640x480_67hz    = 140,                          /*  640x480  (67 Hz) HR timing. */
                    155:     timingApple_640x400_67hz    = 145,                          /*  640x400  (67 Hz) HR-400 timing. */
                    156:     timingVESA_640x480_60hz     = 150,                          /*  640x480  (60 Hz) VGA timing. */
                    157:     timingVESA_640x480_72hz     = 152,                          /*  640x480  (72 Hz) VGA timing. */
                    158:     timingVESA_640x480_75hz     = 154,                          /*  640x480  (75 Hz) VGA timing. */
                    159:     timingVESA_640x480_85hz     = 158,                          /*  640x480  (85 Hz) VGA timing. */
                    160:     timingApple_640x870_75hz    = 160,                          /*  640x870  (75 Hz) FPD timing.*/
                    161:     timingApple_640x818_75hz    = 165,                          /*  640x818  (75 Hz) FPD-818 timing.*/
                    162:     timingApple_832x624_75hz    = 170,                          /*  832x624  (75 Hz) GoldFish timing.*/
                    163:     timingVESA_800x600_56hz     = 180,                          /*  800x600  (56 Hz) SVGA timing. */
                    164:     timingVESA_800x600_60hz     = 182,                          /*  800x600  (60 Hz) SVGA timing. */
                    165:     timingVESA_800x600_72hz     = 184,                          /*  800x600  (72 Hz) SVGA timing. */
                    166:     timingVESA_800x600_75hz     = 186,                          /*  800x600  (75 Hz) SVGA timing. */
                    167:     timingVESA_800x600_85hz     = 188,                          /*  800x600  (85 Hz) SVGA timing. */
                    168:     timingVESA_1024x768_60hz    = 190,                          /* 1024x768  (60 Hz) VESA 1K-60Hz timing. */
                    169:     timingVESA_1024x768_70hz    = 200,                          /* 1024x768  (70 Hz) VESA 1K-70Hz timing. */
                    170:     timingVESA_1024x768_75hz    = 204,                          /* 1024x768  (75 Hz) VESA 1K-75Hz timing (very similar to timingApple_1024x768_75hz). */
                    171:     timingVESA_1024x768_85hz    = 208,                          /* 1024x768  (85 Hz) VESA timing. */
                    172:     timingApple_1024x768_75hz   = 210,                          /* 1024x768  (75 Hz) Apple 19" RGB. */
                    173:     timingApple_1152x870_75hz   = 220,                          /* 1152x870  (75 Hz) Apple 21" RGB. */
                    174:     timingAppleNTSC_ST          = 230,                          /*  512x384  (60 Hz, interlaced, non-convolved). */
                    175:     timingAppleNTSC_FF          = 232,                          /*  640x480  (60 Hz, interlaced, non-convolved). */
                    176:     timingAppleNTSC_STconv      = 234,                          /*  512x384  (60 Hz, interlaced, convolved). */
                    177:     timingAppleNTSC_FFconv      = 236,                          /*  640x480  (60 Hz, interlaced, convolved). */
                    178:     timingApplePAL_ST           = 238,                          /*  640x480  (50 Hz, interlaced, non-convolved). */
                    179:     timingApplePAL_FF           = 240,                          /*  768x576  (50 Hz, interlaced, non-convolved). */
                    180:     timingApplePAL_STconv       = 242,                          /*  640x480  (50 Hz, interlaced, convolved). */
                    181:     timingApplePAL_FFconv       = 244,                          /*  768x576  (50 Hz, interlaced, convolved). */
                    182:     timingVESA_1280x960_75hz    = 250,                          /* 1280x960  (75 Hz) */
                    183:     timingVESA_1280x1024_60hz   = 260,                          /* 1280x1024 (60 Hz) */
                    184:     timingVESA_1280x1024_75hz   = 262,                          /* 1280x1024 (75 Hz) */
                    185:     timingVESA_1280x1024_85hz   = 268,                          /* 1280x1024 (85 Hz) */
                    186:     timingVESA_1600x1200_60hz   = 280,                          /* 1600x1200 (60 Hz) VESA proposed timing. */
                    187:     timingVESA_1600x1200_65hz   = 282,                          /* 1600x1200 (65 Hz) VESA proposed timing. */
                    188:     timingVESA_1600x1200_70hz   = 284,                          /* 1600x1200 (70 Hz) VESA proposed timing. */
                    189:     timingVESA_1600x1200_75hz   = 286,                          /* 1600x1200 (75 Hz) VESA proposed timing. */
                    190:     timingVESA_1600x1200_80hz   = 288,                          /* 1600x1200 (80 Hz) VESA proposed timing (pixel clock is 216 Mhz dot clock). */
                    191:     timingSMPTE240M_60hz        = 400,                          /* 60Hz V, 33.75KHz H, interlaced timing, 16:9 aspect, typical resolution of 1920x1035. */
                    192:     timingFilmRate_48hz         = 410                           /* 48Hz V, 25.20KHz H, non-interlaced timing, typical resolution of 640x480. */
                    193: };
                    194: 
                    195: 
                    196: enum {
                    197:     timingApple12               = timingApple_512x384_60hz,
                    198:     timingApple12x              = timingApple_560x384_60hz,
                    199:     timingApple13               = timingApple_640x480_67hz,
                    200:     timingApple13x              = timingApple_640x400_67hz,
                    201:     timingAppleVGA              = timingVESA_640x480_60hz,
                    202:     timingApple15               = timingApple_640x870_75hz,
                    203:     timingApple15x              = timingApple_640x818_75hz,
                    204:     timingApple16               = timingApple_832x624_75hz,
                    205:     timingAppleSVGA             = timingVESA_800x600_56hz,
                    206:     timingApple1Ka              = timingVESA_1024x768_60hz,
                    207:     timingApple1Kb              = timingVESA_1024x768_70hz,
                    208:     timingApple19               = timingApple_1024x768_75hz,
                    209:     timingApple21               = timingApple_1152x870_75hz
                    210: };
                    211: 
                    212: /* csConnectFlags values in VDDisplayConnectInfo */
                    213: 
                    214: enum {
                    215:     kAllModesValid              = 0,                            /* All modes not trimmed by primary init are good close enough to try */
                    216:     kAllModesSafe               = 1,                            /* All modes not trimmed by primary init are know to be safe */
                    217:     kReportsTagging             = 2,                            /* Can detect tagged displays (to identify smart monitors) */
                    218:     kHasDirectConnection        = 3,                            /* True implies that driver can talk directly to device (e.g. serial data link via sense lines) */
                    219:     kIsMonoDev                  = 4,                            /* Says whether there�s an RGB (0) or Monochrome (1) connection. */
                    220:     kUncertainConnection        = 5,                            /* There may not be a display (no sense lines?). */
                    221:     kTaggingInfoNonStandard     = 6,                            /* Set when csConnectTaggedType/csConnectTaggedData are non-standard (i.e., not the Apple CRT sense codes). */
                    222:     kReportsDDCConnection       = 7,                            /* Card can do ddc (set kHasDirectConnect && kHasDDCConnect if you actually found a ddc display). */
                    223:     kHasDDCConnection           = 8,                            /* Card has ddc connect now. */
                    224:     kConnectionInactive         = 9,                            /* Set when the connection is NOT currently active (generally used in a multiconnection environment). */
                    225:     kDependentConnection        = 10,                           /* Set when some ascpect of THIS connection depends on another (will generally be set in a kModeSimulscan environment). */
                    226:     kBuiltInConnection          = 11                            /* Set when connection is KNOWN to be built-in (this is not the same as kHasDirectConnection). */
                    227: };
                    228: 
                    229: /* csDisplayType values in VDDisplayConnectInfo */
                    230: 
                    231: enum {
                    232:     kUnknownConnect             = 1,                            /* Not sure how we�ll use this, but seems like a good idea. */
                    233:     kPanelConnect               = 2,                            /* For use with fixed-in-place LCD panels. */
                    234:     kPanelTFTConnect            = 2,                            /* Alias for kPanelConnect */
                    235:     kFixedModeCRTConnect        = 3,                            /*  For use with fixed-mode (i.e., very limited range) displays. */
                    236:     kMultiModeCRT1Connect       = 4,                            /* 320x200 maybe, 12" maybe, 13" (default), 16" certain, 19" maybe, 21" maybe */
                    237:     kMultiModeCRT2Connect       = 5,                            /* 320x200 maybe, 12" maybe, 13" certain, 16" (default), 19" certain, 21" maybe */
                    238:     kMultiModeCRT3Connect       = 6,                            /* 320x200 maybe, 12" maybe, 13" certain, 16" certain, 19" default, 21" certain */
                    239:     kMultiModeCRT4Connect       = 7,                            /* Expansion to large multi mode (not yet used) */
                    240:     kModelessConnect            = 8,                            /* Expansion to modeless model (not yet used) */
                    241:     kFullPageConnect            = 9,                            /* 640x818 (to get 8bpp in 512K case) and 640x870 (these two only) */
                    242:     kVGAConnect                 = 10,                           /* 640x480 VGA default -- question everything else */
                    243:     kNTSCConnect                = 11,                           /* NTSC ST (default), FF, STconv, FFconv */
                    244:     kPALConnect                 = 12,                           /* PAL ST (default), FF, STconv, FFconv */
                    245:     kHRConnect                  = 13,                           /* Straight-6 connect -- 640x480 and 640x400 (to get 8bpp in 256K case) (these two only) */
                    246:     kPanelFSTNConnect           = 14,                           /* For use with fixed-in-place LCD FSTN (aka �Supertwist�) panels */
                    247:     kMonoTwoPageConnect         = 15,                           /* 1152x870 Apple color two-page display */
                    248:     kColorTwoPageConnect        = 16,                           /* 1152x870 Apple B&W two-page display */
                    249:     kColor16Connect             = 17,                           /* 832x624 Apple B&W two-page display */
                    250:     kColor19Connect             = 18,                           /* 1024x768 Apple B&W two-page display */
                    251:     kGenericCRT                 = 19,                           /* Indicates nothing except that connection is CRT in nature. */
                    252:     kGenericLCD                 = 20,                           /* Indicates nothing except that connection is LCD in nature. */
                    253:     kDDCConnect                 = 21                            /* DDC connection, always set kHasDDCConnection */
                    254: };
                    255: 
                    256: /* csTimingFlags values in VDTimingInfoRec */
                    257: 
                    258: enum {
                    259:     kModeValid                  = 0,                            /* Says that this mode should NOT be trimmed. */
                    260:     kModeSafe                   = 1,                            /* This mode does not need confirmation */
                    261:     kModeDefault                = 2,                            /* This is the default mode for this type of connection */
                    262:     kModeShowNow                = 3,                            /* This mode should always be shown (even though it may require a confirm) */
                    263:     kModeNotResize              = 4,                            /* This mode should not be used to resize the display (eg. mode selects a different connector on card) */
                    264:     kModeRequiresPan            = 5,                            /* This mode has more pixels than are actually displayed */
                    265:     kModeInterlaced             = 6,                            /* This mode is interlaced (single pixel lines look bad). */
                    266:     kModeShowNever              = 7,                            /* This mode should not be shown in the user interface. */
                    267:     kModeSimulscan              = 8,                            /* Indicates that more than one display connection can be driven from a single framebuffer controller. */
                    268:     kModeNotPreset              = 9,                            /* Indicates that the timing is not a factory preset for the current display (geometry may need correction) */
                    269:     kModeBuiltIn                = 10                            /* Indicates that the display mode is for the built-in connect only (on multiconnect devices like the PB 3400) Only the driver is quieried */
                    270: };
                    271: 
                    272: /* csDepthFlags in VDVideoParametersInfoRec */
                    273: 
                    274: enum {
                    275:     kDepthDependent             = 0                             /* Says that this depth mode may cause dependent changes in other framebuffers (and . */
                    276: };
                    277: 
                    278: /* csResolutionFlags bit flags for VDResolutionInfoRec */
                    279: 
                    280: enum {
                    281:     kResolutionHasMultipleDepthSizes = 0                        /* Says that this mode has different csHorizontalPixels, csVerticalLines at different depths (usually slightly larger at lower depths) */
                    282: };
                    283: 
                    284: 
                    285: enum {
                    286:                                                                 /*  Power Mode constants for VDPowerStateRec.powerState.    */
                    287:     kAVPowerOff                 = 0,
                    288:     kAVPowerStandby             = 1,
                    289:     kAVPowerSuspend             = 2,
                    290:     kAVPowerOn                  = 3
                    291: };
                    292: 
                    293: 
                    294: enum {
                    295:                                                                 /*  Power Mode masks and bits for VDPowerStateRec.powerFlags.   */
                    296:     kPowerStateNeedsRefresh     = 0,
                    297:     kPowerStateNeedsRefreshMask = (1L << 0)
                    298: };
                    299: 
                    300: 
                    301: enum {
                    302:                                                                 /* Control Codes */
                    303:     cscReset                    = 0,
                    304:     cscKillIO                   = 1,
                    305:     cscSetMode                  = 2,
                    306:     cscSetEntries               = 3,
                    307:     cscSetGamma                 = 4,
                    308:     cscGrayPage                 = 5,
                    309:     cscGrayScreen               = 5,
                    310:     cscSetGray                  = 6,
                    311:     cscSetInterrupt             = 7,
                    312:     cscDirectSetEntries         = 8,
                    313:     cscSetDefaultMode           = 9,
                    314:     cscSwitchMode               = 10,
                    315:     cscSetSync                  = 11,
                    316:     cscSavePreferredConfiguration = 16,
                    317:     cscSetHardwareCursor        = 22,
                    318:     cscDrawHardwareCursor       = 23,
                    319:     cscSetConvolution           = 24,
                    320:     cscSetPowerState            = 25,
                    321:     cscPrivateControlCall       = 26,                           /* Takes a VDPrivateSelectorDataRec*/
                    322:     cscSetMultiConnect          = 28,                           /* From a GDI point of view, this call should be implemented completely in the HAL and not at all in the core.*/
                    323:     cscSetClutBehavior          = 29,                           /* Takes a VDClutBehavior */
                    324:     cscUnusedCall               = 127                           /* This call used to expend the scrn resource.  Its imbedded data contains more control info */
                    325: };
                    326: 
                    327: 
                    328: enum {
                    329:                                                                 /* Status Codes */
                    330:     cscGetMode                  = 2,
                    331:     cscGetEntries               = 3,
                    332:     cscGetPageCnt               = 4,
                    333:     cscGetPages                 = 4,                            /* This is what C&D 2 calls it. */
                    334:     cscGetPageBase              = 5,
                    335:     cscGetBaseAddr              = 5,                            /* This is what C&D 2 calls it. */
                    336:     cscGetGray                  = 6,
                    337:     cscGetInterrupt             = 7,
                    338:     cscGetGamma                 = 8,
                    339:     cscGetDefaultMode           = 9,
                    340:     cscGetCurMode               = 10,
                    341:     cscGetSync                  = 11,
                    342:     cscGetConnection            = 12,                           /* Return information about the connection to the display */
                    343:     cscGetModeTiming            = 13,                           /* Return timing info for a mode */
                    344:     cscGetModeBaseAddress       = 14,                           /* Return base address information about a particular mode */
                    345:     cscGetScanProc              = 15,                           /* QuickTime scan chasing routine */
                    346:     cscGetPreferredConfiguration = 16,
                    347:     cscGetNextResolution        = 17,
                    348:     cscGetVideoParameters       = 18,
                    349:     cscGetGammaInfoList         = 20,
                    350:     cscRetrieveGammaTable       = 21,
                    351:     cscSupportsHardwareCursor   = 22,
                    352:     cscGetHardwareCursorDrawState = 23,
                    353:     cscGetConvolution           = 24,
                    354:     cscGetPowerState            = 25,
                    355:     cscPrivateStatusCall        = 26,                           /* Takes a VDPrivateSelectorDataRec*/
                    356:     cscGetDDCBlock              = 27,                           /* Takes a VDDDCBlockRec  */
                    357:     cscGetMultiConnect          = 28,                           /* From a GDI point of view, this call should be implemented completely in the HAL and not at all in the core.*/
                    358:     cscGetClutBehavior          = 29                            /* Takes a VDClutBehavior */
                    359: };
                    360: 
                    361: /* Bit definitions for the Get/Set Sync call*/
                    362: 
                    363: enum {
                    364:     kDisableHorizontalSyncBit   = 0,
                    365:     kDisableVerticalSyncBit     = 1,
                    366:     kDisableCompositeSyncBit    = 2,
                    367:     kEnableSyncOnBlue           = 3,
                    368:     kEnableSyncOnGreen          = 4,
                    369:     kEnableSyncOnRed            = 5,
                    370:     kNoSeparateSyncControlBit   = 6,
                    371:     kTriStateSyncBit            = 7,
                    372:     kHorizontalSyncMask         = 0x01,
                    373:     kVerticalSyncMask           = 0x02,
                    374:     kCompositeSyncMask          = 0x04,
                    375:     kDPMSSyncMask               = 0x07,
                    376:     kTriStateSyncMask           = 0x80,
                    377:     kSyncOnBlueMask             = 0x08,
                    378:     kSyncOnGreenMask            = 0x10,
                    379:     kSyncOnRedMask              = 0x20,
                    380:     kSyncOnMask                 = 0x38
                    381: };
                    382: 
                    383: 
                    384: enum {
                    385:                                                                 /*  Power Mode constants for translating DPMS modes to Get/SetSync calls.   */
                    386:     kDPMSSyncOn                 = 0,
                    387:     kDPMSSyncStandby            = 1,
                    388:     kDPMSSyncSuspend            = 2,
                    389:     kDPMSSyncOff                = 7
                    390: };
                    391: 
                    392: /* Bit definitions for the Get/Set Convolution call*/
                    393: 
                    394: enum {
                    395:     kConvolved                  = 0,
                    396:     kLiveVideoPassThru          = 1,
                    397:     kConvolvedMask              = 0x01,
                    398:     kLiveVideoPassThruMask      = 0x02
                    399: };
                    400: 
                    401: struct VPBlock {
                    402:     long                            vpBaseOffset;               /*Offset to page zero of video RAM (From minorBaseOS).*/
                    403:     short                           vpRowBytes;                 /*Width of each row of video memory.*/
                    404:     Rect                            vpBounds;                   /*BoundsRect for the video display (gives dimensions).*/
                    405:     short                           vpVersion;                  /*PixelMap version number.*/
                    406:     short                           vpPackType;
                    407:     long                            vpPackSize;
                    408:     long                            vpHRes;                     /*Horizontal resolution of the device (pixels per inch).*/
                    409:     long                            vpVRes;                     /*Vertical resolution of the device (pixels per inch).*/
                    410:     short                           vpPixelType;                /*Defines the pixel type.*/
                    411:     short                           vpPixelSize;                /*Number of bits in pixel.*/
                    412:     short                           vpCmpCount;                 /*Number of components in pixel.*/
                    413:     short                           vpCmpSize;                  /*Number of bits per component*/
                    414:     long                            vpPlaneBytes;               /*Offset from one plane to the next.*/
                    415: };
                    416: typedef struct VPBlock VPBlock;
                    417: 
                    418: typedef VPBlock *VPBlockPtr;
                    419: struct VDEntryRecord {
                    420:     Ptr                             csTable;                    /*(long) pointer to color table entry=value, r,g,b:INTEGER*/
                    421: };
                    422: typedef struct VDEntryRecord VDEntryRecord;
                    423: 
                    424: typedef VDEntryRecord *VDEntRecPtr;
                    425: /* Parm block for SetGray control call */
                    426: struct VDGrayRecord {
                    427:     Boolean                         csMode;                     /*Same as GDDevType value (0=color, 1=mono)*/
                    428:     SInt8                           filler;
                    429: };
                    430: typedef struct VDGrayRecord VDGrayRecord;
                    431: 
                    432: typedef VDGrayRecord *VDGrayPtr;
                    433: /* Parm block for SetInterrupt call */
                    434: struct VDFlagRecord {
                    435:     SInt8                           csMode;
                    436:     SInt8                           filler;
                    437: };
                    438: typedef struct VDFlagRecord VDFlagRecord;
                    439: 
                    440: typedef VDFlagRecord *VDFlagRecPtr;
                    441: /* Parm block for SetEntries control call */
                    442: struct VDSetEntryRecord {
                    443:     ColorSpec *                     csTable;                    /*Pointer to an array of color specs*/
                    444:     short                           csStart;                    /*Which spec in array to start with, or -1*/
                    445:     short                           csCount;                    /*Number of color spec entries to set*/
                    446: };
                    447: typedef struct VDSetEntryRecord VDSetEntryRecord;
                    448: 
                    449: typedef VDSetEntryRecord *VDSetEntryPtr;
                    450: /* Parm block for SetGamma control call */
                    451: struct VDGammaRecord {
                    452:     Ptr                             csGTable;                   /*pointer to gamma table*/
                    453: };
                    454: typedef struct VDGammaRecord VDGammaRecord;
                    455: 
                    456: typedef VDGammaRecord *VDGamRecPtr;
                    457: struct VDBaseAddressInfoRec {
                    458:     long                            csDevData;                  /* LONGINT - (long) timing mode */
                    459:     long                            csDevBase;                  /* LONGINT - (long) base address of the mode */
                    460:     short                           csModeReserved;             /* INTEGER - (short) will some day be the depth */
                    461:     long                            csModeBase;                 /* LONGINT - (long) reserved */
                    462: };
                    463: typedef struct VDBaseAddressInfoRec VDBaseAddressInfoRec;
                    464: 
                    465: typedef VDBaseAddressInfoRec *VDBaseAddressInfoPtr;
                    466: struct VDSwitchInfoRec {
                    467:     unsigned short                  csMode;                     /*(word) mode depth*/
                    468:     unsigned long                   csData;                     /*(long) functional sResource of mode*/
                    469:     unsigned short                  csPage;                     /*(word) page to switch in*/
                    470:     Ptr                             csBaseAddr;                 /*(long) base address of page (return value)*/
                    471:     unsigned long                   csReserved;                 /*(long) Reserved (set to 0) */
                    472: };
                    473: typedef struct VDSwitchInfoRec VDSwitchInfoRec;
                    474: 
                    475: typedef VDSwitchInfoRec *VDSwitchInfoPtr;
                    476: struct VDTimingInfoRec {
                    477:     unsigned long                   csTimingMode;               /* LONGINT - (long) timing mode (a la InitGDevice) */
                    478:     unsigned long                   csTimingReserved;           /* LONGINT - (long) reserved */
                    479:     unsigned long                   csTimingFormat;             /* LONGINT - (long) what format is the timing info */
                    480:     unsigned long                   csTimingData;               /* LONGINT - (long) data supplied by driver */
                    481:     unsigned long                   csTimingFlags;              /* LONGINT - (long) mode within device */
                    482: };
                    483: typedef struct VDTimingInfoRec VDTimingInfoRec;
                    484: 
                    485: typedef VDTimingInfoRec *VDTimingInfoPtr;
                    486: struct VDDisplayConnectInfoRec {
                    487:     unsigned short                  csDisplayType;              /* INTEGER - (word) Type of display connected */
                    488:     unsigned char                   csConnectTaggedType;        /* BYTE - type of tagging */
                    489:     unsigned char                   csConnectTaggedData;        /* BYTE - tagging data */
                    490:     unsigned long                   csConnectFlags;             /* LONGINT - (long) tell us about the connection */
                    491:     unsigned long                   csDisplayComponent;         /* LONGINT - (long) if the card has a direct connection to the display, it returns the display component here (FUTURE) */
                    492:     unsigned long                   csConnectReserved;          /* LONGINT - (long) reserved */
                    493: };
                    494: typedef struct VDDisplayConnectInfoRec VDDisplayConnectInfoRec;
                    495: 
                    496: typedef VDDisplayConnectInfoRec *VDDisplayConnectInfoPtr;
                    497: struct VDMultiConnectInfoRec {
                    498:     unsigned long                   csDisplayCountOrNumber;     /* For GetMultiConnect, returns count n of 1..n connections; otherwise, indicates the ith connection.*/
                    499:     VDDisplayConnectInfoRec         csConnectInfo;              /* Standard VDDisplayConnectionInfo for connection i.*/
                    500: };
                    501: typedef struct VDMultiConnectInfoRec VDMultiConnectInfoRec;
                    502: 
                    503: typedef VDMultiConnectInfoRec *VDMultiConnectInfoPtr;
                    504: /*
                    505:  RawSenseCode
                    506:     This abstract data type is not exactly abstract.  Rather, it is merely enumerated constants
                    507:     for the possible raw sense code values when 'standard' sense code hardware is implemented.
                    508: 
                    509:     For 'standard' sense code hardware, the raw sense is obtained as follows:
                    510:         � Instruct the frame buffer controller NOT to actively drive any of the monitor sense lines
                    511:         � Read the state of the monitor sense lines 2, 1, and 0.  (2 is the MSB, 0 the LSB)
                    512: 
                    513:     IMPORTANT Note: 
                    514:     When the 'kTaggingInfoNonStandard' bit of 'csConnectFlags' is FALSE, then these constants 
                    515:     are valid 'csConnectTaggedType' values in 'VDDisplayConnectInfo' 
                    516: 
                    517: */
                    518: typedef unsigned char RawSenseCode;
                    519: 
                    520: enum {
                    521:     kRSCZero                    = 0,
                    522:     kRSCOne                     = 1,
                    523:     kRSCTwo                     = 2,
                    524:     kRSCThree                   = 3,
                    525:     kRSCFour                    = 4,
                    526:     kRSCFive                    = 5,
                    527:     kRSCSix                     = 6,
                    528:     kRSCSeven                   = 7
                    529: };
                    530: 
                    531: /*
                    532:  ExtendedSenseCode
                    533:     This abstract data type is not exactly abstract.  Rather, it is merely enumerated constants
                    534:     for the values which are possible when the extended sense algorithm is applied to hardware
                    535:     which implements 'standard' sense code hardware.
                    536: 
                    537:     For 'standard' sense code hardware, the extended sense code algorithm is as follows:
                    538:     (Note:  as described here, sense line 'A' corresponds to '2', 'B' to '1', and 'C' to '0')
                    539:         � Drive sense line 'A' low and read the values of 'B' and 'C'.  
                    540:         � Drive sense line 'B' low and read the values of 'A' and 'C'.
                    541:         � Drive sense line 'C' low and read the values of 'A' and 'B'.
                    542: 
                    543:     In this way, a six-bit number of the form BC/AC/AB is generated. 
                    544: 
                    545:     IMPORTANT Note: 
                    546:     When the 'kTaggingInfoNonStandard' bit of 'csConnectFlags' is FALSE, then these constants 
                    547:     are valid 'csConnectTaggedData' values in 'VDDisplayConnectInfo' 
                    548: 
                    549: */
                    550: typedef unsigned char ExtendedSenseCode;
                    551: 
                    552: enum {
                    553:     kESCZero21Inch              = 0x00,                         /* 21" RGB                              */
                    554:     kESCOnePortraitMono         = 0x14,                         /* Portrait Monochrome                  */
                    555:     kESCTwo12Inch               = 0x21,                         /* 12" RGB                              */
                    556:     kESCThree21InchRadius       = 0x31,                         /* 21" RGB (Radius)                     */
                    557:     kESCThree21InchMonoRadius   = 0x34,                         /* 21" Monochrome (Radius)              */
                    558:     kESCThree21InchMono         = 0x35,                         /* 21" Monochrome                       */
                    559:     kESCFourNTSC                = 0x0A,                         /* NTSC                                 */
                    560:     kESCFivePortrait            = 0x1E,                         /* Portrait RGB                         */
                    561:     kESCSixMSB1                 = 0x03,                         /* MultiScan Band-1 (12" thru 1Six")    */
                    562:     kESCSixMSB2                 = 0x0B,                         /* MultiScan Band-2 (13" thru 19")      */
                    563:     kESCSixMSB3                 = 0x23,                         /* MultiScan Band-3 (13" thru 21")      */
                    564:     kESCSixStandard             = 0x2B,                         /* 13"/14" RGB or 12" Monochrome        */
                    565:     kESCSevenPAL                = 0x00,                         /* PAL                                  */
                    566:     kESCSevenNTSC               = 0x14,                         /* NTSC                                 */
                    567:     kESCSevenVGA                = 0x17,                         /* VGA                                  */
                    568:     kESCSeven16Inch             = 0x2D,                         /* 16" RGB (GoldFish)                   */
                    569:     kESCSevenPALAlternate       = 0x30,                         /* PAL (Alternate)                      */
                    570:     kESCSeven19Inch             = 0x3A,                         /* Third-Party 19�                      */
                    571:     kESCSevenNoDisplay          = 0x3F                          /* No display connected                 */
                    572: };
                    573: 
                    574: /*
                    575:  DepthMode
                    576:     This abstract data type is used to to reference RELATIVE pixel depths.
                    577:     Its definition is largely derived from its past usage, analogous to 'xxxVidMode'
                    578: 
                    579:     Bits per pixel DOES NOT directly map to 'DepthMode'  For example, on some
                    580:     graphics hardware, 'kDepthMode1' may represent 1 BPP, whereas on other
                    581:     hardware, 'kDepthMode1' may represent 8BPP.
                    582: 
                    583:     DepthMode IS considered to be ordinal, i.e., operations such as <, >, ==, etc.
                    584:     behave as expected.  The values of the constants which comprise the set are such
                    585:     that 'kDepthMode4 < kDepthMode6' behaves as expected.
                    586: */
                    587: typedef unsigned short DepthMode;
                    588: 
                    589: enum {
                    590:     kDepthMode1                 = 128,
                    591:     kDepthMode2                 = 129,
                    592:     kDepthMode3                 = 130,
                    593:     kDepthMode4                 = 131,
                    594:     kDepthMode5                 = 132,
                    595:     kDepthMode6                 = 133
                    596: };
                    597: 
                    598: 
                    599: enum {
                    600:     kFirstDepthMode             = 128,                          /* These constants are obsolete, and just included  */
                    601:     kSecondDepthMode            = 129,                          /* for clients that have converted to the above     */
                    602:     kThirdDepthMode             = 130,                          /* kDepthModeXXX constants.                         */
                    603:     kFourthDepthMode            = 131,
                    604:     kFifthDepthMode             = 132,
                    605:     kSixthDepthMode             = 133
                    606: };
                    607: 
                    608: struct VDPageInfo {
                    609:     short                           csMode;                     /*(word) mode within device*/
                    610:     long                            csData;                     /*(long) data supplied by driver*/
                    611:     short                           csPage;                     /*(word) page to switch in*/
                    612:     Ptr                             csBaseAddr;                 /*(long) base address of page*/
                    613: };
                    614: typedef struct VDPageInfo VDPageInfo;
                    615: 
                    616: typedef VDPageInfo *VDPgInfoPtr;
                    617: struct VDSizeInfo {
                    618:     short                           csHSize;                    /*(word) desired/returned h size*/
                    619:     short                           csHPos;                     /*(word) desired/returned h position*/
                    620:     short                           csVSize;                    /*(word) desired/returned v size*/
                    621:     short                           csVPos;                     /*(word) desired/returned v position*/
                    622: };
                    623: typedef struct VDSizeInfo VDSizeInfo;
                    624: 
                    625: typedef VDSizeInfo *VDSzInfoPtr;
                    626: struct VDSettings {
                    627:     short                           csParamCnt;                 /*(word) number of params*/
                    628:     short                           csBrightMax;                /*(word) max brightness*/
                    629:     short                           csBrightDef;                /*(word) default brightness*/
                    630:     short                           csBrightVal;                /*(word) current brightness*/
                    631:     short                           csCntrstMax;                /*(word) max contrast*/
                    632:     short                           csCntrstDef;                /*(word) default contrast*/
                    633:     short                           csCntrstVal;                /*(word) current contrast*/
                    634:     short                           csTintMax;                  /*(word) max tint*/
                    635:     short                           csTintDef;                  /*(word) default tint*/
                    636:     short                           csTintVal;                  /*(word) current tint*/
                    637:     short                           csHueMax;                   /*(word) max hue*/
                    638:     short                           csHueDef;                   /*(word) default hue*/
                    639:     short                           csHueVal;                   /*(word) current hue*/
                    640:     short                           csHorizDef;                 /*(word) default horizontal*/
                    641:     short                           csHorizVal;                 /*(word) current horizontal*/
                    642:     short                           csHorizMax;                 /*(word) max horizontal*/
                    643:     short                           csVertDef;                  /*(word) default vertical*/
                    644:     short                           csVertVal;                  /*(word) current vertical*/
                    645:     short                           csVertMax;                  /*(word) max vertical*/
                    646: };
                    647: typedef struct VDSettings VDSettings;
                    648: 
                    649: typedef VDSettings *VDSettingsPtr;
                    650: struct VDDefMode {
                    651:     UInt8                           csID;
                    652:     SInt8                           filler;
                    653: };
                    654: typedef struct VDDefMode VDDefMode;
                    655: 
                    656: typedef VDDefMode *VDDefModePtr;
                    657: struct VDSyncInfoRec {
                    658:     UInt8                           csMode;
                    659:     UInt8                           csFlags;
                    660: };
                    661: typedef struct VDSyncInfoRec VDSyncInfoRec;
                    662: 
                    663: typedef VDSyncInfoRec *VDSyncInfoPtr;
                    664: typedef unsigned long DisplayModeID;
                    665: typedef unsigned long VideoDeviceType;
                    666: typedef unsigned long GammaTableID;
                    667: /* Constants for the GetNextResolution call */
                    668: 
                    669: enum {
                    670:     kDisplayModeIDCurrent       = 0x00,                         /* Reference the Current DisplayModeID */
                    671:     kDisplayModeIDInvalid       = 0xFFFFFFFF,                   /* A bogus DisplayModeID in all cases */
                    672:     kDisplayModeIDFindFirstResolution = 0xFFFFFFFE,             /* Used in cscGetNextResolution to reset iterator */
                    673:     kDisplayModeIDNoMoreResolutions = 0xFFFFFFFD                /* Used in cscGetNextResolution to indicate End Of List */
                    674: };
                    675: 
                    676: /* Constants for the GetGammaInfoList call */
                    677: 
                    678: enum {
                    679:     kGammaTableIDFindFirst      = 0xFFFFFFFE,                   /* Get the first gamma table ID */
                    680:     kGammaTableIDNoMoreTables   = 0xFFFFFFFD,                   /* Used to indicate end of list */
                    681:     kGammaTableIDSpecific       = 0x00                          /* Return the info for the given table id */
                    682: };
                    683: 
                    684: /* Constants for GetMultiConnect call*/
                    685: 
                    686: enum {
                    687:     kGetConnectionCount         = 0xFFFFFFFF,                   /* Used to get the number of possible connections in a �multi-headed� framebuffer environment.*/
                    688:     kActivateConnection         = (0 << kConnectionInactive),   /* Used for activating a connection (csConnectFlags value).*/
                    689:     kDeactivateConnection       = (1 << kConnectionInactive)    /* Used for deactivating a connection (csConnectFlags value.)*/
                    690: };
                    691: 
                    692: struct VDResolutionInfoRec {
                    693:     DisplayModeID                   csPreviousDisplayModeID;    /* ID of the previous resolution in a chain */
                    694:     DisplayModeID                   csDisplayModeID;            /* ID of the next resolution */
                    695:     unsigned long                   csHorizontalPixels;         /* # of pixels in a horizontal line at the max depth */
                    696:     unsigned long                   csVerticalLines;            /* # of lines in a screen at the max depth */
                    697:     Fixed                           csRefreshRate;              /* Vertical Refresh Rate in Hz */
                    698:     DepthMode                       csMaxDepthMode;             /* 0x80-based number representing max bit depth */
                    699:     unsigned long                   csResolutionFlags;          /* Reserved - flag bits */
                    700:     unsigned long                   csReserved;                 /* Reserved */
                    701: };
                    702: typedef struct VDResolutionInfoRec VDResolutionInfoRec;
                    703: 
                    704: typedef VDResolutionInfoRec *VDResolutionInfoPtr;
                    705: struct VDVideoParametersInfoRec {
                    706:     DisplayModeID                   csDisplayModeID;            /* the ID of the resolution we want info on */
                    707:     DepthMode                       csDepthMode;                /* The bit depth we want the info on (0x80 based) */
                    708:     VPBlockPtr                      csVPBlockPtr;               /* Pointer to a video parameter block */
                    709:     unsigned long                   csPageCount;                /* Number of pages supported by the resolution */
                    710:     VideoDeviceType                 csDeviceType;               /* Device Type:  Direct, Fixed or CLUT; */
                    711:     UInt32                          csDepthFlags;               /* Flags */
                    712: };
                    713: typedef struct VDVideoParametersInfoRec VDVideoParametersInfoRec;
                    714: 
                    715: typedef VDVideoParametersInfoRec *VDVideoParametersInfoPtr;
                    716: struct VDGammaInfoRec {
                    717:     GammaTableID                    csLastGammaID;              /* the ID of the previous gamma table */
                    718:     GammaTableID                    csNextGammaID;              /* the ID of the next gamma table */
                    719:     Ptr                             csGammaPtr;                 /* Ptr to a gamma table data */
                    720:     unsigned long                   csReserved;                 /* Reserved */
                    721: };
                    722: typedef struct VDGammaInfoRec VDGammaInfoRec;
                    723: 
                    724: typedef VDGammaInfoRec *VDGammaInfoPtr;
                    725: struct VDGetGammaListRec {
                    726:     GammaTableID                    csPreviousGammaTableID;     /* ID of the previous gamma table */
                    727:     GammaTableID                    csGammaTableID;             /* ID of the gamma table following csPreviousDisplayModeID */
                    728:     unsigned long                   csGammaTableSize;           /* Size of the gamma table in bytes */
                    729:     char *                          csGammaTableName;           /* Gamma table name (c-string) */
                    730: };
                    731: typedef struct VDGetGammaListRec VDGetGammaListRec;
                    732: 
                    733: typedef VDGetGammaListRec *VDGetGammaListPtr;
                    734: struct VDRetrieveGammaRec {
                    735:     GammaTableID                    csGammaTableID;             /* ID of gamma table to retrieve */
                    736:     GammaTbl *                      csGammaTablePtr;            /* Location to copy desired gamma to */
                    737: };
                    738: typedef struct VDRetrieveGammaRec VDRetrieveGammaRec;
                    739: 
                    740: typedef VDRetrieveGammaRec *VDRetrieveGammaPtr;
                    741: struct VDSetHardwareCursorRec {
                    742:     void *                          csCursorRef;                /* reference to cursor data */
                    743:     UInt32                          csReserved1;                /* reserved for future use */
                    744:     UInt32                          csReserved2;                /* should be ignored */
                    745: };
                    746: typedef struct VDSetHardwareCursorRec VDSetHardwareCursorRec;
                    747: 
                    748: typedef VDSetHardwareCursorRec *VDSetHardwareCursorPtr;
                    749: struct VDDrawHardwareCursorRec {
                    750:     SInt32                          csCursorX;                  /* x coordinate */
                    751:     SInt32                          csCursorY;                  /* y coordinate */
                    752:     UInt32                          csCursorVisible;            /* true if cursor is must be visible */
                    753:     UInt32                          csReserved1;                /* reserved for future use */
                    754:     UInt32                          csReserved2;                /* should be ignored */
                    755: };
                    756: typedef struct VDDrawHardwareCursorRec VDDrawHardwareCursorRec;
                    757: 
                    758: typedef VDDrawHardwareCursorRec *VDDrawHardwareCursorPtr;
                    759: struct VDSupportsHardwareCursorRec {
                    760:     UInt32                          csSupportsHardwareCursor;
                    761:                                                                 /* true if hardware cursor is supported */
                    762:     UInt32                          csReserved1;                /* reserved for future use */
                    763:     UInt32                          csReserved2;                /* must be zero */
                    764: };
                    765: typedef struct VDSupportsHardwareCursorRec VDSupportsHardwareCursorRec;
                    766: 
                    767: typedef VDSupportsHardwareCursorRec *VDSupportsHardwareCursorPtr;
                    768: struct VDHardwareCursorDrawStateRec {
                    769:     SInt32                          csCursorX;                  /* x coordinate */
                    770:     SInt32                          csCursorY;                  /* y coordinate */
                    771:     UInt32                          csCursorVisible;            /* true if cursor is visible */
                    772:     UInt32                          csCursorSet;                /* true if cursor successfully set by last set control call */
                    773:     UInt32                          csReserved1;                /* reserved for future use */
                    774:     UInt32                          csReserved2;                /* must be zero */
                    775: };
                    776: typedef struct VDHardwareCursorDrawStateRec VDHardwareCursorDrawStateRec;
                    777: 
                    778: typedef VDHardwareCursorDrawStateRec *VDHardwareCursorDrawStatePtr;
                    779: struct VDConvolutionInfoRec {
                    780:     DisplayModeID                   csDisplayModeID;            /* the ID of the resolution we want info on */
                    781:     DepthMode                       csDepthMode;                /* The bit depth we want the info on (0x80 based) */
                    782:     unsigned long                   csPage;
                    783:     UInt32                          csFlags;
                    784:     UInt32                          csReserved;
                    785: };
                    786: typedef struct VDConvolutionInfoRec VDConvolutionInfoRec;
                    787: 
                    788: typedef VDConvolutionInfoRec *VDConvolutionInfoPtr;
                    789: struct VDPowerStateRec {
                    790:     unsigned long                   powerState;
                    791:     unsigned long                   powerFlags;
                    792: 
                    793:     unsigned long                   powerReserved1;
                    794:     unsigned long                   powerReserved2;
                    795: };
                    796: typedef struct VDPowerStateRec VDPowerStateRec;
                    797: 
                    798: typedef VDPowerStateRec *VDPowerStatePtr;
                    799: /*
                    800:     Private Data to video drivers.
                    801:     
                    802:     In versions of MacOS with multiple address spaces (System 8), the OS 
                    803:     must know the extent of parameters in order to move them between the caller
                    804:     and driver.  The old private-selector model for video drivers does not have
                    805:     this information so:
                    806:     
                    807:     For post-7.x Systems private calls should be implemented using the cscPrivateCall
                    808: */
                    809: struct VDPrivateSelectorDataRec {
                    810:     LogicalAddress                  privateParameters;          /* Caller's parameters*/
                    811:     ByteCount                       privateParametersSize;      /* Size of data sent from caller to driver*/
                    812:     LogicalAddress                  privateResults;             /* Caller's return area. Can be nil, or same as privateParameters.*/
                    813:     ByteCount                       privateResultsSize;         /* Size of data driver returns to caller. Can be nil, or same as privateParametersSize.*/
                    814: };
                    815: typedef struct VDPrivateSelectorDataRec VDPrivateSelectorDataRec;
                    816: 
                    817: struct VDPrivateSelectorRec {
                    818:     UInt32                          reserved;                   /* Reserved (set to 0). */
                    819:     VDPrivateSelectorDataRec        data[1];
                    820: };
                    821: typedef struct VDPrivateSelectorRec VDPrivateSelectorRec;
                    822: 
                    823: struct VDDDCBlockRec {
                    824:     UInt32                          ddcBlockNumber;             /* Input -- DDC EDID (Extended Display Identification Data) number (1-based) */
                    825:     ResType                         ddcBlockType;               /* Input -- DDC block type (EDID/VDIF) */
                    826:     UInt32                          ddcFlags;                   /* Input -- DDC Flags*/
                    827:     UInt32                          ddcReserved;                /* Reserved */
                    828:     Byte                            ddcBlockData[128];          /* Output -- DDC EDID/VDIF data (kDDCBlockSize) */
                    829: };
                    830: typedef struct VDDDCBlockRec VDDDCBlockRec;
                    831: 
                    832: typedef VDDDCBlockRec *VDDDCBlockPtr;
                    833: typedef UInt32 VDClutBehavior;
                    834: typedef VDClutBehavior *VDClutBehaviorPtr;
                    835: 
                    836: enum {
                    837:     kSetClutAtSetEntries        = 0,                            /* SetEntries behavior is to update clut during SetEntries call*/
                    838:     kSetClutAtVBL               = 1                             /* SetEntries behavior is to upate clut at next vbl*/
                    839: };
                    840: 
                    841: 
                    842: #pragma options align=reset
                    843: 
                    844: #pragma import off
                    845: 
                    846: #ifdef __cplusplus
                    847: }
                    848: #endif
                    849: 
                    850: #endif /* __IOMACOSVIDEO__ */
                    851: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.