00001 /* 00002 * Copyright (c) 2008 NVIDIA, Corporation 00003 * 00004 * Permission is hereby granted, free of charge, to any person obtaining a copy 00005 * of this software and associated documentation files (the "Software"), to deal 00006 * in the Software without restriction, including without limitation the rights 00007 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00008 * copies of the Software, and to permit persons to whom the Software is 00009 * furnished to do so, subject to the following conditions: 00010 * 00011 * The above copyright notice and this permission notice (including the next 00012 * paragraph) shall be included in all copies or substantial portions of the 00013 * Software. 00014 * 00015 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00016 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00017 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00018 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00019 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00020 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 00021 * SOFTWARE. 00022 * 00023 * 00024 * NV-CONTROL Protocol Version History 00025 * 00026 * 1.0 - 1.5 NVIDIA Internal development versions 00027 * 1.6 Initial public version 00028 * 1.7 Added QueryBinaryData request 00029 * 1.8 Added TargetTypes 00030 * 1.9 Added QueryTargetCount request 00031 * 1.10 Fixed target type/id byte ordering for compatibility with 00032 * pre-1.8 NV-CONTROL clients 00033 * 1.11 NVIDIA Internal development version 00034 * 1.12 Added StringOperation request 00035 * 1.13 NVIDIA Internal development version 00036 * 1.14 Fixed an NV_CTRL_BINARY_DATA_MODELINES double scan modeline 00037 * reporting bug (vsyncstart, vsyncend, and vtotal were incorrectly 00038 * doubled) 00039 * 1.15 Added AVAILABILITY_TARGET_ATTRIBUTE_CHANGED_EVENT 00040 * 1.16 Added TARGET_STRING_ATTRIBUTE_CHANGED_EVENT 00041 * 1.17 Added TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT 00042 * 1.18 Updated QueryTargetCount to return a count of 0, rather than 00043 * BadMatch, if an unknown TargetType is specified 00044 */ 00045 00046 #ifndef __NVCONTROL_H 00047 #define __NVCONTROL_H 00048 00049 #define NV_CONTROL_ERRORS 0 00050 #define NV_CONTROL_EVENTS 5 00051 #define NV_CONTROL_NAME "NV-CONTROL" 00052 00053 #define NV_CONTROL_MAJOR 1 00054 #define NV_CONTROL_MINOR 18 00055 00056 #define X_nvCtrlQueryExtension 0 00057 #define X_nvCtrlIsNv 1 00058 #define X_nvCtrlQueryAttribute 2 00059 #define X_nvCtrlSetAttribute 3 00060 #define X_nvCtrlQueryStringAttribute 4 00061 #define X_nvCtrlQueryValidAttributeValues 5 00062 #define X_nvCtrlSelectNotify 6 00063 #define X_nvCtrlSetGvoColorConversion_deprecated 7 00064 #define X_nvCtrlQueryGvoColorConversion_deprecated 8 00065 #define X_nvCtrlSetStringAttribute 9 00066 /* STUB X_nvCtrlQueryDDCCILutSize 10 */ 00067 /* STUB X_nvCtrlQueryDDCCISinglePointLutOperation 11 */ 00068 /* STUB X_nvCtrlSetDDCCISinglePointLutOperation 12 */ 00069 /* STUB X_nvCtrlQueryDDCCIBlockLutOperation 13 */ 00070 /* STUB X_nvCtrlSetDDCCIBlockLutOperation 14 */ 00071 /* STUB X_nvCtrlSetDDCCIRemoteProcedureCall 15 */ 00072 /* STUB X_nvCtrlQueryDDCCIDisplayControllerType 16 */ 00073 /* STUB X_nvCtrlQueryDDCCICapabilities 17 */ 00074 /* STUB X_nvCtrlQueryDDCCITimingReport 18 */ 00075 #define X_nvCtrlSetAttributeAndGetStatus 19 00076 #define X_nvCtrlQueryBinaryData 20 00077 #define X_nvCtrlSetGvoColorConversion 21 00078 #define X_nvCtrlQueryGvoColorConversion 22 00079 #define X_nvCtrlSelectTargetNotify 23 00080 #define X_nvCtrlQueryTargetCount 24 00081 #define X_nvCtrlStringOperation 25 00082 #define X_nvCtrlLastRequest (X_nvCtrlStringOperation + 1) 00083 00084 00085 /* Define 32 bit floats */ 00086 typedef float FLOAT32; 00087 #ifndef F32 00088 #define F32 00089 #endif 00090 00091 00092 typedef struct { 00093 CARD8 reqType; 00094 CARD8 nvReqType; 00095 CARD16 length B16; 00096 } xnvCtrlQueryExtensionReq; 00097 #define sz_xnvCtrlQueryExtensionReq 4 00098 00099 typedef struct { 00100 BYTE type; /* X_Reply */ 00101 CARD8 padb1; 00102 CARD16 sequenceNumber B16; 00103 CARD32 length B32; 00104 CARD16 major B16; 00105 CARD16 minor B16; 00106 CARD32 padl4 B32; 00107 CARD32 padl5 B32; 00108 CARD32 padl6 B32; 00109 CARD32 padl7 B32; 00110 CARD32 padl8 B32; 00111 } xnvCtrlQueryExtensionReply; 00112 #define sz_xnvCtrlQueryExtensionReply 32 00113 00114 typedef struct { 00115 CARD8 reqType; 00116 CARD8 nvReqType; 00117 CARD16 length B16; 00118 CARD32 screen B32; 00119 } xnvCtrlIsNvReq; 00120 #define sz_xnvCtrlIsNvReq 8 00121 00122 typedef struct { 00123 BYTE type; /* X_Reply */ 00124 CARD8 padb1; 00125 CARD16 sequenceNumber B16; 00126 CARD32 length B32; 00127 CARD32 isnv B32; 00128 CARD32 padl4 B32; 00129 CARD32 padl5 B32; 00130 CARD32 padl6 B32; 00131 CARD32 padl7 B32; 00132 CARD32 padl8 B32; 00133 } xnvCtrlIsNvReply; 00134 #define sz_xnvCtrlIsNvReply 32 00135 00136 typedef struct { 00137 CARD8 reqType; 00138 CARD8 nvReqType; 00139 CARD16 length B16; 00140 CARD32 target_type B32; 00141 } xnvCtrlQueryTargetCountReq; 00142 #define sz_xnvCtrlQueryTargetCountReq 8 00143 00144 typedef struct { 00145 BYTE type; /* X_Reply */ 00146 CARD8 padb1; 00147 CARD16 sequenceNumber B16; 00148 CARD32 length B32; 00149 CARD32 count B32; 00150 CARD32 padl4 B32; 00151 CARD32 padl5 B32; 00152 CARD32 padl6 B32; 00153 CARD32 padl7 B32; 00154 CARD32 padl8 B32; 00155 } xnvCtrlQueryTargetCountReply; 00156 #define sz_xnvCtrlQueryTargetCountReply 32 00157 00158 typedef struct { 00159 CARD8 reqType; 00160 CARD8 nvReqType; 00161 CARD16 length B16; 00162 CARD16 target_id B16; /* X screen number or GPU number */ 00163 CARD16 target_type B16; /* X screen or GPU */ 00164 CARD32 display_mask B32; 00165 CARD32 attribute B32; 00166 } xnvCtrlQueryAttributeReq; 00167 #define sz_xnvCtrlQueryAttributeReq 16 00168 00169 typedef struct { 00170 BYTE type; 00171 BYTE pad0; 00172 CARD16 sequenceNumber B16; 00173 CARD32 length B32; 00174 CARD32 flags B32; 00175 INT32 value B32; 00176 CARD32 pad4 B32; 00177 CARD32 pad5 B32; 00178 CARD32 pad6 B32; 00179 CARD32 pad7 B32; 00180 } xnvCtrlQueryAttributeReply; 00181 #define sz_xnvCtrlQueryAttributeReply 32 00182 00183 typedef struct { 00184 CARD8 reqType; 00185 CARD8 nvReqType; 00186 CARD16 length B16; 00187 CARD16 target_id B16; 00188 CARD16 target_type B16; 00189 CARD32 display_mask B32; 00190 CARD32 attribute B32; 00191 INT32 value B32; 00192 } xnvCtrlSetAttributeReq; 00193 #define sz_xnvCtrlSetAttributeReq 20 00194 00195 typedef struct { 00196 CARD8 reqType; 00197 CARD8 nvReqType; 00198 CARD16 length B16; 00199 CARD32 screen B32; 00200 CARD32 display_mask B32; 00201 CARD32 attribute B32; 00202 INT32 value B32; 00203 } xnvCtrlSetAttributeAndGetStatusReq; 00204 #define sz_xnvCtrlSetAttributeAndGetStatusReq 20 00205 00206 typedef struct { 00207 BYTE type; 00208 BYTE pad0; 00209 CARD16 sequenceNumber B16; 00210 CARD32 length B32; 00211 CARD32 flags B32; 00212 CARD32 pad3 B32; 00213 CARD32 pad4 B32; 00214 CARD32 pad5 B32; 00215 CARD32 pad6 B32; 00216 CARD32 pad7 B32; 00217 } xnvCtrlSetAttributeAndGetStatusReply; 00218 #define sz_xnvCtrlSetAttributeAndGetStatusReply 32 00219 00220 typedef struct { 00221 CARD8 reqType; 00222 CARD8 nvReqType; 00223 CARD16 length B16; 00224 CARD16 target_id B16; /* X screen number or GPU number */ 00225 CARD16 target_type B16; /* X screen or GPU */ 00226 CARD32 display_mask B32; 00227 CARD32 attribute B32; 00228 } xnvCtrlQueryStringAttributeReq; 00229 #define sz_xnvCtrlQueryStringAttributeReq 16 00230 00231 typedef struct { 00232 BYTE type; 00233 BYTE pad0; 00234 CARD16 sequenceNumber B16; 00235 CARD32 length B32; 00236 CARD32 flags B32; 00237 CARD32 n B32; /* Length of string */ 00238 CARD32 pad4 B32; 00239 CARD32 pad5 B32; 00240 CARD32 pad6 B32; 00241 CARD32 pad7 B32; 00242 } xnvCtrlQueryStringAttributeReply; 00243 #define sz_xnvCtrlQueryStringAttributeReply 32 00244 00245 00246 typedef struct { 00247 CARD8 reqType; 00248 CARD8 nvReqType; 00249 CARD16 length B16; 00250 CARD32 screen B32; 00251 CARD32 display_mask B32; 00252 CARD32 attribute B32; 00253 CARD32 num_bytes B32; 00254 } xnvCtrlSetStringAttributeReq; 00255 #define sz_xnvCtrlSetStringAttributeReq 20 00256 00257 typedef struct { 00258 BYTE type; 00259 BYTE pad0; 00260 CARD16 sequenceNumber B16; 00261 CARD32 length B32; 00262 CARD32 flags B32; 00263 CARD32 pad3 B32; 00264 CARD32 pad4 B32; 00265 CARD32 pad5 B32; 00266 CARD32 pad6 B32; 00267 CARD32 pad7 B32; 00268 } xnvCtrlSetStringAttributeReply; 00269 #define sz_xnvCtrlSetStringAttributeReply 32 00270 00271 typedef struct { 00272 CARD8 reqType; 00273 CARD8 nvReqType; 00274 CARD16 length B16; 00275 CARD16 target_id B16; /* X screen number or GPU number */ 00276 CARD16 target_type B16; /* X screen or GPU */ 00277 CARD32 display_mask B32; 00278 CARD32 attribute B32; 00279 } xnvCtrlQueryValidAttributeValuesReq; 00280 #define sz_xnvCtrlQueryValidAttributeValuesReq 16 00281 00282 typedef struct { 00283 BYTE type; 00284 BYTE pad0; 00285 CARD16 sequenceNumber B16; 00286 CARD32 length B32; 00287 CARD32 flags B32; 00288 INT32 attr_type B32; 00289 INT32 min B32; 00290 INT32 max B32; 00291 CARD32 bits B32; 00292 CARD32 perms B32; 00293 } xnvCtrlQueryValidAttributeValuesReply; 00294 #define sz_xnvCtrlQueryValidAttributeValuesReply 32 00295 00296 /* Set GVO Color Conversion request (deprecated) */ 00297 typedef struct { 00298 CARD8 reqType; 00299 CARD8 nvReqType; 00300 CARD16 length B16; 00301 CARD32 screen B32; 00302 FLOAT32 row1_col1 F32; 00303 FLOAT32 row1_col2 F32; 00304 FLOAT32 row1_col3 F32; 00305 FLOAT32 row1_col4 F32; 00306 FLOAT32 row2_col1 F32; 00307 FLOAT32 row2_col2 F32; 00308 FLOAT32 row2_col3 F32; 00309 FLOAT32 row2_col4 F32; 00310 FLOAT32 row3_col1 F32; 00311 FLOAT32 row3_col2 F32; 00312 FLOAT32 row3_col3 F32; 00313 FLOAT32 row3_col4 F32; 00314 } xnvCtrlSetGvoColorConversionDeprecatedReq; 00315 #define sz_xnvCtrlSetGvoColorConversionDeprecatedReq 56 00316 00317 /* Query GVO Color Conversion request (deprecated) */ 00318 typedef struct { 00319 CARD8 reqType; 00320 CARD8 nvReqType; 00321 CARD16 length B16; 00322 CARD32 screen B32; 00323 } xnvCtrlQueryGvoColorConversionDeprecatedReq; 00324 #define sz_xnvCtrlQueryGvoColorConversionDeprecatedReq 8 00325 00326 /* Query GVO Color Conversion reply (deprecated) */ 00327 typedef struct { 00328 BYTE type; /* X_Reply */ 00329 BYTE pad0; 00330 CARD16 sequenceNumber B16; 00331 CARD32 length B32; 00332 CARD32 pad3 B32; 00333 CARD32 pad4 B32; 00334 CARD32 pad5 B32; 00335 CARD32 pad6 B32; 00336 CARD32 pad7 B32; 00337 CARD32 pad8 B32; 00338 } xnvCtrlQueryGvoColorConversionDeprecatedReply; 00339 #define sz_xnvCtrlQueryGvoColorConversionDeprecatedReply 32 00340 00341 00342 /* Set GVO Color Conversion request */ 00343 typedef struct { 00344 CARD8 reqType; 00345 CARD8 nvReqType; 00346 CARD16 length B16; 00347 CARD32 screen B32; 00348 00349 FLOAT32 cscMatrix_y_r F32; 00350 FLOAT32 cscMatrix_y_g F32; 00351 FLOAT32 cscMatrix_y_b F32; 00352 00353 FLOAT32 cscMatrix_cr_r F32; 00354 FLOAT32 cscMatrix_cr_g F32; 00355 FLOAT32 cscMatrix_cr_b F32; 00356 00357 FLOAT32 cscMatrix_cb_r F32; 00358 FLOAT32 cscMatrix_cb_g F32; 00359 FLOAT32 cscMatrix_cb_b F32; 00360 00361 FLOAT32 cscOffset_y F32; 00362 FLOAT32 cscOffset_cr F32; 00363 FLOAT32 cscOffset_cb F32; 00364 00365 FLOAT32 cscScale_y F32; 00366 FLOAT32 cscScale_cr F32; 00367 FLOAT32 cscScale_cb F32; 00368 00369 } xnvCtrlSetGvoColorConversionReq; 00370 #define sz_xnvCtrlSetGvoColorConversionReq 68 00371 00372 /* Query GVO Color Conversion request */ 00373 typedef struct { 00374 CARD8 reqType; 00375 CARD8 nvReqType; 00376 CARD16 length B16; 00377 CARD32 screen B32; 00378 } xnvCtrlQueryGvoColorConversionReq; 00379 #define sz_xnvCtrlQueryGvoColorConversionReq 8 00380 00381 /* Query GVO Color Conversion reply */ 00382 typedef struct { 00383 BYTE type; /* X_Reply */ 00384 BYTE pad0; 00385 CARD16 sequenceNumber B16; 00386 CARD32 length B32; 00387 CARD32 pad3 B32; 00388 CARD32 pad4 B32; 00389 CARD32 pad5 B32; 00390 CARD32 pad6 B32; 00391 CARD32 pad7 B32; 00392 CARD32 pad8 B32; 00393 } xnvCtrlQueryGvoColorConversionReply; 00394 #define sz_xnvCtrlQueryGvoColorConversionReply 32 00395 00396 typedef struct { 00397 CARD8 reqType; 00398 CARD8 nvReqType; 00399 CARD16 length B16; 00400 CARD16 target_id B16; /* X screen number or GPU number */ 00401 CARD16 target_type B16; /* X screen or GPU */ 00402 CARD32 display_mask B32; 00403 CARD32 attribute B32; 00404 } xnvCtrlQueryBinaryDataReq; 00405 #define sz_xnvCtrlQueryBinaryDataReq 16 00406 00407 typedef struct { 00408 BYTE type; 00409 BYTE pad0; 00410 CARD16 sequenceNumber B16; 00411 CARD32 length B32; 00412 CARD32 flags B32; 00413 CARD32 n B32; 00414 CARD32 pad4 B32; 00415 CARD32 pad5 B32; 00416 CARD32 pad6 B32; 00417 CARD32 pad7 B32; 00418 } xnvCtrlQueryBinaryDataReply; 00419 #define sz_xnvCtrlQueryBinaryDataReply 32 00420 00421 00422 typedef struct { 00423 CARD8 reqType; 00424 CARD8 nvReqType; 00425 CARD16 length B16; 00426 CARD32 screen B32; 00427 CARD16 notifyType B16; 00428 CARD16 onoff B16; 00429 } xnvCtrlSelectNotifyReq; 00430 #define sz_xnvCtrlSelectNotifyReq 12 00431 00432 typedef struct { 00433 CARD8 reqType; 00434 CARD8 nvReqType; 00435 CARD16 length B16; 00436 CARD16 target_id B16; /* X screen number or GPU number */ 00437 CARD16 target_type B16; /* X screen or GPU */ 00438 CARD32 display_mask B32; 00439 CARD32 attribute B32; 00440 CARD32 num_bytes B32; /* Length of string */ 00441 } xnvCtrlStringOperationReq; 00442 #define sz_xnvCtrlStringOperationReq 20 00443 00444 typedef struct { 00445 BYTE type; /* X_Reply */ 00446 CARD8 padb1; 00447 CARD16 sequenceNumber B16; 00448 CARD32 length B32; 00449 CARD32 ret B32; 00450 CARD32 num_bytes B32; /* Length of string */ 00451 CARD32 padl4 B32; 00452 CARD32 padl5 B32; 00453 CARD32 padl6 B32; 00454 CARD32 padl7 B32; 00455 } xnvCtrlStringOperationReply; 00456 #define sz_xnvCtrlStringOperationReply 32 00457 00458 typedef struct { 00459 union { 00460 struct { 00461 BYTE type; 00462 BYTE detail; 00463 CARD16 sequenceNumber B16; 00464 } u; 00465 struct { 00466 BYTE type; 00467 BYTE detail; 00468 CARD16 sequenceNumber B16; 00469 CARD32 time B32; 00470 CARD32 screen B32; 00471 CARD32 display_mask B32; 00472 CARD32 attribute B32; 00473 CARD32 value B32; 00474 CARD32 pad0 B32; 00475 CARD32 pad1 B32; 00476 } attribute_changed; 00477 } u; 00478 } xnvctrlEvent; 00479 00480 00481 /* 00482 * Leave target_type before target_id for the 00483 * xnvCtrlSelectTargetNotifyReq and xnvctrlEventTarget 00484 * structures, even though other request protocol structures 00485 * store target_id in the bottom 16-bits of the second DWORD of the 00486 * structures. The event-related structures were added in version 00487 * 1.8, and so there is no prior version with which to maintain 00488 * compatibility. 00489 */ 00490 typedef struct { 00491 CARD8 reqType; 00492 CARD8 nvReqType; 00493 CARD16 length B16; 00494 CARD16 target_type B16; /* Don't swap these */ 00495 CARD16 target_id B16; 00496 CARD16 notifyType B16; 00497 CARD16 onoff B16; 00498 } xnvCtrlSelectTargetNotifyReq; 00499 #define sz_xnvCtrlSelectTargetNotifyReq 12 00500 00501 typedef struct { 00502 union { 00503 struct { 00504 BYTE type; 00505 BYTE detail; 00506 CARD16 sequenceNumber B16; 00507 } u; 00508 struct { 00509 BYTE type; 00510 BYTE detail; 00511 CARD16 sequenceNumber B16; 00512 CARD32 time B32; 00513 CARD16 target_type B16; /* Don't swap these */ 00514 CARD16 target_id B16; 00515 CARD32 display_mask B32; 00516 CARD32 attribute B32; 00517 CARD32 value B32; 00518 CARD32 pad0 B32; 00519 CARD32 pad1 B32; 00520 } attribute_changed; 00521 struct { 00522 BYTE type; 00523 BYTE detail; 00524 CARD16 sequenceNumber B16; 00525 CARD32 time B32; 00526 CARD16 target_type B16; /* Don't swap these */ 00527 CARD16 target_id B16; 00528 CARD32 display_mask B32; 00529 CARD32 attribute B32; 00530 CARD32 value B32; 00531 CARD8 availability; 00532 CARD8 pad0; 00533 CARD16 pad1 B16; 00534 CARD32 pad2 B32; 00535 } availability_changed; 00536 } u; 00537 } xnvctrlEventTarget; 00538 00539 00540 #endif /* __NVCONTROL_H */
1.6.3