Annotation of XNU/iokit/IOKit/ndrvsupport/IOMacOSVideo.h, revision 1.1

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

unix.superglobalmegacorp.com

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