Path: blob/main_old/src/third_party/libXNVCtrl/nv_control.h
1693 views
/*1* Copyright (c) 2008 NVIDIA, Corporation2*3* Permission is hereby granted, free of charge, to any person obtaining a copy4* of this software and associated documentation files (the "Software"), to deal5* in the Software without restriction, including without limitation the rights6* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell7* copies of the Software, and to permit persons to whom the Software is8* furnished to do so, subject to the following conditions:9*10* The above copyright notice and this permission notice (including the next11* paragraph) shall be included in all copies or substantial portions of the12* Software.13*14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR15* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,16* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE17* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER18* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,19* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE20* SOFTWARE.21*22*23* NV-CONTROL Protocol Version History24*25* 1.0 - 1.5 NVIDIA Internal development versions26* 1.6 Initial public version27* 1.7 Added QueryBinaryData request28* 1.8 Added TargetTypes29* 1.9 Added QueryTargetCount request30* 1.10 Fixed target type/id byte ordering for compatibility with31* pre-1.8 NV-CONTROL clients32* 1.11 NVIDIA Internal development version33* 1.12 Added StringOperation request34* 1.13 NVIDIA Internal development version35* 1.14 Fixed an NV_CTRL_BINARY_DATA_MODELINES double scan modeline36* reporting bug (vsyncstart, vsyncend, and vtotal were incorrectly37* doubled)38* 1.15 Added AVAILABILITY_TARGET_ATTRIBUTE_CHANGED_EVENT39* 1.16 Added TARGET_STRING_ATTRIBUTE_CHANGED_EVENT40* 1.17 Added TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT41* 1.18 Updated QueryTargetCount to return a count of 0, rather than42* BadMatch, if an unknown TargetType is specified43* 1.19 Added TargetType support for SetAttributeAndGetStatus and44* SetStringAttribute requests45* 1.20 Added COOLER TargetType46* 1.21 Added initial 64-bit integer attribute support (read-only)47* 1.22 Added X_nvCtrlQueryValidStringAttributeValues to check48* string attribute permissions.49* 1.23 Added SENSOR TargetType50* 1.24 Fixed a bug where SLI_MOSAIC_MODE_AVAILABLE attribute would51* report false positives via the GPU and X screen target types52* 1.25 Added 3D_VISION_PRO_TRANSCEIVER TargetType53* 1.26 Added XNVCTRLQueryXXXAttributePermissions.54* 1.27 Added DISPLAY TargetType55* 1.28 Added NV_CTRL_CURRENT_METAMODE_ID: clients should use this56* attribute to switch MetaModes, rather than pass the MetaMode ID57* through the RRSetScreenConfig protocol request.58*/5960#ifndef __NVCONTROL_H61#define __NVCONTROL_H6263#define NV_CONTROL_ERRORS 064#define NV_CONTROL_EVENTS 565#define NV_CONTROL_NAME "NV-CONTROL"6667#define NV_CONTROL_MAJOR 168#define NV_CONTROL_MINOR 286970#define X_nvCtrlQueryExtension 071#define X_nvCtrlIsNv 172#define X_nvCtrlQueryAttribute 273#define X_nvCtrlSetAttribute 374#define X_nvCtrlQueryStringAttribute 475#define X_nvCtrlQueryValidAttributeValues 576#define X_nvCtrlSelectNotify 677#define X_nvCtrlSetGvoColorConversionDeprecated 778#define X_nvCtrlQueryGvoColorConversionDeprecated 879#define X_nvCtrlSetStringAttribute 980/* STUB X_nvCtrlQueryDDCCILutSize 10 */81/* STUB X_nvCtrlQueryDDCCISinglePointLutOperation 11 */82/* STUB X_nvCtrlSetDDCCISinglePointLutOperation 12 */83/* STUB X_nvCtrlQueryDDCCIBlockLutOperation 13 */84/* STUB X_nvCtrlSetDDCCIBlockLutOperation 14 */85/* STUB X_nvCtrlSetDDCCIRemoteProcedureCall 15 */86/* STUB X_nvCtrlQueryDDCCIDisplayControllerType 16 */87/* STUB X_nvCtrlQueryDDCCICapabilities 17 */88/* STUB X_nvCtrlQueryDDCCITimingReport 18 */89#define X_nvCtrlSetAttributeAndGetStatus 1990#define X_nvCtrlQueryBinaryData 2091#define X_nvCtrlSetGvoColorConversion 2192#define X_nvCtrlQueryGvoColorConversion 2293#define X_nvCtrlSelectTargetNotify 2394#define X_nvCtrlQueryTargetCount 2495#define X_nvCtrlStringOperation 2596#define X_nvCtrlQueryValidAttributeValues64 2697#define X_nvCtrlQueryAttribute64 2798#define X_nvCtrlQueryValidStringAttributeValues 2899#define X_nvCtrlQueryAttributePermissions 29100#define X_nvCtrlQueryStringAttributePermissions 30101#define X_nvCtrlQueryBinaryDataAttributePermissions 31102#define X_nvCtrlQueryStringOperationAttributePermissions 32103104#define X_nvCtrlLastRequest (X_nvCtrlQueryStringOperationAttributePermissions + 1)105106/* Define 32 bit floats */107typedef float FLOAT32;108#ifndef F32109# define F32110#endif111112typedef struct113{114CARD8 reqType;115CARD8 nvReqType;116CARD16 length B16;117} xnvCtrlQueryExtensionReq;118#define sz_xnvCtrlQueryExtensionReq 4119120typedef struct121{122BYTE type; /* X_Reply */123CARD8 padb1;124CARD16 sequenceNumber B16;125CARD32 length B32;126CARD16 major B16;127CARD16 minor B16;128CARD32 padl4 B32;129CARD32 padl5 B32;130CARD32 padl6 B32;131CARD32 padl7 B32;132CARD32 padl8 B32;133} xnvCtrlQueryExtensionReply;134#define sz_xnvCtrlQueryExtensionReply 32135136typedef struct137{138CARD8 reqType;139CARD8 nvReqType;140CARD16 length B16;141CARD32 screen B32;142} xnvCtrlIsNvReq;143#define sz_xnvCtrlIsNvReq 8144145typedef struct146{147BYTE type; /* X_Reply */148CARD8 padb1;149CARD16 sequenceNumber B16;150CARD32 length B32;151CARD32 isnv B32;152CARD32 padl4 B32;153CARD32 padl5 B32;154CARD32 padl6 B32;155CARD32 padl7 B32;156CARD32 padl8 B32;157} xnvCtrlIsNvReply;158#define sz_xnvCtrlIsNvReply 32159160typedef struct161{162CARD8 reqType;163CARD8 nvReqType;164CARD16 length B16;165CARD32 target_type B32;166} xnvCtrlQueryTargetCountReq;167#define sz_xnvCtrlQueryTargetCountReq 8168169typedef struct170{171BYTE type; /* X_Reply */172CARD8 padb1;173CARD16 sequenceNumber B16;174CARD32 length B32;175CARD32 count B32;176CARD32 padl4 B32;177CARD32 padl5 B32;178CARD32 padl6 B32;179CARD32 padl7 B32;180CARD32 padl8 B32;181} xnvCtrlQueryTargetCountReply;182#define sz_xnvCtrlQueryTargetCountReply 32183184typedef struct185{186CARD8 reqType;187CARD8 nvReqType;188CARD16 length B16;189CARD16 target_id B16; /* X screen number or GPU number */190CARD16 target_type B16; /* X screen or GPU */191CARD32 display_mask B32;192CARD32 attribute B32;193} xnvCtrlQueryAttributeReq;194#define sz_xnvCtrlQueryAttributeReq 16195196typedef struct197{198BYTE type;199BYTE pad0;200CARD16 sequenceNumber B16;201CARD32 length B32;202CARD32 flags B32;203INT32 value B32;204CARD32 pad4 B32;205CARD32 pad5 B32;206CARD32 pad6 B32;207CARD32 pad7 B32;208} xnvCtrlQueryAttributeReply;209#define sz_xnvCtrlQueryAttributeReply 32210211typedef struct212{213BYTE type;214BYTE pad0;215CARD16 sequenceNumber B16;216CARD32 length B32;217CARD32 flags B32;218CARD32 pad3 B32;219int64_t value_64;220CARD32 pad6 B32;221CARD32 pad7 B32;222} xnvCtrlQueryAttribute64Reply;223#define sz_xnvCtrlQueryAttribute64Reply 32224225typedef struct226{227CARD8 reqType;228CARD8 nvReqType;229CARD16 length B16;230CARD16 target_id B16;231CARD16 target_type B16;232CARD32 display_mask B32;233CARD32 attribute B32;234INT32 value B32;235} xnvCtrlSetAttributeReq;236#define sz_xnvCtrlSetAttributeReq 20237238typedef struct239{240CARD8 reqType;241CARD8 nvReqType;242CARD16 length B16;243CARD16 target_id B16;244CARD16 target_type B16;245CARD32 display_mask B32;246CARD32 attribute B32;247INT32 value B32;248} xnvCtrlSetAttributeAndGetStatusReq;249#define sz_xnvCtrlSetAttributeAndGetStatusReq 20250251typedef struct252{253BYTE type;254BYTE pad0;255CARD16 sequenceNumber B16;256CARD32 length B32;257CARD32 flags B32;258CARD32 pad3 B32;259CARD32 pad4 B32;260CARD32 pad5 B32;261CARD32 pad6 B32;262CARD32 pad7 B32;263} xnvCtrlSetAttributeAndGetStatusReply;264#define sz_xnvCtrlSetAttributeAndGetStatusReply 32265266typedef struct267{268CARD8 reqType;269CARD8 nvReqType;270CARD16 length B16;271CARD16 target_id B16; /* X screen number or GPU number */272CARD16 target_type B16; /* X screen or GPU */273CARD32 display_mask B32;274CARD32 attribute B32;275} xnvCtrlQueryStringAttributeReq;276#define sz_xnvCtrlQueryStringAttributeReq 16277278typedef struct279{280BYTE type;281BYTE pad0;282CARD16 sequenceNumber B16;283CARD32 length B32;284CARD32 flags B32;285CARD32 n B32; /* Length of string */286CARD32 pad4 B32;287CARD32 pad5 B32;288CARD32 pad6 B32;289CARD32 pad7 B32;290} xnvCtrlQueryStringAttributeReply;291#define sz_xnvCtrlQueryStringAttributeReply 32292293typedef struct294{295CARD8 reqType;296CARD8 nvReqType;297CARD16 length B16;298CARD16 target_id B16;299CARD16 target_type B16;300CARD32 display_mask B32;301CARD32 attribute B32;302CARD32 num_bytes B32;303} xnvCtrlSetStringAttributeReq;304#define sz_xnvCtrlSetStringAttributeReq 20305306typedef struct307{308BYTE type;309BYTE pad0;310CARD16 sequenceNumber B16;311CARD32 length B32;312CARD32 flags B32;313CARD32 pad3 B32;314CARD32 pad4 B32;315CARD32 pad5 B32;316CARD32 pad6 B32;317CARD32 pad7 B32;318} xnvCtrlSetStringAttributeReply;319#define sz_xnvCtrlSetStringAttributeReply 32320321typedef struct322{323CARD8 reqType;324CARD8 nvReqType;325CARD16 length B16;326CARD16 target_id B16; /* X screen number or GPU number */327CARD16 target_type B16; /* X screen or GPU */328CARD32 display_mask B32;329CARD32 attribute B32;330} xnvCtrlQueryValidAttributeValuesReq;331#define sz_xnvCtrlQueryValidAttributeValuesReq 16332333typedef struct334{335BYTE type;336BYTE pad0;337CARD16 sequenceNumber B16;338CARD32 length B32;339CARD32 flags B32;340INT32 attr_type B32;341INT32 min B32;342INT32 max B32;343CARD32 bits B32;344CARD32 perms B32;345} xnvCtrlQueryValidAttributeValuesReply;346#define sz_xnvCtrlQueryValidAttributeValuesReply 32347348typedef struct349{350BYTE type;351BYTE pad0;352CARD16 sequenceNumber B16;353CARD32 length B32;354CARD32 flags B32;355INT32 attr_type B32;356int64_t min_64;357int64_t max_64;358CARD64 bits_64;359CARD32 perms B32;360CARD32 pad1 B32;361} xnvCtrlQueryValidAttributeValues64Reply;362#define sz_xnvCtrlQueryValidAttributeValues64Reply 48363#define sz_xnvCtrlQueryValidAttributeValues64Reply_extra ((48 - 32) >> 2)364365typedef struct366{367CARD8 reqType;368CARD8 nvReqType;369CARD16 length B16;370CARD32 attribute B32;371} xnvCtrlQueryAttributePermissionsReq;372#define sz_xnvCtrlQueryAttributePermissionsReq 8373374typedef struct375{376BYTE type;377BYTE pad0;378CARD16 sequenceNumber B16;379CARD32 length B32;380CARD32 flags B32;381INT32 attr_type B32;382CARD32 perms B32;383CARD32 pad5 B32;384CARD32 pad6 B32;385CARD32 pad7 B32;386CARD32 pad8 B32;387} xnvCtrlQueryAttributePermissionsReply;388#define sz_xnvCtrlQueryAttributePermissionsReply 32389390/* Set GVO Color Conversion request (deprecated) */391typedef struct392{393CARD8 reqType;394CARD8 nvReqType;395CARD16 length B16;396CARD32 screen B32;397FLOAT32 row1_col1 F32;398FLOAT32 row1_col2 F32;399FLOAT32 row1_col3 F32;400FLOAT32 row1_col4 F32;401FLOAT32 row2_col1 F32;402FLOAT32 row2_col2 F32;403FLOAT32 row2_col3 F32;404FLOAT32 row2_col4 F32;405FLOAT32 row3_col1 F32;406FLOAT32 row3_col2 F32;407FLOAT32 row3_col3 F32;408FLOAT32 row3_col4 F32;409} xnvCtrlSetGvoColorConversionDeprecatedReq;410#define sz_xnvCtrlSetGvoColorConversionDeprecatedReq 56411412/* Query GVO Color Conversion request (deprecated) */413typedef struct414{415CARD8 reqType;416CARD8 nvReqType;417CARD16 length B16;418CARD32 screen B32;419} xnvCtrlQueryGvoColorConversionDeprecatedReq;420#define sz_xnvCtrlQueryGvoColorConversionDeprecatedReq 8421422/* Query GVO Color Conversion reply (deprecated) */423typedef struct424{425BYTE type; /* X_Reply */426BYTE pad0;427CARD16 sequenceNumber B16;428CARD32 length B32;429CARD32 pad3 B32;430CARD32 pad4 B32;431CARD32 pad5 B32;432CARD32 pad6 B32;433CARD32 pad7 B32;434CARD32 pad8 B32;435} xnvCtrlQueryGvoColorConversionDeprecatedReply;436#define sz_xnvCtrlQueryGvoColorConversionDeprecatedReply 32437438/* Set GVO Color Conversion request */439typedef struct440{441CARD8 reqType;442CARD8 nvReqType;443CARD16 length B16;444CARD32 screen B32;445446FLOAT32 cscMatrix_y_r F32;447FLOAT32 cscMatrix_y_g F32;448FLOAT32 cscMatrix_y_b F32;449450FLOAT32 cscMatrix_cr_r F32;451FLOAT32 cscMatrix_cr_g F32;452FLOAT32 cscMatrix_cr_b F32;453454FLOAT32 cscMatrix_cb_r F32;455FLOAT32 cscMatrix_cb_g F32;456FLOAT32 cscMatrix_cb_b F32;457458FLOAT32 cscOffset_y F32;459FLOAT32 cscOffset_cr F32;460FLOAT32 cscOffset_cb F32;461462FLOAT32 cscScale_y F32;463FLOAT32 cscScale_cr F32;464FLOAT32 cscScale_cb F32;465466} xnvCtrlSetGvoColorConversionReq;467#define sz_xnvCtrlSetGvoColorConversionReq 68468469/* Query GVO Color Conversion request */470typedef struct471{472CARD8 reqType;473CARD8 nvReqType;474CARD16 length B16;475CARD32 screen B32;476} xnvCtrlQueryGvoColorConversionReq;477#define sz_xnvCtrlQueryGvoColorConversionReq 8478479/* Query GVO Color Conversion reply */480typedef struct481{482BYTE type; /* X_Reply */483BYTE pad0;484CARD16 sequenceNumber B16;485CARD32 length B32;486CARD32 pad3 B32;487CARD32 pad4 B32;488CARD32 pad5 B32;489CARD32 pad6 B32;490CARD32 pad7 B32;491CARD32 pad8 B32;492} xnvCtrlQueryGvoColorConversionReply;493#define sz_xnvCtrlQueryGvoColorConversionReply 32494495typedef struct496{497CARD8 reqType;498CARD8 nvReqType;499CARD16 length B16;500CARD16 target_id B16; /* X screen number or GPU number */501CARD16 target_type B16; /* X screen or GPU */502CARD32 display_mask B32;503CARD32 attribute B32;504} xnvCtrlQueryBinaryDataReq;505#define sz_xnvCtrlQueryBinaryDataReq 16506507typedef struct508{509BYTE type;510BYTE pad0;511CARD16 sequenceNumber B16;512CARD32 length B32;513CARD32 flags B32;514CARD32 n B32;515CARD32 pad4 B32;516CARD32 pad5 B32;517CARD32 pad6 B32;518CARD32 pad7 B32;519} xnvCtrlQueryBinaryDataReply;520#define sz_xnvCtrlQueryBinaryDataReply 32521522typedef struct523{524CARD8 reqType;525CARD8 nvReqType;526CARD16 length B16;527CARD32 screen B32;528CARD16 notifyType B16;529CARD16 onoff B16;530} xnvCtrlSelectNotifyReq;531#define sz_xnvCtrlSelectNotifyReq 12532533typedef struct534{535CARD8 reqType;536CARD8 nvReqType;537CARD16 length B16;538CARD16 target_id B16; /* X screen number or GPU number */539CARD16 target_type B16; /* X screen or GPU */540CARD32 display_mask B32;541CARD32 attribute B32;542CARD32 num_bytes B32; /* Length of string */543} xnvCtrlStringOperationReq;544#define sz_xnvCtrlStringOperationReq 20545546typedef struct547{548BYTE type; /* X_Reply */549CARD8 padb1;550CARD16 sequenceNumber B16;551CARD32 length B32;552CARD32 ret B32;553CARD32 num_bytes B32; /* Length of string */554CARD32 padl4 B32;555CARD32 padl5 B32;556CARD32 padl6 B32;557CARD32 padl7 B32;558} xnvCtrlStringOperationReply;559#define sz_xnvCtrlStringOperationReply 32560561typedef struct562{563union564{565struct566{567BYTE type;568BYTE detail;569CARD16 sequenceNumber B16;570} u;571struct572{573BYTE type;574BYTE detail;575CARD16 sequenceNumber B16;576CARD32 time B32;577CARD32 screen B32;578CARD32 display_mask B32;579CARD32 attribute B32;580CARD32 value B32;581CARD32 pad0 B32;582CARD32 pad1 B32;583} attribute_changed;584} u;585} xnvctrlEvent;586587/*588* Leave target_type before target_id for the589* xnvCtrlSelectTargetNotifyReq and xnvctrlEventTarget590* structures, even though other request protocol structures591* store target_id in the bottom 16-bits of the second DWORD of the592* structures. The event-related structures were added in version593* 1.8, and so there is no prior version with which to maintain594* compatibility.595*/596typedef struct597{598CARD8 reqType;599CARD8 nvReqType;600CARD16 length B16;601CARD16 target_type B16; /* Don't swap these */602CARD16 target_id B16;603CARD16 notifyType B16;604CARD16 onoff B16;605} xnvCtrlSelectTargetNotifyReq;606#define sz_xnvCtrlSelectTargetNotifyReq 12607608typedef struct609{610union611{612struct613{614BYTE type;615BYTE detail;616CARD16 sequenceNumber B16;617} u;618struct619{620BYTE type;621BYTE detail;622CARD16 sequenceNumber B16;623CARD32 time B32;624CARD16 target_type B16; /* Don't swap these */625CARD16 target_id B16;626CARD32 display_mask B32;627CARD32 attribute B32;628CARD32 value B32;629CARD32 pad0 B32;630CARD32 pad1 B32;631} attribute_changed;632struct633{634BYTE type;635BYTE detail;636CARD16 sequenceNumber B16;637CARD32 time B32;638CARD16 target_type B16; /* Don't swap these */639CARD16 target_id B16;640CARD32 display_mask B32;641CARD32 attribute B32;642CARD32 value B32;643CARD8 availability;644CARD8 pad0;645CARD16 pad1 B16;646CARD32 pad2 B32;647} availability_changed;648} u;649} xnvctrlEventTarget;650651#endif /* __NVCONTROL_H */652653654