Annotation of driverkit/libDriver/ppc/IOMacOSVideo.h, revision 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.