|  | /* | 
|  | * Copyright (c) 2008 NVIDIA, Corporation | 
|  | * | 
|  | * Permission is hereby granted, free of charge, to any person obtaining a copy | 
|  | * of this software and associated documentation files (the "Software"), to deal | 
|  | * in the Software without restriction, including without limitation the rights | 
|  | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | 
|  | * copies of the Software, and to permit persons to whom the Software is | 
|  | * furnished to do so, subject to the following conditions: | 
|  | * | 
|  | * The above copyright notice and this permission notice (including the next | 
|  | * paragraph) shall be included in all copies or substantial portions of the | 
|  | * Software. | 
|  | * | 
|  | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | 
|  | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 
|  | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE | 
|  | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | 
|  | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | 
|  | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | 
|  | * SOFTWARE. | 
|  | * | 
|  | * | 
|  | * NV-CONTROL Protocol Version History | 
|  | * | 
|  | * 1.0 - 1.5   NVIDIA Internal development versions | 
|  | * 1.6         Initial public version | 
|  | * 1.7         Added QueryBinaryData request | 
|  | * 1.8         Added TargetTypes | 
|  | * 1.9         Added QueryTargetCount request | 
|  | * 1.10        Fixed target type/id byte ordering for compatibility with | 
|  | *             pre-1.8 NV-CONTROL clients | 
|  | * 1.11        NVIDIA Internal development version | 
|  | * 1.12        Added StringOperation request | 
|  | * 1.13        NVIDIA Internal development version | 
|  | * 1.14        Fixed an NV_CTRL_BINARY_DATA_MODELINES double scan modeline | 
|  | *             reporting bug (vsyncstart, vsyncend, and vtotal were incorrectly | 
|  | *             doubled) | 
|  | * 1.15        Added AVAILABILITY_TARGET_ATTRIBUTE_CHANGED_EVENT | 
|  | * 1.16        Added TARGET_STRING_ATTRIBUTE_CHANGED_EVENT | 
|  | * 1.17        Added TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT | 
|  | * 1.18        Updated QueryTargetCount to return a count of 0, rather than | 
|  | *             BadMatch, if an unknown TargetType is specified | 
|  | * 1.19        Added TargetType support for SetAttributeAndGetStatus and | 
|  | *             SetStringAttribute requests | 
|  | * 1.20        Added COOLER TargetType | 
|  | * 1.21        Added initial 64-bit integer attribute support (read-only) | 
|  | * 1.22        Added X_nvCtrlQueryValidStringAttributeValues to check | 
|  | *             string attribute permissions. | 
|  | * 1.23        Added SENSOR TargetType | 
|  | * 1.24        Fixed a bug where SLI_MOSAIC_MODE_AVAILABLE attribute would | 
|  | *             report false positives via the GPU and X screen target types | 
|  | * 1.25        Added 3D_VISION_PRO_TRANSCEIVER TargetType | 
|  | * 1.26        Added XNVCTRLQueryXXXAttributePermissions. | 
|  | * 1.27        Added DISPLAY TargetType | 
|  | * 1.28        Added NV_CTRL_CURRENT_METAMODE_ID: clients should use this | 
|  | *             attribute to switch MetaModes, rather than pass the MetaMode ID | 
|  | *             through the RRSetScreenConfig protocol request. | 
|  | */ | 
|  |  | 
|  | #ifndef __NVCONTROL_H | 
|  | #define __NVCONTROL_H | 
|  |  | 
|  | #define NV_CONTROL_ERRORS 0 | 
|  | #define NV_CONTROL_EVENTS 5 | 
|  | #define NV_CONTROL_NAME "NV-CONTROL" | 
|  |  | 
|  | #define NV_CONTROL_MAJOR 1 | 
|  | #define NV_CONTROL_MINOR 28 | 
|  |  | 
|  | #define X_nvCtrlQueryExtension                      0 | 
|  | #define X_nvCtrlIsNv                                1 | 
|  | #define X_nvCtrlQueryAttribute                      2 | 
|  | #define X_nvCtrlSetAttribute                        3 | 
|  | #define X_nvCtrlQueryStringAttribute                4 | 
|  | #define X_nvCtrlQueryValidAttributeValues           5 | 
|  | #define X_nvCtrlSelectNotify                        6 | 
|  | #define X_nvCtrlSetGvoColorConversionDeprecated     7 | 
|  | #define X_nvCtrlQueryGvoColorConversionDeprecated   8 | 
|  | #define X_nvCtrlSetStringAttribute                  9 | 
|  | /* STUB X_nvCtrlQueryDDCCILutSize                   10 */ | 
|  | /* STUB X_nvCtrlQueryDDCCISinglePointLutOperation   11 */ | 
|  | /* STUB X_nvCtrlSetDDCCISinglePointLutOperation     12 */ | 
|  | /* STUB X_nvCtrlQueryDDCCIBlockLutOperation         13 */ | 
|  | /* STUB X_nvCtrlSetDDCCIBlockLutOperation           14 */ | 
|  | /* STUB X_nvCtrlSetDDCCIRemoteProcedureCall         15 */ | 
|  | /* STUB X_nvCtrlQueryDDCCIDisplayControllerType     16 */ | 
|  | /* STUB X_nvCtrlQueryDDCCICapabilities              17 */ | 
|  | /* STUB X_nvCtrlQueryDDCCITimingReport              18 */ | 
|  | #define X_nvCtrlSetAttributeAndGetStatus            19 | 
|  | #define X_nvCtrlQueryBinaryData                     20 | 
|  | #define X_nvCtrlSetGvoColorConversion               21 | 
|  | #define X_nvCtrlQueryGvoColorConversion             22 | 
|  | #define X_nvCtrlSelectTargetNotify                  23 | 
|  | #define X_nvCtrlQueryTargetCount                    24 | 
|  | #define X_nvCtrlStringOperation                     25 | 
|  | #define X_nvCtrlQueryValidAttributeValues64         26 | 
|  | #define X_nvCtrlQueryAttribute64                    27 | 
|  | #define X_nvCtrlQueryValidStringAttributeValues     28 | 
|  | #define X_nvCtrlQueryAttributePermissions                29 | 
|  | #define X_nvCtrlQueryStringAttributePermissions          30 | 
|  | #define X_nvCtrlQueryBinaryDataAttributePermissions      31 | 
|  | #define X_nvCtrlQueryStringOperationAttributePermissions 32 | 
|  |  | 
|  | #define X_nvCtrlLastRequest (X_nvCtrlQueryStringOperationAttributePermissions + 1) | 
|  |  | 
|  |  | 
|  | /* Define 32 bit floats */ | 
|  | typedef float FLOAT32; | 
|  | #ifndef F32 | 
|  | #define F32 | 
|  | #endif | 
|  |  | 
|  |  | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | } xnvCtrlQueryExtensionReq; | 
|  | #define sz_xnvCtrlQueryExtensionReq 4 | 
|  |  | 
|  | typedef struct { | 
|  | BYTE type;   /* X_Reply */ | 
|  | CARD8 padb1; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 length B32; | 
|  | CARD16 major B16; | 
|  | CARD16 minor B16; | 
|  | CARD32 padl4 B32; | 
|  | CARD32 padl5 B32; | 
|  | CARD32 padl6 B32; | 
|  | CARD32 padl7 B32; | 
|  | CARD32 padl8 B32; | 
|  | } xnvCtrlQueryExtensionReply; | 
|  | #define sz_xnvCtrlQueryExtensionReply 32 | 
|  |  | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD32 screen B32; | 
|  | } xnvCtrlIsNvReq; | 
|  | #define sz_xnvCtrlIsNvReq 8 | 
|  |  | 
|  | typedef struct { | 
|  | BYTE type;   /* X_Reply */ | 
|  | CARD8 padb1; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 length B32; | 
|  | CARD32 isnv B32; | 
|  | CARD32 padl4 B32; | 
|  | CARD32 padl5 B32; | 
|  | CARD32 padl6 B32; | 
|  | CARD32 padl7 B32; | 
|  | CARD32 padl8 B32; | 
|  | } xnvCtrlIsNvReply; | 
|  | #define sz_xnvCtrlIsNvReply 32 | 
|  |  | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD32 target_type B32; | 
|  | } xnvCtrlQueryTargetCountReq; | 
|  | #define sz_xnvCtrlQueryTargetCountReq 8 | 
|  |  | 
|  | typedef struct { | 
|  | BYTE type;   /* X_Reply */ | 
|  | CARD8 padb1; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 length B32; | 
|  | CARD32 count B32; | 
|  | CARD32 padl4 B32; | 
|  | CARD32 padl5 B32; | 
|  | CARD32 padl6 B32; | 
|  | CARD32 padl7 B32; | 
|  | CARD32 padl8 B32; | 
|  | } xnvCtrlQueryTargetCountReply; | 
|  | #define sz_xnvCtrlQueryTargetCountReply 32 | 
|  |  | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD16 target_id B16;    /* X screen number or GPU number */ | 
|  | CARD16 target_type B16;  /* X screen or GPU */ | 
|  | CARD32 display_mask B32; | 
|  | CARD32 attribute B32; | 
|  | } xnvCtrlQueryAttributeReq; | 
|  | #define sz_xnvCtrlQueryAttributeReq 16 | 
|  |  | 
|  | typedef struct { | 
|  | BYTE type; | 
|  | BYTE pad0; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 length B32; | 
|  | CARD32 flags B32; | 
|  | INT32 value B32; | 
|  | CARD32 pad4 B32; | 
|  | CARD32 pad5 B32; | 
|  | CARD32 pad6 B32; | 
|  | CARD32 pad7 B32; | 
|  | } xnvCtrlQueryAttributeReply; | 
|  | #define sz_xnvCtrlQueryAttributeReply 32 | 
|  |  | 
|  | typedef struct { | 
|  | BYTE type; | 
|  | BYTE pad0; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 length B32; | 
|  | CARD32 flags B32; | 
|  | CARD32 pad3 B32; | 
|  | int64_t value_64; | 
|  | CARD32 pad6 B32; | 
|  | CARD32 pad7 B32; | 
|  | } xnvCtrlQueryAttribute64Reply; | 
|  | #define sz_xnvCtrlQueryAttribute64Reply 32 | 
|  |  | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD16 target_id B16; | 
|  | CARD16 target_type B16; | 
|  | CARD32 display_mask B32; | 
|  | CARD32 attribute B32; | 
|  | INT32 value B32; | 
|  | } xnvCtrlSetAttributeReq; | 
|  | #define sz_xnvCtrlSetAttributeReq 20 | 
|  |  | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD16 target_id B16; | 
|  | CARD16 target_type B16; | 
|  | CARD32 display_mask B32; | 
|  | CARD32 attribute B32; | 
|  | INT32 value B32; | 
|  | } xnvCtrlSetAttributeAndGetStatusReq; | 
|  | #define sz_xnvCtrlSetAttributeAndGetStatusReq 20 | 
|  |  | 
|  | typedef struct { | 
|  | BYTE type; | 
|  | BYTE pad0; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 length B32; | 
|  | CARD32 flags B32; | 
|  | CARD32 pad3 B32; | 
|  | CARD32 pad4 B32; | 
|  | CARD32 pad5 B32; | 
|  | CARD32 pad6 B32; | 
|  | CARD32 pad7 B32; | 
|  | } xnvCtrlSetAttributeAndGetStatusReply; | 
|  | #define sz_xnvCtrlSetAttributeAndGetStatusReply 32 | 
|  |  | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD16 target_id B16;    /* X screen number or GPU number */ | 
|  | CARD16 target_type B16;  /* X screen or GPU */ | 
|  | CARD32 display_mask B32; | 
|  | CARD32 attribute B32; | 
|  | } xnvCtrlQueryStringAttributeReq; | 
|  | #define sz_xnvCtrlQueryStringAttributeReq 16 | 
|  |  | 
|  | typedef struct { | 
|  | BYTE type; | 
|  | BYTE pad0; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 length B32; | 
|  | CARD32 flags B32; | 
|  | CARD32 n B32;    /* Length of string */ | 
|  | CARD32 pad4 B32; | 
|  | CARD32 pad5 B32; | 
|  | CARD32 pad6 B32; | 
|  | CARD32 pad7 B32; | 
|  | } xnvCtrlQueryStringAttributeReply; | 
|  | #define sz_xnvCtrlQueryStringAttributeReply 32 | 
|  |  | 
|  |  | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD16 target_id B16; | 
|  | CARD16 target_type B16; | 
|  | CARD32 display_mask B32; | 
|  | CARD32 attribute B32; | 
|  | CARD32 num_bytes B32; | 
|  | } xnvCtrlSetStringAttributeReq; | 
|  | #define sz_xnvCtrlSetStringAttributeReq 20 | 
|  |  | 
|  | typedef struct { | 
|  | BYTE type; | 
|  | BYTE pad0; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 length B32; | 
|  | CARD32 flags B32; | 
|  | CARD32 pad3 B32; | 
|  | CARD32 pad4 B32; | 
|  | CARD32 pad5 B32; | 
|  | CARD32 pad6 B32; | 
|  | CARD32 pad7 B32; | 
|  | } xnvCtrlSetStringAttributeReply; | 
|  | #define sz_xnvCtrlSetStringAttributeReply 32 | 
|  |  | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD16 target_id B16;    /* X screen number or GPU number */ | 
|  | CARD16 target_type B16;  /* X screen or GPU */ | 
|  | CARD32 display_mask B32; | 
|  | CARD32 attribute B32; | 
|  | } xnvCtrlQueryValidAttributeValuesReq; | 
|  | #define sz_xnvCtrlQueryValidAttributeValuesReq 16 | 
|  |  | 
|  | typedef struct { | 
|  | BYTE type; | 
|  | BYTE pad0; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 length B32; | 
|  | CARD32 flags B32; | 
|  | INT32 attr_type B32; | 
|  | INT32 min B32; | 
|  | INT32 max B32; | 
|  | CARD32 bits B32; | 
|  | CARD32 perms B32; | 
|  | } xnvCtrlQueryValidAttributeValuesReply; | 
|  | #define sz_xnvCtrlQueryValidAttributeValuesReply 32 | 
|  |  | 
|  | typedef struct { | 
|  | BYTE type; | 
|  | BYTE pad0; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 length B32; | 
|  | CARD32 flags B32; | 
|  | INT32 attr_type B32; | 
|  | int64_t min_64; | 
|  | int64_t max_64; | 
|  | CARD64 bits_64; | 
|  | CARD32 perms B32; | 
|  | CARD32 pad1 B32; | 
|  | } xnvCtrlQueryValidAttributeValues64Reply; | 
|  | #define sz_xnvCtrlQueryValidAttributeValues64Reply 48 | 
|  | #define sz_xnvCtrlQueryValidAttributeValues64Reply_extra ((48 - 32) >> 2) | 
|  |  | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD32 attribute B32; | 
|  | } xnvCtrlQueryAttributePermissionsReq; | 
|  | #define sz_xnvCtrlQueryAttributePermissionsReq 8 | 
|  |  | 
|  | typedef struct { | 
|  | BYTE type; | 
|  | BYTE pad0; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 length B32; | 
|  | CARD32 flags B32; | 
|  | INT32 attr_type B32; | 
|  | CARD32 perms B32; | 
|  | CARD32 pad5 B32; | 
|  | CARD32 pad6 B32; | 
|  | CARD32 pad7 B32; | 
|  | CARD32 pad8 B32; | 
|  | } xnvCtrlQueryAttributePermissionsReply; | 
|  | #define sz_xnvCtrlQueryAttributePermissionsReply 32 | 
|  |  | 
|  | /* Set GVO Color Conversion request (deprecated) */ | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD32 screen B32; | 
|  | FLOAT32 row1_col1 F32; | 
|  | FLOAT32 row1_col2 F32; | 
|  | FLOAT32 row1_col3 F32; | 
|  | FLOAT32 row1_col4 F32; | 
|  | FLOAT32 row2_col1 F32; | 
|  | FLOAT32 row2_col2 F32; | 
|  | FLOAT32 row2_col3 F32; | 
|  | FLOAT32 row2_col4 F32; | 
|  | FLOAT32 row3_col1 F32; | 
|  | FLOAT32 row3_col2 F32; | 
|  | FLOAT32 row3_col3 F32; | 
|  | FLOAT32 row3_col4 F32; | 
|  | } xnvCtrlSetGvoColorConversionDeprecatedReq; | 
|  | #define sz_xnvCtrlSetGvoColorConversionDeprecatedReq 56 | 
|  |  | 
|  | /* Query GVO Color Conversion request (deprecated) */ | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD32 screen B32; | 
|  | } xnvCtrlQueryGvoColorConversionDeprecatedReq; | 
|  | #define sz_xnvCtrlQueryGvoColorConversionDeprecatedReq 8 | 
|  |  | 
|  | /* Query GVO Color Conversion reply (deprecated) */ | 
|  | typedef struct { | 
|  | BYTE type;   /* X_Reply */ | 
|  | BYTE pad0; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 length B32; | 
|  | CARD32 pad3 B32; | 
|  | CARD32 pad4 B32; | 
|  | CARD32 pad5 B32; | 
|  | CARD32 pad6 B32; | 
|  | CARD32 pad7 B32; | 
|  | CARD32 pad8 B32; | 
|  | } xnvCtrlQueryGvoColorConversionDeprecatedReply; | 
|  | #define sz_xnvCtrlQueryGvoColorConversionDeprecatedReply 32 | 
|  |  | 
|  |  | 
|  | /* Set GVO Color Conversion request */ | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD32 screen B32; | 
|  |  | 
|  | FLOAT32 cscMatrix_y_r F32; | 
|  | FLOAT32 cscMatrix_y_g F32; | 
|  | FLOAT32 cscMatrix_y_b F32; | 
|  |  | 
|  | FLOAT32 cscMatrix_cr_r F32; | 
|  | FLOAT32 cscMatrix_cr_g F32; | 
|  | FLOAT32 cscMatrix_cr_b F32; | 
|  |  | 
|  | FLOAT32 cscMatrix_cb_r F32; | 
|  | FLOAT32 cscMatrix_cb_g F32; | 
|  | FLOAT32 cscMatrix_cb_b F32; | 
|  |  | 
|  | FLOAT32 cscOffset_y  F32; | 
|  | FLOAT32 cscOffset_cr F32; | 
|  | FLOAT32 cscOffset_cb F32; | 
|  |  | 
|  | FLOAT32 cscScale_y  F32; | 
|  | FLOAT32 cscScale_cr F32; | 
|  | FLOAT32 cscScale_cb F32; | 
|  |  | 
|  | } xnvCtrlSetGvoColorConversionReq; | 
|  | #define sz_xnvCtrlSetGvoColorConversionReq 68 | 
|  |  | 
|  | /* Query GVO Color Conversion request */ | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD32 screen B32; | 
|  | } xnvCtrlQueryGvoColorConversionReq; | 
|  | #define sz_xnvCtrlQueryGvoColorConversionReq 8 | 
|  |  | 
|  | /* Query GVO Color Conversion reply */ | 
|  | typedef struct { | 
|  | BYTE type;   /* X_Reply */ | 
|  | BYTE pad0; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 length B32; | 
|  | CARD32 pad3 B32; | 
|  | CARD32 pad4 B32; | 
|  | CARD32 pad5 B32; | 
|  | CARD32 pad6 B32; | 
|  | CARD32 pad7 B32; | 
|  | CARD32 pad8 B32; | 
|  | } xnvCtrlQueryGvoColorConversionReply; | 
|  | #define sz_xnvCtrlQueryGvoColorConversionReply 32 | 
|  |  | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD16 target_id B16;    /* X screen number or GPU number */ | 
|  | CARD16 target_type B16;  /* X screen or GPU */ | 
|  | CARD32 display_mask B32; | 
|  | CARD32 attribute B32; | 
|  | } xnvCtrlQueryBinaryDataReq; | 
|  | #define sz_xnvCtrlQueryBinaryDataReq 16 | 
|  |  | 
|  | typedef struct { | 
|  | BYTE type; | 
|  | BYTE pad0; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 length B32; | 
|  | CARD32 flags B32; | 
|  | CARD32 n B32; | 
|  | CARD32 pad4 B32; | 
|  | CARD32 pad5 B32; | 
|  | CARD32 pad6 B32; | 
|  | CARD32 pad7 B32; | 
|  | } xnvCtrlQueryBinaryDataReply; | 
|  | #define sz_xnvCtrlQueryBinaryDataReply 32 | 
|  |  | 
|  |  | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD32 screen B32; | 
|  | CARD16 notifyType B16; | 
|  | CARD16 onoff B16; | 
|  | } xnvCtrlSelectNotifyReq; | 
|  | #define sz_xnvCtrlSelectNotifyReq 12 | 
|  |  | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD16 target_id B16;    /* X screen number or GPU number */ | 
|  | CARD16 target_type B16;  /* X screen or GPU */ | 
|  | CARD32 display_mask B32; | 
|  | CARD32 attribute B32; | 
|  | CARD32 num_bytes B32; /* Length of string */ | 
|  | } xnvCtrlStringOperationReq; | 
|  | #define sz_xnvCtrlStringOperationReq 20 | 
|  |  | 
|  | typedef struct { | 
|  | BYTE type;   /* X_Reply */ | 
|  | CARD8 padb1; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 length B32; | 
|  | CARD32 ret B32; | 
|  | CARD32 num_bytes B32; /* Length of string */ | 
|  | CARD32 padl4 B32; | 
|  | CARD32 padl5 B32; | 
|  | CARD32 padl6 B32; | 
|  | CARD32 padl7 B32; | 
|  | } xnvCtrlStringOperationReply; | 
|  | #define sz_xnvCtrlStringOperationReply 32 | 
|  |  | 
|  | typedef struct { | 
|  | union { | 
|  | struct { | 
|  | BYTE type; | 
|  | BYTE detail; | 
|  | CARD16 sequenceNumber B16; | 
|  | } u; | 
|  | struct { | 
|  | BYTE type; | 
|  | BYTE detail; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 time B32; | 
|  | CARD32 screen B32; | 
|  | CARD32 display_mask B32; | 
|  | CARD32 attribute B32; | 
|  | CARD32 value B32; | 
|  | CARD32 pad0 B32; | 
|  | CARD32 pad1 B32; | 
|  | } attribute_changed; | 
|  | } u; | 
|  | } xnvctrlEvent; | 
|  |  | 
|  |  | 
|  | /* | 
|  | * Leave target_type before target_id for the | 
|  | * xnvCtrlSelectTargetNotifyReq and xnvctrlEventTarget | 
|  | * structures, even though other request protocol structures | 
|  | * store target_id in the bottom 16-bits of the second DWORD of the | 
|  | * structures.  The event-related structures were added in version | 
|  | * 1.8, and so there is no prior version with which to maintain | 
|  | * compatibility. | 
|  | */ | 
|  | typedef struct { | 
|  | CARD8 reqType; | 
|  | CARD8 nvReqType; | 
|  | CARD16 length B16; | 
|  | CARD16 target_type B16; /* Don't swap these */ | 
|  | CARD16 target_id B16; | 
|  | CARD16 notifyType B16; | 
|  | CARD16 onoff B16; | 
|  | } xnvCtrlSelectTargetNotifyReq; | 
|  | #define sz_xnvCtrlSelectTargetNotifyReq 12 | 
|  |  | 
|  | typedef struct { | 
|  | union { | 
|  | struct { | 
|  | BYTE type; | 
|  | BYTE detail; | 
|  | CARD16 sequenceNumber B16; | 
|  | } u; | 
|  | struct { | 
|  | BYTE type; | 
|  | BYTE detail; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 time B32; | 
|  | CARD16 target_type B16; /* Don't swap these */ | 
|  | CARD16 target_id B16; | 
|  | CARD32 display_mask B32; | 
|  | CARD32 attribute B32; | 
|  | CARD32 value B32; | 
|  | CARD32 pad0 B32; | 
|  | CARD32 pad1 B32; | 
|  | } attribute_changed; | 
|  | struct { | 
|  | BYTE type; | 
|  | BYTE detail; | 
|  | CARD16 sequenceNumber B16; | 
|  | CARD32 time B32; | 
|  | CARD16 target_type B16; /* Don't swap these */ | 
|  | CARD16 target_id B16; | 
|  | CARD32 display_mask B32; | 
|  | CARD32 attribute B32; | 
|  | CARD32 value B32; | 
|  | CARD8 availability; | 
|  | CARD8 pad0; | 
|  | CARD16 pad1 B16; | 
|  | CARD32 pad2 B32; | 
|  | } availability_changed; | 
|  | } u; | 
|  | } xnvctrlEventTarget; | 
|  |  | 
|  |  | 
|  | #endif /* __NVCONTROL_H */ |