123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617 |
- /*
- * 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 */
|