• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2010 NVIDIA, Corporation
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a copy
5  * of this software and associated documentation files (the "Software"), to deal
6  * in the Software without restriction, including without limitation the rights
7  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8  * copies of the Software, and to permit persons to whom the Software is
9  * furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice (including the next
12  * paragraph) shall be included in all copies or substantial portions of the
13  * Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
18  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21  * SOFTWARE.
22  */
23 
24 #ifndef __NVCTRL_H
25 #define __NVCTRL_H
26 
27 #include <stdint.h>
28 
29 /**************************************************************************/
30 
31 /*
32  * Attribute Targets
33  *
34  * Targets define attribute groups.  For example, some attributes are only
35  * valid to set on a GPU, others are only valid when talking about an
36  * X Screen.  Target types are then what is used to identify the target
37  * group of the attribute you wish to set/query.
38  *
39  * Here are the supported target types:
40  */
41 
42 #define NV_CTRL_TARGET_TYPE_X_SCREEN       0
43 #define NV_CTRL_TARGET_TYPE_GPU            1
44 #define NV_CTRL_TARGET_TYPE_FRAMELOCK      2
45 #define NV_CTRL_TARGET_TYPE_VCSC           3 /* Visual Computing System */
46 #define NV_CTRL_TARGET_TYPE_GVI            4
47 #define NV_CTRL_TARGET_TYPE_COOLER         5 /* e.g., fan */
48 #define NV_CTRL_TARGET_TYPE_THERMAL_SENSOR 6
49 #define NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER 7
50 #define NV_CTRL_TARGET_TYPE_DISPLAY        8
51 
52 /**************************************************************************/
53 
54 /*
55  * Attributes
56  *
57  * Some attributes may only be read; some may require a display_mask
58  * argument and others may be valid only for specific target types.
59  * This information is encoded in the "permission" comment after each
60  * attribute #define, and can be queried at run time with
61  * XNVCTRLQueryValidAttributeValues() and/or
62  * XNVCTRLQueryValidTargetAttributeValues()
63  *
64  * Key to Integer Attribute "Permissions":
65  *
66  * R: The attribute is readable (in general, all attributes will be
67  *    readable)
68  *
69  * W: The attribute is writable (attributes may not be writable for
70  *    various reasons: they represent static system information, they
71  *    can only be changed by changing an XF86Config option, etc).
72  *
73  * D: The attribute requires the display mask argument.  The
74  *    attributes NV_CTRL_CONNECTED_DISPLAYS and NV_CTRL_ENABLED_DISPLAYS
75  *    will be a bitmask of what display devices are connected and what
76  *    display devices are enabled for use in X, respectively.  Each bit
77  *    in the bitmask represents a display device; it is these bits which
78  *    should be used as the display_mask when dealing with attributes
79  *    designated with "D" below.  For attributes that do not require the
80  *    display mask, the argument is ignored.
81  *
82  *    Alternatively, NV-CONTROL versions 1.27 and greater allow these
83  *    attributes to be accessed via display target types, in which case
84  *    the display_mask is ignored.
85  *
86  * G: The attribute may be queried using an NV_CTRL_TARGET_TYPE_GPU
87  *    target type via XNVCTRLQueryTargetAttribute().
88  *
89  * F: The attribute may be queried using an NV_CTRL_TARGET_TYPE_FRAMELOCK
90  *    target type via XNVCTRLQueryTargetAttribute().
91  *
92  * X: When Xinerama is enabled, this attribute is kept consistent across
93  *    all Physical X Screens;  assignment of this attribute will be
94  *    broadcast by the NVIDIA X Driver to all X Screens.
95  *
96  * V: The attribute may be queried using an NV_CTRL_TARGET_TYPE_VCSC
97  *    target type via XNVCTRLQueryTargetAttribute().
98  *
99  * I: The attribute may be queried using an NV_CTRL_TARGET_TYPE_GVI target type
100  *    via XNVCTRLQueryTargetAttribute().
101  *
102  * Q: The attribute is a 64-bit integer attribute;  use the 64-bit versions
103  *    of the appropriate query interfaces.
104  *
105  * C: The attribute may be queried using an NV_CTRL_TARGET_TYPE_COOLER target
106  *    type via XNVCTRLQueryTargetAttribute().
107  *
108  * S: The attribute may be queried using an NV_CTRL_TARGET_TYPE_THERMAL_SENSOR
109  *    target type via XNVCTRLQueryTargetAttribute().
110  *
111  * T: The attribute may be queried using an
112  *    NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER target type
113  *    via XNVCTRLQueryTargetAttribute().
114  *
115  * NOTE: Unless mentioned otherwise, all attributes may be queried using
116  *       an NV_CTRL_TARGET_TYPE_X_SCREEN target type via
117  *       XNVCTRLQueryTargetAttribute().
118  */
119 
120 
121 /**************************************************************************/
122 
123 /*
124  * Integer attributes:
125  *
126  * Integer attributes can be queried through the XNVCTRLQueryAttribute() and
127  * XNVCTRLQueryTargetAttribute() function calls.
128  *
129  * Integer attributes can be set through the XNVCTRLSetAttribute() and
130  * XNVCTRLSetTargetAttribute() function calls.
131  *
132  * Unless otherwise noted, all integer attributes can be queried/set
133  * using an NV_CTRL_TARGET_TYPE_X_SCREEN target.  Attributes that cannot
134  * take an NV_CTRL_TARGET_TYPE_X_SCREEN also cannot be queried/set through
135  * XNVCTRLQueryAttribute()/XNVCTRLSetAttribute() (Since these assume
136  * an X Screen target).
137  */
138 
139 
140 /*
141  * NV_CTRL_FLATPANEL_SCALING - not supported
142  */
143 
144 #define NV_CTRL_FLATPANEL_SCALING                               2  /* RWDG */
145 #define NV_CTRL_FLATPANEL_SCALING_DEFAULT                       0
146 #define NV_CTRL_FLATPANEL_SCALING_NATIVE                        1
147 #define NV_CTRL_FLATPANEL_SCALING_SCALED                        2
148 #define NV_CTRL_FLATPANEL_SCALING_CENTERED                      3
149 #define NV_CTRL_FLATPANEL_SCALING_ASPECT_SCALED                 4
150 
151 
152 /*
153  * NV_CTRL_FLATPANEL_DITHERING is deprecated; NV_CTRL_DITHERING should
154  * be used instead.
155  */
156 
157 #define NV_CTRL_FLATPANEL_DITHERING                             3  /* RWDG */
158 #define NV_CTRL_FLATPANEL_DITHERING_DEFAULT                     0
159 #define NV_CTRL_FLATPANEL_DITHERING_ENABLED                     1
160 #define NV_CTRL_FLATPANEL_DITHERING_DISABLED                    2
161 
162 /*
163  * NV_CTRL_DITHERING - the requested dithering configuration;
164  * possible values are:
165  *
166  * 0: auto     (the driver will decide when to dither)
167  * 1: enabled  (the driver will always dither when possible)
168  * 2: disabled (the driver will never dither)
169  */
170 
171 #define NV_CTRL_DITHERING                                       3  /* RWDG */
172 #define NV_CTRL_DITHERING_AUTO                                  0
173 #define NV_CTRL_DITHERING_ENABLED                               1
174 #define NV_CTRL_DITHERING_DISABLED                              2
175 
176 
177 /*
178  * NV_CTRL_DIGITAL_VIBRANCE - sets the digital vibrance level for the
179  * specified display device.
180  */
181 
182 #define NV_CTRL_DIGITAL_VIBRANCE                                4  /* RWDG */
183 
184 
185 /*
186  * NV_CTRL_BUS_TYPE - returns the bus type through which the specified device
187  * is connected to the computer.
188  * When this attribute is queried on an X screen target, the bus type of the
189  * GPU driving the X screen is returned.
190  */
191 
192 #define NV_CTRL_BUS_TYPE                                        5  /* R--GI */
193 #define NV_CTRL_BUS_TYPE_AGP                                    0
194 #define NV_CTRL_BUS_TYPE_PCI                                    1
195 #define NV_CTRL_BUS_TYPE_PCI_EXPRESS                            2
196 #define NV_CTRL_BUS_TYPE_INTEGRATED                             3
197 
198 
199 /*
200  * NV_CTRL_VIDEO_RAM - returns the total amount of memory available
201  * to the specified GPU (or the GPU driving the specified X
202  * screen).  Note: if the GPU supports TurboCache(TM), the value
203  * reported may exceed the amount of video memory installed on the
204  * GPU.  The value reported for integrated GPUs may likewise exceed
205  * the amount of dedicated system memory set aside by the system
206  * BIOS for use by the integrated GPU.
207  */
208 
209 #define NV_CTRL_VIDEO_RAM                                       6  /* R--G */
210 
211 
212 /*
213  * NV_CTRL_IRQ - returns the interrupt request line used by the specified
214  * device.
215  * When this attribute is queried on an X screen target, the IRQ of the GPU
216  * driving the X screen is returned.
217  */
218 
219 #define NV_CTRL_IRQ                                             7  /* R--GI */
220 
221 
222 /*
223  * NV_CTRL_OPERATING_SYSTEM - returns the operating system on which
224  * the X server is running.
225  */
226 
227 #define NV_CTRL_OPERATING_SYSTEM                                8  /* R--G */
228 #define NV_CTRL_OPERATING_SYSTEM_LINUX                          0
229 #define NV_CTRL_OPERATING_SYSTEM_FREEBSD                        1
230 #define NV_CTRL_OPERATING_SYSTEM_SUNOS                          2
231 
232 
233 /*
234  * NV_CTRL_SYNC_TO_VBLANK - enables sync to vblank for OpenGL clients.
235  * This setting is only applied to OpenGL clients that are started
236  * after this setting is applied.
237  */
238 
239 #define NV_CTRL_SYNC_TO_VBLANK                                  9  /* RW-X */
240 #define NV_CTRL_SYNC_TO_VBLANK_OFF                              0
241 #define NV_CTRL_SYNC_TO_VBLANK_ON                               1
242 
243 
244 /*
245  * NV_CTRL_LOG_ANISO - enables anisotropic filtering for OpenGL
246  * clients; on some NVIDIA hardware, this can only be enabled or
247  * disabled; on other hardware different levels of anisotropic
248  * filtering can be specified.  This setting is only applied to OpenGL
249  * clients that are started after this setting is applied.
250  */
251 
252 #define NV_CTRL_LOG_ANISO                                       10 /* RW-X */
253 
254 
255 /*
256  * NV_CTRL_FSAA_MODE - the FSAA setting for OpenGL clients; possible
257  * FSAA modes:
258  *
259  * NV_CTRL_FSAA_MODE_2x     "2x Bilinear Multisampling"
260  * NV_CTRL_FSAA_MODE_2x_5t  "2x Quincunx Multisampling"
261  * NV_CTRL_FSAA_MODE_15x15  "1.5 x 1.5 Supersampling"
262  * NV_CTRL_FSAA_MODE_2x2    "2 x 2 Supersampling"
263  * NV_CTRL_FSAA_MODE_4x     "4x Bilinear Multisampling"
264  * NV_CTRL_FSAA_MODE_4x_9t  "4x Gaussian Multisampling"
265  * NV_CTRL_FSAA_MODE_8x     "2x Bilinear Multisampling by 4x Supersampling"
266  * NV_CTRL_FSAA_MODE_16x    "4x Bilinear Multisampling by 4x Supersampling"
267  * NV_CTRL_FSAA_MODE_8xS    "4x Multisampling by 2x Supersampling"
268  *
269  * This setting is only applied to OpenGL clients that are started
270  * after this setting is applied.
271  */
272 
273 #define NV_CTRL_FSAA_MODE                                       11 /* RW-X */
274 #define NV_CTRL_FSAA_MODE_NONE                                  0
275 #define NV_CTRL_FSAA_MODE_2x                                    1
276 #define NV_CTRL_FSAA_MODE_2x_5t                                 2
277 #define NV_CTRL_FSAA_MODE_15x15                                 3
278 #define NV_CTRL_FSAA_MODE_2x2                                   4
279 #define NV_CTRL_FSAA_MODE_4x                                    5
280 #define NV_CTRL_FSAA_MODE_4x_9t                                 6
281 #define NV_CTRL_FSAA_MODE_8x                                    7
282 #define NV_CTRL_FSAA_MODE_16x                                   8
283 #define NV_CTRL_FSAA_MODE_8xS                                   9
284 #define NV_CTRL_FSAA_MODE_8xQ                                  10
285 #define NV_CTRL_FSAA_MODE_16xS                                 11
286 #define NV_CTRL_FSAA_MODE_16xQ                                 12
287 #define NV_CTRL_FSAA_MODE_32xS                                 13
288 #define NV_CTRL_FSAA_MODE_32x                                  14
289 #define NV_CTRL_FSAA_MODE_64xS                                 15
290 #define NV_CTRL_FSAA_MODE_MAX NV_CTRL_FSAA_MODE_64xS
291 
292 
293 /*
294  * NV_CTRL_TEXTURE_SHARPEN - enables texture sharpening for OpenGL
295  * clients.  This setting is only applied to OpenGL clients that are
296  * started after this setting is applied.
297  */
298 
299 #define NV_CTRL_TEXTURE_SHARPEN                                 12 /* RW-X */
300 #define NV_CTRL_TEXTURE_SHARPEN_OFF                             0
301 #define NV_CTRL_TEXTURE_SHARPEN_ON                              1
302 
303 
304 /*
305  * NV_CTRL_UBB - returns whether UBB is enabled for the specified X
306  * screen.
307  */
308 
309 #define NV_CTRL_UBB                                             13 /* R-- */
310 #define NV_CTRL_UBB_OFF                                         0
311 #define NV_CTRL_UBB_ON                                          1
312 
313 
314 /*
315  * NV_CTRL_OVERLAY - returns whether the RGB overlay is enabled for
316  * the specified X screen.
317  */
318 
319 #define NV_CTRL_OVERLAY                                         14 /* R-- */
320 #define NV_CTRL_OVERLAY_OFF                                     0
321 #define NV_CTRL_OVERLAY_ON                                      1
322 
323 
324 /*
325  * NV_CTRL_STEREO - returns whether stereo (and what type) is enabled
326  * for the specified X screen.
327  */
328 
329 #define NV_CTRL_STEREO                                          16 /* R-- */
330 #define NV_CTRL_STEREO_OFF                                      0
331 #define NV_CTRL_STEREO_DDC                                      1
332 #define NV_CTRL_STEREO_BLUELINE                                 2
333 #define NV_CTRL_STEREO_DIN                                      3
334 #define NV_CTRL_STEREO_PASSIVE_EYE_PER_DPY                      4
335 #define NV_CTRL_STEREO_VERTICAL_INTERLACED                      5
336 #define NV_CTRL_STEREO_COLOR_INTERLACED                         6
337 #define NV_CTRL_STEREO_HORIZONTAL_INTERLACED                    7
338 #define NV_CTRL_STEREO_CHECKERBOARD_PATTERN                     8
339 #define NV_CTRL_STEREO_INVERSE_CHECKERBOARD_PATTERN             9
340 #define NV_CTRL_STEREO_3D_VISION                                10
341 #define NV_CTRL_STEREO_3D_VISION_PRO                            11
342 
343 /*
344  * NV_CTRL_EMULATE - controls OpenGL software emulation of future
345  * NVIDIA GPUs.
346  */
347 
348 #define NV_CTRL_EMULATE                                         17 /* RW- */
349 #define NV_CTRL_EMULATE_NONE                                    0
350 
351 
352 /*
353  * NV_CTRL_TWINVIEW - returns whether TwinView is enabled for the
354  * specified X screen.
355  */
356 
357 #define NV_CTRL_TWINVIEW                                        18 /* R-- */
358 #define NV_CTRL_TWINVIEW_NOT_ENABLED                            0
359 #define NV_CTRL_TWINVIEW_ENABLED                                1
360 
361 
362 /*
363  * NV_CTRL_CONNECTED_DISPLAYS - returns a display mask indicating the last
364  * cached state of the display devices connected to the GPU or GPU driving
365  * the specified X screen.
366  *
367  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
368  * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
369  */
370 
371 #define NV_CTRL_CONNECTED_DISPLAYS                              19 /* R--G */
372 
373 
374 /*
375  * NV_CTRL_ENABLED_DISPLAYS - returns a display mask indicating what
376  * display devices are enabled for use on the specified X screen or
377  * GPU.
378  *
379  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
380  * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
381  */
382 
383 #define NV_CTRL_ENABLED_DISPLAYS                                20 /* R--G */
384 
385 /**************************************************************************/
386 /*
387  * Integer attributes specific to configuring Frame Lock on boards that
388  * support it.
389  */
390 
391 
392 /*
393  * NV_CTRL_FRAMELOCK - returns whether the underlying GPU supports
394  * Frame Lock.  All of the other frame lock attributes are only
395  * applicable if NV_CTRL_FRAMELOCK is _SUPPORTED.
396  *
397  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
398  * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
399  */
400 
401 #define NV_CTRL_FRAMELOCK                                       21 /* R--G */
402 #define NV_CTRL_FRAMELOCK_NOT_SUPPORTED                         0
403 #define NV_CTRL_FRAMELOCK_SUPPORTED                             1
404 
405 
406 /*
407  * NV_CTRL_FRAMELOCK_MASTER - get/set which display device to use
408  * as the frame lock master for the entire sync group.  Note that only
409  * one node in the sync group should be configured as the master.
410  *
411  * This attribute can only be queried through XNVCTRLQueryTargetAttribute()
412  * using a NV_CTRL_TARGET_TYPE_GPU target.  This attribute cannot be
413  * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN.
414  */
415 
416 #define NV_CTRL_FRAMELOCK_MASTER                                22 /* RW-G */
417 
418 /* These are deprecated.  NV_CTRL_FRAMELOCK_MASTER now takes and
419    returns a display mask as value. */
420 #define NV_CTRL_FRAMELOCK_MASTER_FALSE                          0
421 #define NV_CTRL_FRAMELOCK_MASTER_TRUE                           1
422 
423 
424 /*
425  * NV_CTRL_FRAMELOCK_POLARITY - sync either to the rising edge of the
426  * frame lock pulse, the falling edge of the frame lock pulse or both.
427  *
428  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
429  * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
430  * target.
431  */
432 
433 #define NV_CTRL_FRAMELOCK_POLARITY                              23 /* RW-F */
434 #define NV_CTRL_FRAMELOCK_POLARITY_RISING_EDGE                  0x1
435 #define NV_CTRL_FRAMELOCK_POLARITY_FALLING_EDGE                 0x2
436 #define NV_CTRL_FRAMELOCK_POLARITY_BOTH_EDGES                   0x3
437 
438 
439 /*
440  * NV_CTRL_FRAMELOCK_SYNC_DELAY - delay between the frame lock pulse
441  * and the GPU sync.  This value must be multiplied by
442  * NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION to determine the sync delay in
443  * nanoseconds.
444  *
445  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
446  * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
447  * target.
448  *
449  * USAGE NODE: NV_CTRL_FRAMELOCK_SYNC_DELAY_MAX and
450  *             NV_CTRL_FRAMELOCK_SYNC_DELAY_FACTOR are deprecated.
451  *             The Sync Delay _MAX and _FACTOR are different for different
452  *             GSync products and so, to be correct, the valid values for
453  *             NV_CTRL_FRAMELOCK_SYNC_DELAY must be queried to get the range
454  *             of acceptable sync delay values, and
455  *             NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION must be queried to
456  *             obtain the correct factor.
457  */
458 
459 #define NV_CTRL_FRAMELOCK_SYNC_DELAY                            24 /* RW-F */
460 #define NV_CTRL_FRAMELOCK_SYNC_DELAY_MAX                        2047 // deprecated
461 #define NV_CTRL_FRAMELOCK_SYNC_DELAY_FACTOR                     7.81 // deprecated
462 
463 
464 /*
465  * NV_CTRL_FRAMELOCK_SYNC_INTERVAL - how many house sync pulses
466  * between the frame lock sync generation (0 == sync every house sync);
467  * this only applies to the master when receiving house sync.
468  *
469  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
470  * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
471  * target.
472  */
473 
474 #define NV_CTRL_FRAMELOCK_SYNC_INTERVAL                         25 /* RW-F */
475 
476 
477 /*
478  * NV_CTRL_FRAMELOCK_PORT0_STATUS - status of the rj45 port0.
479  *
480  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
481  * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
482  * target.
483  */
484 
485 #define NV_CTRL_FRAMELOCK_PORT0_STATUS                          26 /* R--F */
486 #define NV_CTRL_FRAMELOCK_PORT0_STATUS_INPUT                    0
487 #define NV_CTRL_FRAMELOCK_PORT0_STATUS_OUTPUT                   1
488 
489 
490 /*
491  * NV_CTRL_FRAMELOCK_PORT1_STATUS - status of the rj45 port1.
492  *
493  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
494  * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
495  * target.
496  */
497 
498 #define NV_CTRL_FRAMELOCK_PORT1_STATUS                          27 /* R--F */
499 #define NV_CTRL_FRAMELOCK_PORT1_STATUS_INPUT                    0
500 #define NV_CTRL_FRAMELOCK_PORT1_STATUS_OUTPUT                   1
501 
502 
503 /*
504  * NV_CTRL_FRAMELOCK_HOUSE_STATUS - returns whether or not the house
505  * sync signal was detected on the BNC connector of the frame lock
506  * board.
507  *
508  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
509  * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
510  * target.
511  */
512 
513 #define NV_CTRL_FRAMELOCK_HOUSE_STATUS                          28 /* R--F */
514 #define NV_CTRL_FRAMELOCK_HOUSE_STATUS_NOT_DETECTED             0
515 #define NV_CTRL_FRAMELOCK_HOUSE_STATUS_DETECTED                 1
516 
517 
518 /*
519  * NV_CTRL_FRAMELOCK_SYNC - enable/disable the syncing of display
520  * devices to the frame lock pulse as specified by previous calls to
521  * NV_CTRL_FRAMELOCK_MASTER and NV_CTRL_FRAMELOCK_SLAVES.
522  *
523  * This attribute can only be queried through XNVCTRLQueryTargetAttribute()
524  * using a NV_CTRL_TARGET_TYPE_GPU target.  This attribute cannot be
525  * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN.
526  */
527 
528 #define NV_CTRL_FRAMELOCK_SYNC                                  29 /* RW-G */
529 #define NV_CTRL_FRAMELOCK_SYNC_DISABLE                          0
530 #define NV_CTRL_FRAMELOCK_SYNC_ENABLE                           1
531 
532 
533 /*
534  * NV_CTRL_FRAMELOCK_SYNC_READY - reports whether a frame lock
535  * board is receiving sync (regardless of whether or not any display
536  * devices are using the sync).
537  *
538  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
539  * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
540  * target.
541  */
542 
543 #define NV_CTRL_FRAMELOCK_SYNC_READY                            30 /* R--F */
544 #define NV_CTRL_FRAMELOCK_SYNC_READY_FALSE                      0
545 #define NV_CTRL_FRAMELOCK_SYNC_READY_TRUE                       1
546 
547 
548 /*
549  * NV_CTRL_FRAMELOCK_STEREO_SYNC - this indicates that the GPU stereo
550  * signal is in sync with the frame lock stereo signal.
551  *
552  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
553  * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN
554  * target.
555  */
556 
557 #define NV_CTRL_FRAMELOCK_STEREO_SYNC                           31 /* R--G */
558 #define NV_CTRL_FRAMELOCK_STEREO_SYNC_FALSE                     0
559 #define NV_CTRL_FRAMELOCK_STEREO_SYNC_TRUE                      1
560 
561 
562 /*
563  * NV_CTRL_FRAMELOCK_TEST_SIGNAL - to test the connections in the sync
564  * group, tell the master to enable a test signal, then query port[01]
565  * status and sync_ready on all slaves.  When done, tell the master to
566  * disable the test signal.  Test signal should only be manipulated
567  * while NV_CTRL_FRAMELOCK_SYNC is enabled.
568  *
569  * The TEST_SIGNAL is also used to reset the Universal Frame Count (as
570  * returned by the glXQueryFrameCountNV() function in the
571  * GLX_NV_swap_group extension).  Note: for best accuracy of the
572  * Universal Frame Count, it is recommended to toggle the TEST_SIGNAL
573  * on and off after enabling frame lock.
574  *
575  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
576  * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
577  */
578 
579 #define NV_CTRL_FRAMELOCK_TEST_SIGNAL                           32 /* RW-G */
580 #define NV_CTRL_FRAMELOCK_TEST_SIGNAL_DISABLE                   0
581 #define NV_CTRL_FRAMELOCK_TEST_SIGNAL_ENABLE                    1
582 
583 
584 /*
585  * NV_CTRL_FRAMELOCK_ETHERNET_DETECTED - The frame lock boards are
586  * cabled together using regular cat5 cable, connecting to rj45 ports
587  * on the backplane of the card.  There is some concern that users may
588  * think these are ethernet ports and connect them to a
589  * router/hub/etc.  The hardware can detect this and will shut off to
590  * prevent damage (either to itself or to the router).
591  * NV_CTRL_FRAMELOCK_ETHERNET_DETECTED may be called to find out if
592  * ethernet is connected to one of the rj45 ports.  An appropriate
593  * error message should then be displayed.  The _PORT0 and _PORT1
594  * values may be or'ed together.
595  *
596  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
597  * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
598  * target.
599  */
600 
601 #define NV_CTRL_FRAMELOCK_ETHERNET_DETECTED                     33 /* R--F */
602 #define NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_NONE                0
603 #define NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_PORT0               0x1
604 #define NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_PORT1               0x2
605 
606 
607 /*
608  * NV_CTRL_FRAMELOCK_VIDEO_MODE - get/set what video mode is used
609  * to interperate the house sync signal.  This should only be set
610  * on the master.
611  *
612  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
613  * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
614  * target.
615  */
616 
617 #define NV_CTRL_FRAMELOCK_VIDEO_MODE                            34 /* RW-F */
618 #define NV_CTRL_FRAMELOCK_VIDEO_MODE_NONE                       0
619 #define NV_CTRL_FRAMELOCK_VIDEO_MODE_TTL                        1
620 #define NV_CTRL_FRAMELOCK_VIDEO_MODE_NTSCPALSECAM               2
621 #define NV_CTRL_FRAMELOCK_VIDEO_MODE_HDTV                       3
622 
623 /*
624  * During FRAMELOCK bring-up, the above values were redefined to
625  * these:
626  */
627 
628 #define NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_AUTO             0
629 #define NV_CTRL_FRAMELOCK_VIDEO_MODE_TTL                        1
630 #define NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_BI_LEVEL         2
631 #define NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_TRI_LEVEL        3
632 
633 
634 /*
635  * NV_CTRL_FRAMELOCK_SYNC_RATE - this is the refresh rate that the
636  * frame lock board is sending to the GPU, in milliHz.
637  *
638  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
639  * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
640  * target.
641  */
642 
643 #define NV_CTRL_FRAMELOCK_SYNC_RATE                             35 /* R--F */
644 
645 
646 
647 /**************************************************************************/
648 
649 /*
650  * NV_CTRL_FORCE_GENERIC_CPU - inhibit the use of CPU specific
651  * features such as MMX, SSE, or 3DNOW! for OpenGL clients; this
652  * option may result in performance loss, but may be useful in
653  * conjunction with software such as the Valgrind memory debugger.
654  * This setting is only applied to OpenGL clients that are started
655  * after this setting is applied.
656  *
657  * USAGE NOTE: This attribute is deprecated. CPU compatibility is now
658  *             checked each time during initialization.
659  */
660 
661 #define NV_CTRL_FORCE_GENERIC_CPU                               37 /* RW-X */
662 #define NV_CTRL_FORCE_GENERIC_CPU_DISABLE                        0
663 #define NV_CTRL_FORCE_GENERIC_CPU_ENABLE                         1
664 
665 
666 /*
667  * NV_CTRL_OPENGL_AA_LINE_GAMMA - for OpenGL clients, allow
668  * Gamma-corrected antialiased lines to consider variances in the
669  * color display capabilities of output devices when rendering smooth
670  * lines.  Only available on recent Quadro GPUs.  This setting is only
671  * applied to OpenGL clients that are started after this setting is
672  * applied.
673  */
674 
675 #define NV_CTRL_OPENGL_AA_LINE_GAMMA                            38 /* RW-X */
676 #define NV_CTRL_OPENGL_AA_LINE_GAMMA_DISABLE                     0
677 #define NV_CTRL_OPENGL_AA_LINE_GAMMA_ENABLE                      1
678 
679 
680 /*
681  * NV_CTRL_FRAMELOCK_TIMING - this is TRUE when the gpu is both receiving
682  * and locked to an input timing signal. Timing information may come from
683  * the following places: Another frame lock device that is set to master,
684  * the house sync signal, or the GPU's internal timing from a display
685  * device.
686  *
687  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
688  * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
689  */
690 
691 #define NV_CTRL_FRAMELOCK_TIMING                                39 /* R--G */
692 #define NV_CTRL_FRAMELOCK_TIMING_FALSE                           0
693 #define NV_CTRL_FRAMELOCK_TIMING_TRUE                            1
694 
695 /*
696  * NV_CTRL_FLIPPING_ALLOWED - when TRUE, OpenGL will swap by flipping
697  * when possible; when FALSE, OpenGL will alway swap by blitting.
698  */
699 
700 #define NV_CTRL_FLIPPING_ALLOWED                                40 /* RW-X */
701 #define NV_CTRL_FLIPPING_ALLOWED_FALSE                           0
702 #define NV_CTRL_FLIPPING_ALLOWED_TRUE                            1
703 
704 /*
705  * NV_CTRL_ARCHITECTURE - returns the architecture on which the X server is
706  * running.
707  */
708 
709 #define NV_CTRL_ARCHITECTURE                                    41  /* R-- */
710 #define NV_CTRL_ARCHITECTURE_X86                                 0
711 #define NV_CTRL_ARCHITECTURE_X86_64                              1
712 #define NV_CTRL_ARCHITECTURE_IA64                                2
713 
714 
715 /*
716  * NV_CTRL_TEXTURE_CLAMPING - texture clamping mode in OpenGL.  By
717  * default, _SPEC is used, which forces OpenGL texture clamping to
718  * conform with the OpenGL specification.  _EDGE forces NVIDIA's
719  * OpenGL implementation to remap GL_CLAMP to GL_CLAMP_TO_EDGE,
720  * which is not strictly conformant, but some applications rely on
721  * the non-conformant behavior.
722  */
723 
724 #define NV_CTRL_TEXTURE_CLAMPING                                42  /* RW-X */
725 #define NV_CTRL_TEXTURE_CLAMPING_EDGE                            0
726 #define NV_CTRL_TEXTURE_CLAMPING_SPEC                            1
727 
728 
729 
730 #define NV_CTRL_CURSOR_SHADOW                                   43  /* RW- */
731 #define NV_CTRL_CURSOR_SHADOW_DISABLE                            0
732 #define NV_CTRL_CURSOR_SHADOW_ENABLE                             1
733 
734 #define NV_CTRL_CURSOR_SHADOW_ALPHA                             44  /* RW- */
735 #define NV_CTRL_CURSOR_SHADOW_RED                               45  /* RW- */
736 #define NV_CTRL_CURSOR_SHADOW_GREEN                             46  /* RW- */
737 #define NV_CTRL_CURSOR_SHADOW_BLUE                              47  /* RW- */
738 
739 #define NV_CTRL_CURSOR_SHADOW_X_OFFSET                          48  /* RW- */
740 #define NV_CTRL_CURSOR_SHADOW_Y_OFFSET                          49  /* RW- */
741 
742 
743 
744 /*
745  * When Application Control for FSAA is enabled, then what the
746  * application requests is used, and NV_CTRL_FSAA_MODE is ignored.  If
747  * this is disabled, then any application setting is overridden with
748  * NV_CTRL_FSAA_MODE
749  */
750 
751 #define NV_CTRL_FSAA_APPLICATION_CONTROLLED                     50  /* RW-X */
752 #define NV_CTRL_FSAA_APPLICATION_CONTROLLED_ENABLED              1
753 #define NV_CTRL_FSAA_APPLICATION_CONTROLLED_DISABLED             0
754 
755 
756 /*
757  * When Application Control for LogAniso is enabled, then what the
758  * application requests is used, and NV_CTRL_LOG_ANISO is ignored.  If
759  * this is disabled, then any application setting is overridden with
760  * NV_CTRL_LOG_ANISO
761  */
762 
763 #define NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED                51  /* RW-X */
764 #define NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED_ENABLED         1
765 #define NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED_DISABLED        0
766 
767 
768 /*
769  * IMAGE_SHARPENING adjusts the sharpness of the display's image
770  * quality by amplifying high frequency content.  Valid values will
771  * normally be in the range [0,32).  Only available on GeForceFX or
772  * newer.
773  */
774 
775 #define NV_CTRL_IMAGE_SHARPENING                                52  /* RWDG */
776 
777 
778 /*
779  * NV_CTRL_TV_OVERSCAN adjusts the amount of overscan on the specified
780  * display device.
781  */
782 
783 #define NV_CTRL_TV_OVERSCAN                                     53  /* RWDG */
784 
785 
786 /*
787  * NV_CTRL_TV_FLICKER_FILTER adjusts the amount of flicker filter on
788  * the specified display device.
789  */
790 
791 #define NV_CTRL_TV_FLICKER_FILTER                               54  /* RWDG */
792 
793 
794 /*
795  * NV_CTRL_TV_BRIGHTNESS adjusts the amount of brightness on the
796  * specified display device.
797  */
798 
799 #define NV_CTRL_TV_BRIGHTNESS                                   55  /* RWDG */
800 
801 
802 /*
803  * NV_CTRL_TV_HUE adjusts the amount of hue on the specified display
804  * device.
805  */
806 
807 #define NV_CTRL_TV_HUE                                          56  /* RWDG */
808 
809 
810 /*
811  * NV_CTRL_TV_CONTRAST adjusts the amount of contrast on the specified
812  * display device.
813  */
814 
815 #define NV_CTRL_TV_CONTRAST                                     57  /* RWDG */
816 
817 
818 /*
819  * NV_CTRL_TV_SATURATION adjusts the amount of saturation on the
820  * specified display device.
821  */
822 
823 #define NV_CTRL_TV_SATURATION                                   58  /* RWDG */
824 
825 
826 /*
827  * NV_CTRL_TV_RESET_SETTINGS - this write-only attribute can be used
828  * to request that all TV Settings be reset to their default values;
829  * typical usage would be that this attribute be sent, and then all
830  * the TV attributes be queried to retrieve their new values.
831  */
832 
833 #define NV_CTRL_TV_RESET_SETTINGS                               59  /* -WDG */
834 
835 
836 /*
837  * NV_CTRL_GPU_CORE_TEMPERATURE reports the current core temperature
838  * of the GPU driving the X screen.
839  */
840 
841 #define NV_CTRL_GPU_CORE_TEMPERATURE                            60  /* R--G */
842 
843 
844 /*
845  * NV_CTRL_GPU_CORE_THRESHOLD reports the current GPU core slowdown
846  * threshold temperature, NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD and
847  * NV_CTRL_GPU_MAX_CORE_THRESHOLD report the default and MAX core
848  * slowdown threshold temperatures.
849  *
850  * NV_CTRL_GPU_CORE_THRESHOLD reflects the temperature at which the
851  * GPU is throttled to prevent overheating.
852  */
853 
854 #define NV_CTRL_GPU_CORE_THRESHOLD                              61  /* R--G */
855 #define NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD                      62  /* R--G */
856 #define NV_CTRL_GPU_MAX_CORE_THRESHOLD                          63  /* R--G */
857 
858 
859 /*
860  * NV_CTRL_AMBIENT_TEMPERATURE reports the current temperature in the
861  * immediate neighbourhood of the GPU driving the X screen.
862  */
863 
864 #define NV_CTRL_AMBIENT_TEMPERATURE                             64  /* R--G */
865 
866 
867 /*
868  * NV_CTRL_PBUFFER_SCANOUT_SUPPORTED - returns whether this X screen
869  * supports scanout of FP pbuffers;
870  *
871  * if this screen does not support PBUFFER_SCANOUT, then all other
872  * PBUFFER_SCANOUT attributes are unavailable.
873  *
874  * PBUFFER_SCANOUT is supported if and only if:
875  * - Twinview is configured with clone mode.  The secondary screen is used to
876  *   scanout the pbuffer.
877  * - The desktop is running in with 16 bits per pixel.
878  */
879 #define NV_CTRL_PBUFFER_SCANOUT_SUPPORTED                       65  /* R-- */
880 #define NV_CTRL_PBUFFER_SCANOUT_FALSE                           0
881 #define NV_CTRL_PBUFFER_SCANOUT_TRUE                            1
882 
883 /*
884  * NV_CTRL_PBUFFER_SCANOUT_XID indicates the XID of the pbuffer used for
885  * scanout.
886  */
887 #define NV_CTRL_PBUFFER_SCANOUT_XID                             66  /* RW- */
888 
889 /**************************************************************************/
890 /*
891  * The NV_CTRL_GVO_* integer attributes are used to configure GVO
892  * (Graphics to Video Out).  This functionality is available, for
893  * example, on the Quadro FX 4000 SDI graphics board.
894  *
895  * The following is a typical usage pattern for the GVO attributes:
896  *
897  * - query NV_CTRL_GVO_SUPPORTED to determine if the X screen supports GV0.
898  *
899  * - specify NV_CTRL_GVO_SYNC_MODE (one of FREE_RUNNING, GENLOCK, or
900  * FRAMELOCK); if you specify GENLOCK or FRAMELOCK, you should also
901  * specify NV_CTRL_GVO_SYNC_SOURCE.
902  *
903  * - Use NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED and
904  * NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED to detect what input syncs are
905  * present.
906  *
907  * (If no analog sync is detected but it is known that a valid
908  * bi-level or tri-level sync is connected set
909  * NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE appropriately and
910  * retest with NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED).
911  *
912  * - if syncing to input sync, query the
913  * NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT attribute; note that Input video
914  * format can only be queried after SYNC_SOURCE is specified.
915  *
916  * - specify the NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT
917  *
918  * - specify the NV_CTRL_GVO_DATA_FORMAT
919  *
920  * - specify any custom Color Space Conversion (CSC) matrix, offset,
921  * and scale with XNVCTRLSetGvoColorConversion().
922  *
923  * - if using the GLX_NV_video_out extension to display one or more
924  * pbuffers, call glXGetVideoDeviceNV() to lock the GVO output for use
925  * by the GLX client; then bind the pbuffer(s) to the GVO output with
926  * glXBindVideoImageNV() and send pbuffers to the GVO output with
927  * glXSendPbufferToVideoNV(); see the GLX_NV_video_out spec for more
928  * details.
929  *
930  * - if using the GLX_NV_present_video extension, call
931  * glXBindVideoDeviceNV() to bind the GVO video device to current
932  * OpenGL context.
933  *
934  * Note that setting most GVO attributes only causes the value to be
935  * cached in the X server.  The values will be flushed to the hardware
936  * either when the next MetaMode is set that uses the GVO display
937  * device, or when a GLX pbuffer is bound to the GVO output (with
938  * glXBindVideoImageNV()).
939  *
940  * Note that GLX_NV_video_out/GLX_NV_present_video and X screen use
941  * are mutually exclusive.  If a MetaMode is currently using the GVO
942  * device, then glXGetVideoDeviceNV and glXBindVideoImageNV() will
943  * fail.  Similarly, if a GLX client has locked the GVO output (via
944  * glXGetVideoDeviceNV or glXBindVideoImageNV), then setting a
945  * MetaMode that uses the GVO device will fail.  The
946  * NV_CTRL_GVO_GLX_LOCKED event will be sent when a GLX client locks
947  * the GVO output.
948  *
949  */
950 
951 
952 /*
953  * NV_CTRL_GVO_SUPPORTED - returns whether this X screen supports GVO;
954  * if this screen does not support GVO output, then all other GVO
955  * attributes are unavailable.
956  */
957 
958 #define NV_CTRL_GVO_SUPPORTED                                   67  /* R-- */
959 #define NV_CTRL_GVO_SUPPORTED_FALSE                             0
960 #define NV_CTRL_GVO_SUPPORTED_TRUE                              1
961 
962 
963 /*
964  * NV_CTRL_GVO_SYNC_MODE - selects the GVO sync mode; possible values
965  * are:
966  *
967  * FREE_RUNNING - GVO does not sync to any external signal
968  *
969  * GENLOCK - the GVO output is genlocked to an incoming sync signal;
970  * genlocking locks at hsync.  This requires that the output video
971  * format exactly match the incoming sync video format.
972  *
973  * FRAMELOCK - the GVO output is frame locked to an incoming sync
974  * signal; frame locking locks at vsync.  This requires that the output
975  * video format have the same refresh rate as the incoming sync video
976  * format.
977  */
978 
979 #define NV_CTRL_GVO_SYNC_MODE                                   68  /* RW- */
980 #define NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING                      0
981 #define NV_CTRL_GVO_SYNC_MODE_GENLOCK                           1
982 #define NV_CTRL_GVO_SYNC_MODE_FRAMELOCK                         2
983 
984 
985 /*
986  * NV_CTRL_GVO_SYNC_SOURCE - if NV_CTRL_GVO_SYNC_MODE is set to either
987  * GENLOCK or FRAMELOCK, this controls which sync source is used as
988  * the incoming sync signal (either Composite or SDI).  If
989  * NV_CTRL_GVO_SYNC_MODE is FREE_RUNNING, this attribute has no
990  * effect.
991  */
992 
993 #define NV_CTRL_GVO_SYNC_SOURCE                                 69  /* RW- */
994 #define NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE                       0
995 #define NV_CTRL_GVO_SYNC_SOURCE_SDI                             1
996 
997 
998 /*
999  * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT - specifies the desired output video
1000  * format for GVO devices or the desired input video format for GVI devices.
1001  *
1002  * Note that for GVO, the valid video formats may vary depending on
1003  * the NV_CTRL_GVO_SYNC_MODE and the incoming sync video format.  See
1004  * the definition of NV_CTRL_GVO_SYNC_MODE.
1005  *
1006  * Note that when querying the ValidValues for this data type, the
1007  * values are reported as bits within a bitmask
1008  * (ATTRIBUTE_TYPE_INT_BITS); unfortunately, there are more valid
1009  * value bits than will fit in a single 32-bit value.  To solve this,
1010  * query the ValidValues for NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT to
1011  * check which of the first 31 VIDEO_FORMATS are valid, query the
1012  * ValidValues for NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2 to check which
1013  * of the 32-63 VIDEO_FORMATS are valid, and query the ValidValues of
1014  * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT3 to check which of the 64-95
1015  * VIDEO_FORMATS are valid.
1016  *
1017  * Note: Setting this attribute on a GVI device may also result in the
1018  *       following NV-CONTROL attributes being reset on that device (to
1019  *       ensure the configuration remains valid):
1020  *           NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT
1021  *           NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING
1022  */
1023 
1024 #define NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT                     70  /* RW--I */
1025 
1026 #define NV_CTRL_GVIO_VIDEO_FORMAT_NONE                          0
1027 #define NV_CTRL_GVIO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC      1
1028 #define NV_CTRL_GVIO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL       2
1029 #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_59_94_SMPTE296           3
1030 #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_60_00_SMPTE296           4
1031 #define NV_CTRL_GVIO_VIDEO_FORMAT_1035I_59_94_SMPTE260          5
1032 #define NV_CTRL_GVIO_VIDEO_FORMAT_1035I_60_00_SMPTE260          6
1033 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_SMPTE295          7
1034 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_SMPTE274          8
1035 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_59_94_SMPTE274          9
1036 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_60_00_SMPTE274          10
1037 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_23_976_SMPTE274         11
1038 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_24_00_SMPTE274          12
1039 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_25_00_SMPTE274          13
1040 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_29_97_SMPTE274          14
1041 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_30_00_SMPTE274          15
1042 #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_50_00_SMPTE296           16
1043 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_48_00_SMPTE274          17
1044 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_47_96_SMPTE274          18
1045 #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_30_00_SMPTE296           19
1046 #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_29_97_SMPTE296           20
1047 #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_25_00_SMPTE296           21
1048 #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_24_00_SMPTE296           22
1049 #define NV_CTRL_GVIO_VIDEO_FORMAT_720P_23_98_SMPTE296           23
1050 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_25_00_SMPTE274        24
1051 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_29_97_SMPTE274        25
1052 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_30_00_SMPTE274        26
1053 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_24_00_SMPTE274        27
1054 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_23_98_SMPTE274        28
1055 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_30_00_SMPTE372          29
1056 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_29_97_SMPTE372          30
1057 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_60_00_SMPTE372          31
1058 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_59_94_SMPTE372          32
1059 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_25_00_SMPTE372          33
1060 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_50_00_SMPTE372          34
1061 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_24_00_SMPTE372          35
1062 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_23_98_SMPTE372          36
1063 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_48_00_SMPTE372          37
1064 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_47_96_SMPTE372          38
1065 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_50_00_3G_LEVEL_A_SMPTE274  39
1066 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_59_94_3G_LEVEL_A_SMPTE274  40
1067 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_60_00_3G_LEVEL_A_SMPTE274  41
1068 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_60_00_3G_LEVEL_B_SMPTE274  42
1069 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_60_00_3G_LEVEL_B_SMPTE274  43
1070 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_60_00_3G_LEVEL_B_SMPTE372  44
1071 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_50_00_3G_LEVEL_B_SMPTE274  45
1072 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_3G_LEVEL_B_SMPTE274  46
1073 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_50_00_3G_LEVEL_B_SMPTE372  47
1074 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_30_00_3G_LEVEL_B_SMPTE274  48
1075 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_30_00_3G_LEVEL_B_SMPTE372  49
1076 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_25_00_3G_LEVEL_B_SMPTE274  50
1077 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_25_00_3G_LEVEL_B_SMPTE372  51
1078 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_24_00_3G_LEVEL_B_SMPTE274  52
1079 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_24_00_3G_LEVEL_B_SMPTE372  53
1080 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_48_00_3G_LEVEL_B_SMPTE274  54
1081 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_48_00_3G_LEVEL_B_SMPTE372  55
1082 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_59_94_3G_LEVEL_B_SMPTE274  56
1083 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_59_94_3G_LEVEL_B_SMPTE274  57
1084 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_59_94_3G_LEVEL_B_SMPTE372  58
1085 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_29_97_3G_LEVEL_B_SMPTE274  59
1086 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_29_97_3G_LEVEL_B_SMPTE372  60
1087 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_23_98_3G_LEVEL_B_SMPTE274  61
1088 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_23_98_3G_LEVEL_B_SMPTE372  62
1089 #define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_47_96_3G_LEVEL_B_SMPTE274  63
1090 #define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_47_96_3G_LEVEL_B_SMPTE372  64
1091 
1092 
1093 /*
1094  * The following are deprecated; NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT and the
1095  * corresponding NV_CTRL_GVIO_* formats should be used instead.
1096  */
1097 #define NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT                         70  /* RW- */
1098 
1099 #define NV_CTRL_GVO_VIDEO_FORMAT_NONE                           0
1100 #define NV_CTRL_GVO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC       1
1101 #define NV_CTRL_GVO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL        2
1102 #define NV_CTRL_GVO_VIDEO_FORMAT_720P_59_94_SMPTE296            3
1103 #define NV_CTRL_GVO_VIDEO_FORMAT_720P_60_00_SMPTE296            4
1104 #define NV_CTRL_GVO_VIDEO_FORMAT_1035I_59_94_SMPTE260           5
1105 #define NV_CTRL_GVO_VIDEO_FORMAT_1035I_60_00_SMPTE260           6
1106 #define NV_CTRL_GVO_VIDEO_FORMAT_1080I_50_00_SMPTE295           7
1107 #define NV_CTRL_GVO_VIDEO_FORMAT_1080I_50_00_SMPTE274           8
1108 #define NV_CTRL_GVO_VIDEO_FORMAT_1080I_59_94_SMPTE274           9
1109 #define NV_CTRL_GVO_VIDEO_FORMAT_1080I_60_00_SMPTE274           10
1110 #define NV_CTRL_GVO_VIDEO_FORMAT_1080P_23_976_SMPTE274          11
1111 #define NV_CTRL_GVO_VIDEO_FORMAT_1080P_24_00_SMPTE274           12
1112 #define NV_CTRL_GVO_VIDEO_FORMAT_1080P_25_00_SMPTE274           13
1113 #define NV_CTRL_GVO_VIDEO_FORMAT_1080P_29_97_SMPTE274           14
1114 #define NV_CTRL_GVO_VIDEO_FORMAT_1080P_30_00_SMPTE274           15
1115 #define NV_CTRL_GVO_VIDEO_FORMAT_720P_50_00_SMPTE296            16
1116 #define NV_CTRL_GVO_VIDEO_FORMAT_1080I_48_00_SMPTE274           17
1117 #define NV_CTRL_GVO_VIDEO_FORMAT_1080I_47_96_SMPTE274           18
1118 #define NV_CTRL_GVO_VIDEO_FORMAT_720P_30_00_SMPTE296            19
1119 #define NV_CTRL_GVO_VIDEO_FORMAT_720P_29_97_SMPTE296            20
1120 #define NV_CTRL_GVO_VIDEO_FORMAT_720P_25_00_SMPTE296            21
1121 #define NV_CTRL_GVO_VIDEO_FORMAT_720P_24_00_SMPTE296            22
1122 #define NV_CTRL_GVO_VIDEO_FORMAT_720P_23_98_SMPTE296            23
1123 #define NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_25_00_SMPTE274         24
1124 #define NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_29_97_SMPTE274         25
1125 #define NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_30_00_SMPTE274         26
1126 #define NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_24_00_SMPTE274         27
1127 #define NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_23_98_SMPTE274         28
1128 #define NV_CTRL_GVO_VIDEO_FORMAT_2048P_30_00_SMPTE372           29
1129 #define NV_CTRL_GVO_VIDEO_FORMAT_2048P_29_97_SMPTE372           30
1130 #define NV_CTRL_GVO_VIDEO_FORMAT_2048I_60_00_SMPTE372           31
1131 #define NV_CTRL_GVO_VIDEO_FORMAT_2048I_59_94_SMPTE372           32
1132 #define NV_CTRL_GVO_VIDEO_FORMAT_2048P_25_00_SMPTE372           33
1133 #define NV_CTRL_GVO_VIDEO_FORMAT_2048I_50_00_SMPTE372           34
1134 #define NV_CTRL_GVO_VIDEO_FORMAT_2048P_24_00_SMPTE372           35
1135 #define NV_CTRL_GVO_VIDEO_FORMAT_2048P_23_98_SMPTE372           36
1136 #define NV_CTRL_GVO_VIDEO_FORMAT_2048I_48_00_SMPTE372           37
1137 #define NV_CTRL_GVO_VIDEO_FORMAT_2048I_47_96_SMPTE372           38
1138 
1139 /*
1140  * NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT - indicates the input video format
1141  * detected for GVO or GVI devices; the possible values are the
1142  * NV_CTRL_GVIO_VIDEO_FORMAT constants.
1143  *
1144  * For GVI devices, the jack number should be specified in the lower
1145  * 16 bits of the "display_mask" parameter, while the channel number should be
1146  * specified in the upper 16 bits.
1147  */
1148 
1149 #define NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT                      71  /* R--I */
1150 
1151 /*
1152  * The following is deprecated.  Use NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT,
1153  * instead.
1154  */
1155 #define NV_CTRL_GVO_INPUT_VIDEO_FORMAT                          71  /* R-- */
1156 
1157 /*
1158  * NV_CTRL_GVO_DATA_FORMAT - This controls how the data in the source
1159  * (either the X screen or the GLX pbuffer) is interpretted and
1160  * displayed.
1161  *
1162  * Note: some of the below DATA_FORMATS have been renamed.  For
1163  * example, R8G8B8_TO_RGB444 has been renamed to X8X8X8_444_PASSTHRU.
1164  * This is to more accurately reflect DATA_FORMATS where the
1165  * per-channel data could be either RGB or YCrCb -- the point is that
1166  * the driver and GVO hardware do not perform any implicit color space
1167  * conversion on the data; it is passed through to the SDI out.
1168  */
1169 
1170 #define NV_CTRL_GVO_DATA_FORMAT                                 72  /* RW- */
1171 #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB444              0
1172 #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4444          1
1173 #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_YCRCBZ4444         2
1174 #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB422              3
1175 #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4224          4
1176 #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_YCRCBZ4224         5
1177 #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_RGB444                6 // renamed
1178 #define NV_CTRL_GVO_DATA_FORMAT_X8X8X8_444_PASSTHRU             6
1179 #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_RGBA4444            7 // renamed
1180 #define NV_CTRL_GVO_DATA_FORMAT_X8X8X8A8_4444_PASSTHRU          7
1181 #define NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_RGBZ4444           8 // renamed
1182 #define NV_CTRL_GVO_DATA_FORMAT_X8X8X8Z8_4444_PASSTHRU          8
1183 #define NV_CTRL_GVO_DATA_FORMAT_Y10CR10CB10_TO_YCRCB444         9 // renamed
1184 #define NV_CTRL_GVO_DATA_FORMAT_X10X10X10_444_PASSTHRU          9
1185 #define NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8_TO_YCRCB444           10 // renamed
1186 #define NV_CTRL_GVO_DATA_FORMAT_X10X8X8_444_PASSTHRU            10
1187 #define NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8A10_TO_YCRCBA4444      11 // renamed
1188 #define NV_CTRL_GVO_DATA_FORMAT_X10X8X8A10_4444_PASSTHRU        11
1189 #define NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8Z10_TO_YCRCBZ4444      12 // renamed
1190 #define NV_CTRL_GVO_DATA_FORMAT_X10X8X8Z10_4444_PASSTHRU        12
1191 #define NV_CTRL_GVO_DATA_FORMAT_DUAL_R8G8B8_TO_DUAL_YCRCB422    13
1192 #define NV_CTRL_GVO_DATA_FORMAT_DUAL_Y8CR8CB8_TO_DUAL_YCRCB422  14 // renamed
1193 #define NV_CTRL_GVO_DATA_FORMAT_DUAL_X8X8X8_TO_DUAL_422_PASSTHRU 14
1194 #define NV_CTRL_GVO_DATA_FORMAT_R10G10B10_TO_YCRCB422           15
1195 #define NV_CTRL_GVO_DATA_FORMAT_R10G10B10_TO_YCRCB444           16
1196 #define NV_CTRL_GVO_DATA_FORMAT_Y12CR12CB12_TO_YCRCB444         17 // renamed
1197 #define NV_CTRL_GVO_DATA_FORMAT_X12X12X12_444_PASSTHRU          17
1198 #define NV_CTRL_GVO_DATA_FORMAT_R12G12B12_TO_YCRCB444           18
1199 #define NV_CTRL_GVO_DATA_FORMAT_X8X8X8_422_PASSTHRU             19
1200 #define NV_CTRL_GVO_DATA_FORMAT_X8X8X8A8_4224_PASSTHRU          20
1201 #define NV_CTRL_GVO_DATA_FORMAT_X8X8X8Z8_4224_PASSTHRU          21
1202 #define NV_CTRL_GVO_DATA_FORMAT_X10X10X10_422_PASSTHRU          22
1203 #define NV_CTRL_GVO_DATA_FORMAT_X10X8X8_422_PASSTHRU            23
1204 #define NV_CTRL_GVO_DATA_FORMAT_X10X8X8A10_4224_PASSTHRU        24
1205 #define NV_CTRL_GVO_DATA_FORMAT_X10X8X8Z10_4224_PASSTHRU        25
1206 #define NV_CTRL_GVO_DATA_FORMAT_X12X12X12_422_PASSTHRU          26
1207 #define NV_CTRL_GVO_DATA_FORMAT_R12G12B12_TO_YCRCB422           27
1208 
1209 /*
1210  * NV_CTRL_GVO_DISPLAY_X_SCREEN - no longer supported
1211  */
1212 
1213 #define NV_CTRL_GVO_DISPLAY_X_SCREEN                            73  /* RW- */
1214 #define NV_CTRL_GVO_DISPLAY_X_SCREEN_ENABLE                     1
1215 #define NV_CTRL_GVO_DISPLAY_X_SCREEN_DISABLE                    0
1216 
1217 
1218 /*
1219  * NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED - indicates whether
1220  * Composite Sync input is detected.
1221  */
1222 
1223 #define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED               74  /* R-- */
1224 #define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_FALSE         0
1225 #define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_TRUE          1
1226 
1227 
1228 /*
1229  * NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE - get/set the
1230  * Composite Sync input detect mode.
1231  */
1232 
1233 #define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE            75  /* RW- */
1234 #define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_AUTO       0
1235 #define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_BI_LEVEL   1
1236 #define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_TRI_LEVEL  2
1237 
1238 
1239 /*
1240  * NV_CTRL_GVO_SYNC_INPUT_DETECTED - indicates whether SDI Sync input
1241  * is detected, and what type.
1242  */
1243 
1244 #define NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED                     76  /* R-- */
1245 #define NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_NONE                0
1246 #define NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_HD                  1
1247 #define NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_SD                  2
1248 
1249 
1250 /*
1251  * NV_CTRL_GVO_VIDEO_OUTPUTS - indicates which GVO video output
1252  * connectors are currently outputing data.
1253  */
1254 
1255 #define NV_CTRL_GVO_VIDEO_OUTPUTS                               77  /* R-- */
1256 #define NV_CTRL_GVO_VIDEO_OUTPUTS_NONE                          0
1257 #define NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO1                        1
1258 #define NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO2                        2
1259 #define NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO_BOTH                    3
1260 
1261 
1262 /*
1263  * NV_CTRL_GVO_FPGA_VERSION - indicates the version of the Firmware on
1264  * the GVO device.  Deprecated; use
1265  * NV_CTRL_STRING_GVIO_FIRMWARE_VERSION instead.
1266  */
1267 
1268 #define NV_CTRL_GVO_FIRMWARE_VERSION                            78  /* R-- */
1269 
1270 
1271 /*
1272  * NV_CTRL_GVO_SYNC_DELAY_PIXELS - controls the delay between the
1273  * input sync and the output sync in numbers of pixels from hsync;
1274  * this is a 12 bit value.
1275  *
1276  * If the NV_CTRL_GVO_CAPABILITIES_ADVANCE_SYNC_SKEW bit is set,
1277  * then setting this value will set an advance instead of a delay.
1278  */
1279 
1280 #define NV_CTRL_GVO_SYNC_DELAY_PIXELS                           79  /* RW- */
1281 
1282 
1283 /*
1284  * NV_CTRL_GVO_SYNC_DELAY_LINES - controls the delay between the input
1285  * sync and the output sync in numbers of lines from vsync; this is a
1286  * 12 bit value.
1287  *
1288  * If the NV_CTRL_GVO_CAPABILITIES_ADVANCE_SYNC_SKEW bit is set,
1289  * then setting this value will set an advance instead of a delay.
1290  */
1291 
1292 #define NV_CTRL_GVO_SYNC_DELAY_LINES                            80  /* RW- */
1293 
1294 
1295 /*
1296  * NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE - must be set for a period
1297  * of about 2 seconds for the new InputVideoFormat to be properly
1298  * locked to.  In nvidia-settings, we do a reacquire whenever genlock
1299  * or frame lock mode is entered into, when the user clicks the
1300  * "detect" button.  This value can be written, but always reads back
1301  * _FALSE.
1302  */
1303 
1304 #define NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE                81  /* -W- */
1305 #define NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_FALSE          0
1306 #define NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_TRUE           1
1307 
1308 
1309 /*
1310  * NV_CTRL_GVO_GLX_LOCKED - indicates that GVO configurability is
1311  * locked by GLX; this occurs when either glXGetVideoDeviceNV (part of
1312  * GLX_NV_video_out) or glXBindVideoDeviceNV (part of
1313  * GLX_NV_present_video) is called.  All GVO output resources are
1314  * locked until released by the GLX_NV_video_out/GLX_NV_present_video
1315  * client.
1316  *
1317  * When GVO is locked, setting of the following GVO NV-CONTROL attributes will
1318  * not happen immediately and will instead be cached.  The GVO resource will
1319  * need to be disabled/released and re-enabled/claimed for the values to be
1320  * flushed. These attributes are:
1321  *    NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT
1322  *    NV_CTRL_GVO_DATA_FORMAT
1323  *    NV_CTRL_GVO_FLIP_QUEUE_SIZE
1324  *
1325  * This attribute is deprecated and may be removed in a future release.  Its
1326  * functionality has been replaced by NV_CTRL_GVO_LOCK_OWNER.
1327  */
1328 
1329 #define NV_CTRL_GVO_GLX_LOCKED                                  82  /* R-- */
1330 #define NV_CTRL_GVO_GLX_LOCKED_FALSE                            0
1331 #define NV_CTRL_GVO_GLX_LOCKED_TRUE                             1
1332 
1333 
1334 /*
1335  * NV_CTRL_GVIO_VIDEO_FORMAT_{WIDTH,HEIGHT,REFRESH_RATE} - query the
1336  * width, height, and refresh rate for the specified
1337  * NV_CTRL_GVIO_VIDEO_FORMAT_*.  So that this can be queried with
1338  * existing interfaces, XNVCTRLQueryAttribute() should be used, and
1339  * the video format specified in the display_mask field; eg:
1340  *
1341  * XNVCTRLQueryAttribute (dpy,
1342  *                        screen,
1343  *                        NV_CTRL_GVIO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC,
1344  *                        NV_CTRL_GVIO_VIDEO_FORMAT_WIDTH,
1345  *                        &value);
1346  *
1347  * Note that Refresh Rate is in milliHertz values
1348  */
1349 
1350 #define NV_CTRL_GVIO_VIDEO_FORMAT_WIDTH                         83  /* R--I */
1351 #define NV_CTRL_GVIO_VIDEO_FORMAT_HEIGHT                        84  /* R--I */
1352 #define NV_CTRL_GVIO_VIDEO_FORMAT_REFRESH_RATE                  85  /* R--I */
1353 
1354 /* The following are deprecated; use the NV_CTRL_GVIO_* versions, instead */
1355 #define NV_CTRL_GVO_VIDEO_FORMAT_WIDTH                          83  /* R-- */
1356 #define NV_CTRL_GVO_VIDEO_FORMAT_HEIGHT                         84  /* R-- */
1357 #define NV_CTRL_GVO_VIDEO_FORMAT_REFRESH_RATE                   85  /* R-- */
1358 
1359 
1360 /*
1361  * NV_CTRL_GVO_X_SCREEN_PAN_[XY] - no longer supported
1362  */
1363 
1364 #define NV_CTRL_GVO_X_SCREEN_PAN_X                              86  /* RW- */
1365 #define NV_CTRL_GVO_X_SCREEN_PAN_Y                              87  /* RW- */
1366 
1367 
1368 /*
1369  * NV_CTRL_GPU_OVERCLOCKING_STATE - query the current or set a new
1370  * overclocking state; the value of this attribute controls the
1371  * availability of additional overclocking attributes (see below).
1372  *
1373  * Note: this attribute is unavailable unless overclocking support
1374  * has been enabled in the X server (by the user).
1375  */
1376 
1377 #define NV_CTRL_GPU_OVERCLOCKING_STATE                          88  /* RW-G */
1378 #define NV_CTRL_GPU_OVERCLOCKING_STATE_NONE                     0
1379 #define NV_CTRL_GPU_OVERCLOCKING_STATE_MANUAL                   1
1380 
1381 
1382 /*
1383  * NV_CTRL_GPU_{2,3}D_CLOCK_FREQS - query or set the GPU and memory
1384  * clocks of the device driving the X screen.  New clock frequencies
1385  * are tested before being applied, and may be rejected.
1386  *
1387  * Note: if the target clocks are too aggressive, their testing may
1388  * render the system unresponsive.
1389  *
1390  * Note: while this attribute can always be queried, it can't be set
1391  * unless NV_CTRL_GPU_OVERCLOCKING_STATE is set to _MANUAL.  Since
1392  * the target clocks may be rejected, the requester should read this
1393  * attribute after the set to determine success or failure.
1394  *
1395  * NV_CTRL_GPU_{2,3}D_CLOCK_FREQS are "packed" integer attributes; the
1396  * GPU clock is stored in the upper 16 bits of the integer, and the
1397  * memory clock is stored in the lower 16 bits of the integer.  All
1398  * clock values are in MHz.
1399  */
1400 
1401 #define NV_CTRL_GPU_2D_CLOCK_FREQS                              89  /* RW-G */
1402 #define NV_CTRL_GPU_3D_CLOCK_FREQS                              90  /* RW-G */
1403 
1404 
1405 /*
1406  * NV_CTRL_GPU_DEFAULT_{2,3}D_CLOCK_FREQS - query the default memory
1407  * and GPU core clocks of the device driving the X screen.
1408  *
1409  * NV_CTRL_GPU_DEFAULT_{2,3}D_CLOCK_FREQS are "packed" integer
1410  * attributes; the GPU clock is stored in the upper 16 bits of the
1411  * integer, and the memory clock is stored in the lower 16 bits of the
1412  * integer.  All clock values are in MHz.
1413  */
1414 
1415 #define NV_CTRL_GPU_DEFAULT_2D_CLOCK_FREQS                      91  /* R--G */
1416 #define NV_CTRL_GPU_DEFAULT_3D_CLOCK_FREQS                      92  /* R--G */
1417 
1418 
1419 /*
1420  * NV_CTRL_GPU_CURRENT_CLOCK_FREQS - query the current GPU and memory
1421  * clocks of the graphics device driving the X screen.
1422  *
1423  * NV_CTRL_GPU_CURRENT_CLOCK_FREQS is a "packed" integer attribute;
1424  * the GPU clock is stored in the upper 16 bits of the integer, and
1425  * the memory clock is stored in the lower 16 bits of the integer.
1426  * All clock values are in MHz.  All clock values are in MHz.
1427  */
1428 
1429 #define NV_CTRL_GPU_CURRENT_CLOCK_FREQS                         93  /* R--G */
1430 
1431 
1432 /*
1433  * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS - Holds the last calculated
1434  * optimal 3D clock frequencies found by the
1435  * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION process.  Querying this
1436  * attribute before having probed for the optimal clocks will return
1437  * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_INVALID
1438  *
1439  * Note: unless NV_CTRL_GPU_OVERCLOCKING_STATE is set to _MANUAL, the
1440  * optimal clock detection process is unavailable.
1441  */
1442 
1443 #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS                         94  /* R--G */
1444 #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_INVALID                  0
1445 
1446 
1447 /*
1448  * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION - set to _START to
1449  * initiate testing for the optimal 3D clock frequencies.  Once
1450  * found, the optimal clock frequencies will be returned by the
1451  * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS attribute asynchronously
1452  * (using an X event, see XNVCtrlSelectNotify).
1453  *
1454  * To cancel an ongoing test for the optimal clocks, set the
1455  * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION attribute to _CANCEL
1456  *
1457  * Note: unless NV_CTRL_GPU_OVERCLOCKING_STATE is set to _MANUAL, the
1458  * optimal clock detection process is unavailable.
1459  */
1460 
1461 #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION               95  /* -W-G */
1462 #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_START          0
1463 #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_CANCEL         1
1464 
1465 
1466 /*
1467  * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE - query this
1468  * variable to know if a test is currently being run to
1469  * determine the optimal 3D clock frequencies.  _BUSY means a
1470  * test is currently running, _IDLE means the test is not running.
1471  *
1472  * Note: unless NV_CTRL_GPU_OVERCLOCKING_STATE is set to _MANUAL, the
1473  * optimal clock detection process is unavailable.
1474  */
1475 
1476 #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE         96  /* R--G */
1477 #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE_IDLE     0
1478 #define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE_BUSY     1
1479 
1480 
1481 /*
1482  * NV_CTRL_FLATPANEL_CHIP_LOCATION - for the specified display device,
1483  * report whether the flat panel is driven by the on-chip controller,
1484  * or a separate controller chip elsewhere on the graphics board.
1485  * This attribute is only available for flat panels.
1486  */
1487 
1488 #define NV_CTRL_FLATPANEL_CHIP_LOCATION                         215/* R-DG */
1489 #define NV_CTRL_FLATPANEL_CHIP_LOCATION_INTERNAL                  0
1490 #define NV_CTRL_FLATPANEL_CHIP_LOCATION_EXTERNAL                  1
1491 
1492 /*
1493  * NV_CTRL_FLATPANEL_LINK - report the number of links for a DVI connection, or
1494  * the main link's active lane count for DisplayPort.
1495  * This attribute is only available for flat panels.
1496  */
1497 
1498 #define NV_CTRL_FLATPANEL_LINK                                  216/* R-DG */
1499 #define NV_CTRL_FLATPANEL_LINK_SINGLE                             0
1500 #define NV_CTRL_FLATPANEL_LINK_DUAL                               1
1501 #define NV_CTRL_FLATPANEL_LINK_QUAD                               3
1502 
1503 /*
1504  * NV_CTRL_FLATPANEL_SIGNAL - for the specified display device, report
1505  * whether the flat panel is driven by an LVDS, TMDS, or DisplayPort signal.
1506  * This attribute is only available for flat panels.
1507  */
1508 
1509 #define NV_CTRL_FLATPANEL_SIGNAL                                217/* R-DG */
1510 #define NV_CTRL_FLATPANEL_SIGNAL_LVDS                             0
1511 #define NV_CTRL_FLATPANEL_SIGNAL_TMDS                             1
1512 #define NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT                      2
1513 
1514 
1515 /*
1516  * NV_CTRL_USE_HOUSE_SYNC - when TRUE, the server (master) frame lock
1517  * device will propagate the incoming house sync signal as the outgoing
1518  * frame lock sync signal.  If the frame lock device cannot detect a
1519  * frame lock sync signal, it will default to using the internal timings
1520  * from the GPU connected to the primary connector.
1521  *
1522  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
1523  * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN
1524  * target.
1525  */
1526 
1527 #define NV_CTRL_USE_HOUSE_SYNC                                  218/* RW-F */
1528 #define NV_CTRL_USE_HOUSE_SYNC_FALSE                            0
1529 #define NV_CTRL_USE_HOUSE_SYNC_TRUE                             1
1530 
1531 /*
1532  * NV_CTRL_EDID_AVAILABLE - report if an EDID is available for the
1533  * specified display device.
1534  *
1535  * This attribute may also be queried through XNVCTRLQueryTargetAttribute()
1536  * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN
1537  * target.
1538  */
1539 
1540 #define NV_CTRL_EDID_AVAILABLE                                  219 /* R-DG */
1541 #define NV_CTRL_EDID_AVAILABLE_FALSE                            0
1542 #define NV_CTRL_EDID_AVAILABLE_TRUE                             1
1543 
1544 /*
1545  * NV_CTRL_FORCE_STEREO - when TRUE, OpenGL will force stereo flipping
1546  * even when no stereo drawables are visible (if the device is configured
1547  * to support it, see the "Stereo" X config option).
1548  * When false, fall back to the default behavior of only flipping when a
1549  * stereo drawable is visible.
1550  */
1551 
1552 #define NV_CTRL_FORCE_STEREO                                    220 /* RW- */
1553 #define NV_CTRL_FORCE_STEREO_FALSE                              0
1554 #define NV_CTRL_FORCE_STEREO_TRUE                               1
1555 
1556 
1557 /*
1558  * NV_CTRL_IMAGE_SETTINGS - the image quality setting for OpenGL clients.
1559  *
1560  * This setting is only applied to OpenGL clients that are started
1561  * after this setting is applied.
1562  */
1563 
1564 #define NV_CTRL_IMAGE_SETTINGS                                  221 /* RW-X */
1565 #define NV_CTRL_IMAGE_SETTINGS_HIGH_QUALITY                     0
1566 #define NV_CTRL_IMAGE_SETTINGS_QUALITY                          1
1567 #define NV_CTRL_IMAGE_SETTINGS_PERFORMANCE                      2
1568 #define NV_CTRL_IMAGE_SETTINGS_HIGH_PERFORMANCE                 3
1569 
1570 
1571 /*
1572  * NV_CTRL_XINERAMA - return whether xinerama is enabled
1573  */
1574 
1575 #define NV_CTRL_XINERAMA                                        222 /* R--G */
1576 #define NV_CTRL_XINERAMA_OFF                                    0
1577 #define NV_CTRL_XINERAMA_ON                                     1
1578 
1579 /*
1580  * NV_CTRL_XINERAMA_STEREO - when TRUE, OpenGL will allow stereo flipping
1581  * on multiple X screens configured with Xinerama.
1582  * When FALSE, flipping is allowed only on one X screen at a time.
1583  */
1584 
1585 #define NV_CTRL_XINERAMA_STEREO                                  223 /* RW- */
1586 #define NV_CTRL_XINERAMA_STEREO_FALSE                            0
1587 #define NV_CTRL_XINERAMA_STEREO_TRUE                             1
1588 
1589 /*
1590  * NV_CTRL_BUS_RATE - if the bus type of the specified device is AGP, then
1591  * NV_CTRL_BUS_RATE returns the configured AGP transfer rate.  If the bus type
1592  * is PCI Express, then this attribute returns the maximum link width.
1593  * When this attribute is queried on an X screen target, the bus rate of the
1594  * GPU driving the X screen is returned.
1595  */
1596 
1597 #define NV_CTRL_BUS_RATE                                        224  /* R--GI */
1598 
1599 /*
1600  * NV_CTRL_GPU_PCIE_MAX_LINK_WIDTH - returns the maximum
1601  * PCIe link width, in number of lanes.
1602  */
1603 #define NV_CTRL_GPU_PCIE_MAX_LINK_WIDTH  NV_CTRL_BUS_RATE
1604 
1605 /*
1606  * NV_CTRL_SHOW_SLI_HUD - when TRUE, OpenGL will draw information about the
1607  * current SLI mode.
1608  * Renamed this attribute to NV_CTRL_SHOW_SLI_VISUAL_INDICATOR
1609  */
1610 
1611 #define NV_CTRL_SHOW_SLI_HUD         NV_CTRL_SHOW_SLI_VISUAL_INDICATOR
1612 #define NV_CTRL_SHOW_SLI_HUD_FALSE   NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_FALSE
1613 #define NV_CTRL_SHOW_SLI_HUD_TRUE    NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_TRUE
1614 
1615 /*
1616  * NV_CTRL_SHOW_SLI_VISUAL_INDICATOR - when TRUE, OpenGL will draw information
1617  * about the current SLI mode.
1618  */
1619 
1620 #define NV_CTRL_SHOW_SLI_VISUAL_INDICATOR                       225  /* RW-X */
1621 #define NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_FALSE                   0
1622 #define NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_TRUE                    1
1623 
1624 /*
1625  * NV_CTRL_XV_SYNC_TO_DISPLAY - this control is valid when TwinView and
1626  * XVideo Sync To VBlank are enabled.
1627  * It controls which display device will be synched to.
1628  */
1629 
1630 #define NV_CTRL_XV_SYNC_TO_DISPLAY                               226  /* RW- */
1631 
1632 /*
1633  * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2 - this attribute is only
1634  * intended to be used to query the ValidValues for
1635  * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for VIDEO_FORMAT values between
1636  * 31 and 63.  See NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for details.
1637  */
1638 
1639 #define NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2                    227  /* ---GI */
1640 
1641 /*
1642  * The following is deprecated; use NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2,
1643  * instead
1644  */
1645 #define NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT2                         227  /* --- */
1646 
1647 
1648 /*
1649  * NV_CTRL_GVO_OVERRIDE_HW_CSC - Override the SDI hardware's Color Space
1650  * Conversion with the values controlled through
1651  * XNVCTRLSetGvoColorConversion() and XNVCTRLGetGvoColorConversion().  If
1652  * this attribute is FALSE, then the values specified through
1653  * XNVCTRLSetGvoColorConversion() are ignored.
1654  */
1655 
1656 #define NV_CTRL_GVO_OVERRIDE_HW_CSC                              228  /* RW- */
1657 #define NV_CTRL_GVO_OVERRIDE_HW_CSC_FALSE                        0
1658 #define NV_CTRL_GVO_OVERRIDE_HW_CSC_TRUE                         1
1659 
1660 
1661 /*
1662  * NV_CTRL_GVO_CAPABILITIES - this read-only attribute describes GVO
1663  * capabilities that differ between NVIDIA SDI products.  This value
1664  * is a bitmask where each bit indicates whether that capability is
1665  * available.
1666  *
1667  * APPLY_CSC_IMMEDIATELY - whether the CSC matrix, offset, and scale
1668  * specified through XNVCTRLSetGvoColorConversion() will take affect
1669  * immediately, or only after SDI output is disabled and enabled
1670  * again.
1671  *
1672  * APPLY_CSC_TO_X_SCREEN - whether the CSC matrix, offset, and scale
1673  * specified through XNVCTRLSetGvoColorConversion() will also apply
1674  * to GVO output of an X screen, or only to OpenGL GVO output, as
1675  * enabled through the GLX_NV_video_out extension.
1676  *
1677  * COMPOSITE_TERMINATION - whether the 75 ohm termination of the
1678  * SDI composite input signal can be programmed through the
1679  * NV_CTRL_GVO_COMPOSITE_TERMINATION attribute.
1680  *
1681  * SHARED_SYNC_BNC - whether the SDI device has a single BNC
1682  * connector used for both (SDI & Composite) incoming signals.
1683  *
1684  * MULTIRATE_SYNC - whether the SDI device supports synchronization
1685  * of input and output video modes that match in being odd or even
1686  * modes (ie, AA.00 Hz modes can be synched to other BB.00 Hz modes and
1687  * AA.XX Hz can match to BB.YY Hz where .XX and .YY are not .00)
1688  */
1689 
1690 #define NV_CTRL_GVO_CAPABILITIES                                 229  /* R-- */
1691 #define NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_IMMEDIATELY           0x00000001
1692 #define NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_TO_X_SCREEN           0x00000002
1693 #define NV_CTRL_GVO_CAPABILITIES_COMPOSITE_TERMINATION           0x00000004
1694 #define NV_CTRL_GVO_CAPABILITIES_SHARED_SYNC_BNC                 0x00000008
1695 #define NV_CTRL_GVO_CAPABILITIES_MULTIRATE_SYNC                  0x00000010
1696 #define NV_CTRL_GVO_CAPABILITIES_ADVANCE_SYNC_SKEW               0x00000020
1697 
1698 
1699 /*
1700  * NV_CTRL_GVO_COMPOSITE_TERMINATION - enable or disable 75 ohm
1701  * termination of the SDI composite input signal.
1702  */
1703 
1704 #define NV_CTRL_GVO_COMPOSITE_TERMINATION                        230  /* RW- */
1705 #define NV_CTRL_GVO_COMPOSITE_TERMINATION_ENABLE                   1
1706 #define NV_CTRL_GVO_COMPOSITE_TERMINATION_DISABLE                  0
1707 
1708 
1709 /*
1710  * NV_CTRL_ASSOCIATED_DISPLAY_DEVICES - display device mask indicating
1711  * which display devices are "associated" with the specified X screen
1712  * (ie: are available to the X screen for displaying the X screen).
1713  */
1714 
1715 #define NV_CTRL_ASSOCIATED_DISPLAY_DEVICES                       231 /* RW- */
1716 
1717 /*
1718  * NV_CTRL_FRAMELOCK_SLAVES - get/set whether the display device(s)
1719  * given should listen or ignore the master's sync signal.
1720  *
1721  * This attribute can only be queried through XNVCTRLQueryTargetAttribute()
1722  * using a NV_CTRL_TARGET_TYPE_GPU target.  This attribute cannot be
1723  * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN.
1724  */
1725 
1726 #define NV_CTRL_FRAMELOCK_SLAVES                                 232 /* RW-G */
1727 
1728 /*
1729  * NV_CTRL_FRAMELOCK_MASTERABLE - Can any of the given display devices
1730  * be set as master of the frame lock group.  Returns a bitmask of the
1731  * corresponding display devices that can be set as master.
1732  *
1733  * This attribute can only be queried through XNVCTRLQueryTargetAttribute()
1734  * using a NV_CTRL_TARGET_TYPE_GPU target.  This attribute cannot be
1735  * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN.
1736  */
1737 
1738 #define NV_CTRL_FRAMELOCK_MASTERABLE                             233 /* R-DG */
1739 
1740 /*
1741  * NV_CTRL_PROBE_DISPLAYS - re-probes the hardware to detect what
1742  * display devices are connected to the GPU or GPU driving the
1743  * specified X screen.  Returns a display mask.
1744  *
1745  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
1746  * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
1747  */
1748 
1749 #define NV_CTRL_PROBE_DISPLAYS                                   234 /* R--G */
1750 
1751 
1752 /*
1753  * NV_CTRL_REFRESH_RATE - Returns the refresh rate of the specified
1754  * display device in 100 * Hz (ie. to get the refresh rate in Hz, divide
1755  * the returned value by 100.)
1756  *
1757  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
1758  * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
1759  */
1760 
1761 #define NV_CTRL_REFRESH_RATE                                     235 /* R-DG */
1762 
1763 
1764 /*
1765  * NV_CTRL_GVO_FLIP_QUEUE_SIZE - The Graphics to Video Out interface
1766  * exposed through NV-CONTROL and the GLX_NV_video_out extension uses
1767  * an internal flip queue when pbuffers are sent to the video device
1768  * (via glXSendPbufferToVideoNV()).  The NV_CTRL_GVO_FLIP_QUEUE_SIZE
1769  * can be used to query and assign the flip queue size.  This
1770  * attribute is applied to GLX when glXGetVideoDeviceNV() is called by
1771  * the application.
1772  */
1773 
1774 #define NV_CTRL_GVO_FLIP_QUEUE_SIZE                              236 /* RW- */
1775 
1776 
1777 /*
1778  * NV_CTRL_CURRENT_SCANLINE - query the current scanline for the
1779  * specified display device.
1780  */
1781 
1782 #define NV_CTRL_CURRENT_SCANLINE                                 237 /* R-DG */
1783 
1784 
1785 /*
1786  * NV_CTRL_INITIAL_PIXMAP_PLACEMENT - Controls where X pixmaps are initially
1787  * created.
1788  *
1789  * NV_CTRL_INITIAL_PIXMAP_PLACEMENT_FORCE_SYSMEM causes pixmaps to stay in
1790  * system memory. These pixmaps can't be accelerated by the NVIDIA driver; this
1791  * will cause blank windows if used with an OpenGL compositing manager.
1792  * NV_CTRL_INITIAL_PIXMAP_PLACEMENT_SYSMEM creates pixmaps in system memory
1793  * initially, but allows them to migrate to video memory.
1794  * NV_CTRL_INITIAL_PIXMAP_PLACEMENT_VIDMEM creates pixmaps in video memory
1795  * when enough resources are available.
1796  * NV_CTRL_INITIAL_PIXMAP_PLACEMENT_RESERVED is currently reserved for future
1797  * use.  Behavior is undefined.
1798  * NV_CTRL_INITIAL_PIXMAP_PLACEMENT_GPU_SYSMEM creates pixmaps in GPU accessible
1799  * system memory when enough resources are available.
1800  */
1801 
1802 #define NV_CTRL_INITIAL_PIXMAP_PLACEMENT                         238 /* RW- */
1803 #define NV_CTRL_INITIAL_PIXMAP_PLACEMENT_FORCE_SYSMEM            0
1804 #define NV_CTRL_INITIAL_PIXMAP_PLACEMENT_SYSMEM                  1
1805 #define NV_CTRL_INITIAL_PIXMAP_PLACEMENT_VIDMEM                  2
1806 #define NV_CTRL_INITIAL_PIXMAP_PLACEMENT_RESERVED                3
1807 #define NV_CTRL_INITIAL_PIXMAP_PLACEMENT_GPU_SYSMEM              4
1808 
1809 
1810 /*
1811  * NV_CTRL_PCI_BUS - Returns the PCI bus number the specified device is using.
1812  */
1813 
1814 #define NV_CTRL_PCI_BUS                                          239 /* R--GI */
1815 
1816 
1817 /*
1818  * NV_CTRL_PCI_DEVICE - Returns the PCI device number the specified device is
1819  * using.
1820  */
1821 
1822 #define NV_CTRL_PCI_DEVICE                                       240 /* R--GI */
1823 
1824 
1825 /*
1826  * NV_CTRL_PCI_FUNCTION - Returns the PCI function number the specified device
1827  * is using.
1828  */
1829 
1830 #define NV_CTRL_PCI_FUNCTION                                     241 /* R--GI */
1831 
1832 
1833 /*
1834  * NV_CTRL_FRAMELOCK_FPGA_REVISION - Querys the FPGA revision of the
1835  * Frame Lock device.
1836  *
1837  * This attribute must be queried through XNVCTRLQueryTargetAttribute()
1838  * using a NV_CTRL_TARGET_TYPE_FRAMELOCK target.
1839  */
1840 
1841 #define NV_CTRL_FRAMELOCK_FPGA_REVISION                          242 /* R--F */
1842 
1843 /*
1844  * NV_CTRL_MAX_SCREEN_{WIDTH,HEIGHT} - the maximum allowable size, in
1845  * pixels, of either the specified X screen (if the target_type of the
1846  * query is an X screen), or any X screen on the specified GPU (if the
1847  * target_type of the query is a GPU).
1848  */
1849 
1850 #define NV_CTRL_MAX_SCREEN_WIDTH                                 243 /* R--G */
1851 #define NV_CTRL_MAX_SCREEN_HEIGHT                                244 /* R--G */
1852 
1853 
1854 /*
1855  * NV_CTRL_MAX_DISPLAYS - the maximum number of display devices that
1856  * can be driven simultaneously on a GPU (e.g., that can be used in a
1857  * MetaMode at once).  Note that this does not indicate the maximum
1858  * number of bits that can be set in NV_CTRL_CONNECTED_DISPLAYS,
1859  * because more display devices can be connected than are actively in
1860  * use.
1861  */
1862 
1863 #define NV_CTRL_MAX_DISPLAYS                                     245 /* R--G */
1864 
1865 
1866 /*
1867  * NV_CTRL_DYNAMIC_TWINVIEW - Returns whether or not the screen
1868  * supports dynamic twinview.
1869  */
1870 
1871 #define NV_CTRL_DYNAMIC_TWINVIEW                                 246 /* R-- */
1872 
1873 
1874 /*
1875  * NV_CTRL_MULTIGPU_DISPLAY_OWNER - Returns the (NV-CONTROL) GPU ID of
1876  * the GPU that has the display device(s) used for showing the X Screen.
1877  */
1878 
1879 #define NV_CTRL_MULTIGPU_DISPLAY_OWNER                           247 /* R-- */
1880 
1881 
1882 /*
1883  * NV_CTRL_GPU_SCALING - not supported
1884  */
1885 
1886 #define NV_CTRL_GPU_SCALING                                      248 /* RWDG */
1887 
1888 #define NV_CTRL_GPU_SCALING_TARGET_INVALID                       0
1889 #define NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT            1
1890 #define NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE              2
1891 
1892 #define NV_CTRL_GPU_SCALING_METHOD_INVALID                       0
1893 #define NV_CTRL_GPU_SCALING_METHOD_STRETCHED                     1
1894 #define NV_CTRL_GPU_SCALING_METHOD_CENTERED                      2
1895 #define NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED                 3
1896 
1897 
1898 /*
1899  * NV_CTRL_FRONTEND_RESOLUTION - not supported
1900  */
1901 
1902 #define NV_CTRL_FRONTEND_RESOLUTION                              249 /* R-DG */
1903 
1904 
1905 /*
1906  * NV_CTRL_BACKEND_RESOLUTION - not supported
1907  */
1908 
1909 #define NV_CTRL_BACKEND_RESOLUTION                               250 /* R-DG */
1910 
1911 
1912 /*
1913  * NV_CTRL_FLATPANEL_NATIVE_RESOLUTION - Returns the dimensions of the
1914  * native resolution of the flat panel as determined by the
1915  * NVIDIA X Driver.
1916  *
1917  * The native resolution is the resolution at which a flat panel
1918  * must display any image.  All other resolutions must be scaled to this
1919  * resolution through GPU scaling or the DFP's native scaling capabilities
1920  * in order to be displayed.
1921  *
1922  * This attribute is only valid for flat panel (DFP) display devices.
1923  *
1924  * This attribute is a packed integer; the width is packed in the upper
1925  * 16-bits and the height is packed in the lower 16-bits.
1926  */
1927 
1928 #define NV_CTRL_FLATPANEL_NATIVE_RESOLUTION                      251 /* R-DG */
1929 
1930 
1931 /*
1932  * NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION - not supported
1933  */
1934 
1935 #define NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION                    252 /* R-DG */
1936 
1937 
1938 /*
1939  * NV_CTRL_GPU_SCALING_ACTIVE - not supported
1940  */
1941 
1942 #define NV_CTRL_GPU_SCALING_ACTIVE                               253 /* R-DG */
1943 
1944 
1945 /*
1946  * NV_CTRL_DFP_SCALING_ACTIVE - not supported
1947  */
1948 
1949 #define NV_CTRL_DFP_SCALING_ACTIVE                               254 /* R-DG */
1950 
1951 
1952 /*
1953  * NV_CTRL_FSAA_APPLICATION_ENHANCED - Controls how the NV_CTRL_FSAA_MODE
1954  * is applied when NV_CTRL_FSAA_APPLICATION_CONTROLLED is set to
1955  * NV_CTRL_APPLICATION_CONTROLLED_DISABLED.  When
1956  * NV_CTRL_FSAA_APPLICATION_ENHANCED is _DISABLED, OpenGL applications will
1957  * be forced to use the FSAA mode specified by NV_CTRL_FSAA_MODE.  when set
1958  * to _ENABLED, only those applications that have selected a multisample
1959  * FBConfig will be made to use the NV_CTRL_FSAA_MODE specified.
1960  *
1961  * This attribute is ignored when NV_CTRL_FSAA_APPLICATION_CONTROLLED is
1962  * set to NV_CTRL_FSAA_APPLICATION_CONTROLLED_ENABLED.
1963  */
1964 
1965 #define NV_CTRL_FSAA_APPLICATION_ENHANCED                       255  /* RW-X */
1966 #define NV_CTRL_FSAA_APPLICATION_ENHANCED_ENABLED                 1
1967 #define NV_CTRL_FSAA_APPLICATION_ENHANCED_DISABLED                0
1968 
1969 
1970 /*
1971  * NV_CTRL_FRAMELOCK_SYNC_RATE_4 - This is the refresh rate that the
1972  * frame lock board is sending to the GPU with 4 digits of precision.
1973  *
1974  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
1975  * using a NV_CTRL_TARGET_TYPE_FRAMELOCK.
1976  */
1977 
1978 #define NV_CTRL_FRAMELOCK_SYNC_RATE_4                           256 /* R--F */
1979 
1980 
1981 /*
1982  * NV_CTRL_GVO_LOCK_OWNER - indicates that the GVO device is available
1983  * or in use (by GLX or an X screen).
1984  *
1985  * The GVO device is locked by GLX when either glXGetVideoDeviceNV
1986  * (part of GLX_NV_video_out) or glXBindVideoDeviceNV (part of
1987  * GLX_NV_present_video) is called.  All GVO output resources are
1988  * locked until released by the GLX_NV_video_out/GLX_NV_present_video
1989  * client.
1990  *
1991  * The GVO device is locked/unlocked by an X screen, when the GVO device is
1992  * used in a MetaMode on an X screen.
1993  *
1994  * When the GVO device is locked, setting of the following GVO NV-CONTROL
1995  * attributes will not happen immediately and will instead be cached.  The
1996  * GVO resource will need to be disabled/released and re-enabled/claimed for
1997  * the values to be flushed. These attributes are:
1998  *
1999  *    NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT
2000  *    NV_CTRL_GVO_DATA_FORMAT
2001  *    NV_CTRL_GVO_FLIP_QUEUE_SIZE
2002  */
2003 
2004 #define NV_CTRL_GVO_LOCK_OWNER                                  257 /* R-- */
2005 #define NV_CTRL_GVO_LOCK_OWNER_NONE                               0
2006 #define NV_CTRL_GVO_LOCK_OWNER_GLX                                1
2007 #define NV_CTRL_GVO_LOCK_OWNER_CLONE /* no longer supported */    2
2008 #define NV_CTRL_GVO_LOCK_OWNER_X_SCREEN                           3
2009 
2010 
2011 /*
2012  * NV_CTRL_HWOVERLAY - when a workstation overlay is in use, reports
2013  * whether the hardware overlay is used, or if the overlay is emulated.
2014  */
2015 
2016 #define NV_CTRL_HWOVERLAY                                       258 /* R-- */
2017 #define NV_CTRL_HWOVERLAY_FALSE                                   0
2018 #define NV_CTRL_HWOVERLAY_TRUE                                    1
2019 
2020 /*
2021  * NV_CTRL_NUM_GPU_ERRORS_RECOVERED - Returns the number of GPU errors
2022  * occured. This attribute may be queried through XNVCTRLQueryTargetAttribute()
2023  * using a NV_CTRL_TARGET_TYPE_X_SCREEN target.
2024  */
2025 
2026 #define NV_CTRL_NUM_GPU_ERRORS_RECOVERED                        259 /* R--- */
2027 
2028 
2029 /*
2030  * NV_CTRL_REFRESH_RATE_3 - Returns the refresh rate of the specified
2031  * display device in 1000 * Hz (ie. to get the refresh rate in Hz, divide
2032  * the returned value by 1000.)
2033  *
2034  * This attribute may be queried through XNVCTRLQueryTargetAttribute()
2035  * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
2036  */
2037 
2038 #define NV_CTRL_REFRESH_RATE_3                                  260 /* R-DG */
2039 
2040 
2041 /*
2042  * NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS - if the OnDemandVBlankInterrupts
2043  * X driver option is set to true, this attribute can be used to
2044  * determine if on-demand VBlank interrupt control is enabled on the
2045  * specified GPU, as well as to enable or disable this feature.
2046  */
2047 
2048 #define NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS                      261 /* RW-G */
2049 #define NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS_OFF                    0
2050 #define NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS_ON                     1
2051 
2052 
2053 /*
2054  * NV_CTRL_GPU_POWER_SOURCE reports the type of power source
2055  * of the GPU driving the X screen.
2056  */
2057 
2058 #define NV_CTRL_GPU_POWER_SOURCE                                262 /* R--G */
2059 #define NV_CTRL_GPU_POWER_SOURCE_AC                               0
2060 #define NV_CTRL_GPU_POWER_SOURCE_BATTERY                          1
2061 
2062 
2063 /*
2064  * NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE is deprecated
2065  */
2066 
2067 #define NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE                    263 /* R--G */
2068 #define NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE_DESKTOP              0
2069 #define NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE_MAXPERF              1
2070 
2071 
2072 /* NV_CTRL_GLYPH_CACHE - Enables RENDER Glyph Caching to VRAM */
2073 
2074 #define NV_CTRL_GLYPH_CACHE                                     264 /* RW- */
2075 #define NV_CTRL_GLYPH_CACHE_DISABLED                              0
2076 #define NV_CTRL_GLYPH_CACHE_ENABLED                               1
2077 
2078 
2079 /*
2080  * NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL reports the current
2081  * Performance level of the GPU driving the X screen.  Each
2082  * Performance level has associated NVClock and Mem Clock values.
2083  */
2084 
2085 #define NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL                   265 /* R--G */
2086 
2087 
2088 /*
2089  * NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE reports if Adaptive Clocking
2090  * is Enabled on the GPU driving the X screen.
2091  */
2092 
2093 #define NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE                        266 /* R--G */
2094 #define NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_DISABLED                 0
2095 #define NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_ENABLED                  1
2096 
2097 
2098 /*
2099  * NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED - Returns whether or not the GVO output
2100  * video is locked to the GPU.
2101  */
2102 
2103 #define NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED                         267 /* R--- */
2104 #define NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_FALSE                     0
2105 #define NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_TRUE                      1
2106 
2107 
2108 /*
2109  * NV_CTRL_GVO_SYNC_LOCK_STATUS - Returns whether or not the GVO device
2110  * is locked to the input ref signal.  If the sync mode is set to
2111  * NV_CTRL_GVO_SYNC_MODE_GENLOCK, then this returns the genlock
2112  * sync status, and if the sync mode is set to NV_CTRL_GVO_SYNC_MODE_FRAMELOCK,
2113  * then this reports the frame lock status.
2114  */
2115 
2116 #define NV_CTRL_GVO_SYNC_LOCK_STATUS                            268 /* R--- */
2117 #define NV_CTRL_GVO_SYNC_LOCK_STATUS_UNLOCKED                     0
2118 #define NV_CTRL_GVO_SYNC_LOCK_STATUS_LOCKED                       1
2119 
2120 
2121 /*
2122  * NV_CTRL_GVO_ANC_TIME_CODE_GENERATION - Allows SDI device to generate
2123  * time codes in the ANC region of the SDI video output stream.
2124  */
2125 
2126 #define NV_CTRL_GVO_ANC_TIME_CODE_GENERATION                    269 /* RW-- */
2127 #define NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_DISABLE              0
2128 #define NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_ENABLE               1
2129 
2130 
2131 /*
2132  * NV_CTRL_GVO_COMPOSITE - Enables/Disables SDI compositing.  This attribute
2133  * is only available when an SDI input source is detected and is in genlock
2134  * mode.
2135  */
2136 
2137 #define NV_CTRL_GVO_COMPOSITE                                   270 /* RW-- */
2138 #define NV_CTRL_GVO_COMPOSITE_DISABLE                             0
2139 #define NV_CTRL_GVO_COMPOSITE_ENABLE                              1
2140 
2141 
2142 /*
2143  * NV_CTRL_GVO_COMPOSITE_ALPHA_KEY - When compositing is enabled, this
2144  * enables/disables alpha blending.
2145  */
2146 
2147 #define NV_CTRL_GVO_COMPOSITE_ALPHA_KEY                         271 /* RW-- */
2148 #define NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_DISABLE                   0
2149 #define NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_ENABLE                    1
2150 
2151 
2152 /*
2153  * NV_CTRL_GVO_COMPOSITE_LUMA_KEY_RANGE - Set the values of a luma
2154  * channel range.  This is a packed int that has the following format
2155  * (in order of high-bits to low bits):
2156  *
2157  * Range # (11 bits), (Enabled 1 bit), min value (10 bits), max value (10 bits)
2158  *
2159  * To query the current values, pass the range # throught the display_mask
2160  * variable.
2161  */
2162 
2163 #define NV_CTRL_GVO_COMPOSITE_LUMA_KEY_RANGE                    272 /* RW-- */
2164 
2165 #define NV_CTRL_GVO_COMPOSITE_MAKE_RANGE(range, enable, min, max) \
2166     ((((min) & 0x3FF)   <<  0) |  \
2167      (((max) & 0x3FF)   << 10) |  \
2168      (((enable) & 0x1)  << 20) |  \
2169      (((range) & 0x7FF) << 21))
2170 
2171 #define NV_CTRL_GVO_COMPOSITE_GET_RANGE(val, range, enable, min, max) \
2172     (min)    = ((val) >> 0)  & 0x3FF; \
2173     (max)    = ((val) >> 10) & 0x3FF; \
2174     (enable) = ((val) >> 20) & 0x1;   \
2175     (range)  = ((val) >> 21) & 0x7FF;
2176 
2177 
2178 /*
2179  * NV_CTRL_GVO_COMPOSITE_CR_KEY_RANGE - Set the values of a CR
2180  * channel range.  This is a packed int that has the following format
2181  * (in order of high-bits to low bits):
2182  *
2183  * Range # (11 bits), (Enabled 1 bit), min value (10 bits), max value (10 bits)
2184  *
2185  * To query the current values, pass the range # throught he display_mask
2186  * variable.
2187  */
2188 
2189 #define NV_CTRL_GVO_COMPOSITE_CR_KEY_RANGE                      273 /* RW-- */
2190 
2191 
2192 /*
2193  * NV_CTRL_GVO_COMPOSITE_CB_KEY_RANGE - Set the values of a CB
2194  * channel range.  This is a packed int that has the following format
2195  * (in order of high-bits to low bits):
2196  *
2197  * Range # (11 bits), (Enabled 1 bit), min value (10 bits), max value (10 bits)
2198  *
2199  * To query the current values, pass the range # throught he display_mask
2200  * variable.
2201  */
2202 
2203 #define NV_CTRL_GVO_COMPOSITE_CB_KEY_RANGE                      274 /* RW-- */
2204 
2205 
2206 /*
2207  * NV_CTRL_GVO_COMPOSITE_NUM_KEY_RANGES - Returns the number of ranges
2208  * available for each channel (Y/Luma, Cr, and Cb.)
2209  */
2210 
2211 #define NV_CTRL_GVO_COMPOSITE_NUM_KEY_RANGES                    275 /* R--- */
2212 
2213 
2214 /*
2215  * NV_CTRL_SWITCH_TO_DISPLAYS - Can be used to select which displays
2216  * to switch to (as a hotkey event).
2217  */
2218 
2219 #define NV_CTRL_SWITCH_TO_DISPLAYS                              276 /* -W- */
2220 
2221 
2222 /*
2223  * NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT - Event that notifies
2224  * when a notebook lid change occurs (i.e. when the lid is opened or
2225  * closed.)  This attribute can be queried to retrieve the current
2226  * notebook lid status (opened/closed.)
2227  */
2228 
2229 #define NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT               277 /* RW- */
2230 #define NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT_CLOSE           0
2231 #define NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT_OPEN            1
2232 
2233 /*
2234  * NV_CTRL_NOTEBOOK_INTERNAL_LCD - Returns the display device mask of
2235  * the intenal LCD of a notebook.
2236  */
2237 
2238 #define NV_CTRL_NOTEBOOK_INTERNAL_LCD                           278 /* R-- */
2239 
2240 /*
2241  * NV_CTRL_DEPTH_30_ALLOWED - returns whether the NVIDIA X driver supports
2242  * depth 30 on the specified X screen or GPU.
2243  */
2244 
2245 #define NV_CTRL_DEPTH_30_ALLOWED                                279 /* R--G */
2246 
2247 
2248 /*
2249  * NV_CTRL_MODE_SET_EVENT This attribute is sent as an event
2250  * when hotkey, ctrl-alt-+/- or randr event occurs.  Note that
2251  * This attribute cannot be set or queried and is meant to
2252  * be received by clients that wish to be notified of when
2253  * mode set events occur.
2254  */
2255 
2256 #define NV_CTRL_MODE_SET_EVENT                                  280 /* --- */
2257 
2258 
2259 /*
2260  * NV_CTRL_OPENGL_AA_LINE_GAMMA_VALUE - the gamma value used by
2261  * OpenGL when NV_CTRL_OPENGL_AA_LINE_GAMMA is enabled
2262  */
2263 
2264 #define NV_CTRL_OPENGL_AA_LINE_GAMMA_VALUE                      281 /* RW-X */
2265 
2266 
2267 /*
2268  * NV_CTRL_VCSC_HIGH_PERF_MODE - Is used to both query High Performance Mode
2269  * status on the Visual Computing System, and also to enable or disable High
2270  * Performance Mode.
2271  */
2272 
2273 #define NV_CTRL_VCSC_HIGH_PERF_MODE                             282 /* RW-V */
2274 #define NV_CTRL_VCSC_HIGH_PERF_MODE_DISABLE                       0
2275 #define NV_CTRL_VCSC_HIGH_PERF_MODE_ENABLE                        1
2276 
2277 /*
2278  * NV_CTRL_DISPLAYPORT_LINK_RATE - returns the negotiated lane bandwidth of the
2279  * DisplayPort main link.
2280  * This attribute is only available for DisplayPort flat panels.
2281  */
2282 
2283 #define NV_CTRL_DISPLAYPORT_LINK_RATE                           291 /* R-DG */
2284 #define NV_CTRL_DISPLAYPORT_LINK_RATE_DISABLED                  0x0
2285 #define NV_CTRL_DISPLAYPORT_LINK_RATE_1_62GBPS                  0x6
2286 #define NV_CTRL_DISPLAYPORT_LINK_RATE_2_70GBPS                  0xA
2287 
2288 /*
2289  * NV_CTRL_STEREO_EYES_EXCHANGE - Controls whether or not the left and right
2290  * eyes of a stereo image are flipped.
2291  */
2292 
2293 #define NV_CTRL_STEREO_EYES_EXCHANGE                            292  /* RW-X */
2294 #define NV_CTRL_STEREO_EYES_EXCHANGE_OFF                          0
2295 #define NV_CTRL_STEREO_EYES_EXCHANGE_ON                           1
2296 
2297 /*
2298  * NV_CTRL_NO_SCANOUT - returns whether the special "NoScanout" mode is
2299  * enabled on the specified X screen or GPU; for details on this mode,
2300  * see the description of the "none" value for the "UseDisplayDevice"
2301  * X configuration option in the NVIDIA driver README.
2302  */
2303 
2304 #define NV_CTRL_NO_SCANOUT                                      293 /* R--G */
2305 #define NV_CTRL_NO_SCANOUT_DISABLED                             0
2306 #define NV_CTRL_NO_SCANOUT_ENABLED                              1
2307 
2308 /*
2309  * NV_CTRL_GVO_CSC_CHANGED_EVENT This attribute is sent as an event
2310  * when the color space conversion matrix has been altered by another
2311  * client.
2312  */
2313 
2314 #define NV_CTRL_GVO_CSC_CHANGED_EVENT                           294 /* --- */
2315 
2316 /*
2317  * NV_CTRL_FRAMELOCK_SLAVEABLE - Returns a bitmask of the display devices
2318  * that are (currently) allowed to be selected as slave devices for the
2319  * given GPU
2320  */
2321 
2322 #define NV_CTRL_FRAMELOCK_SLAVEABLE                             295 /* R-DG */
2323 
2324 /*
2325  * NV_CTRL_GVO_SYNC_TO_DISPLAY This attribute controls whether or not
2326  * the non-SDI display device will be sync'ed to the SDI display device
2327  * (when configured in TwinView, Clone Mode or when using the SDI device
2328  * with OpenGL).
2329  */
2330 
2331 #define NV_CTRL_GVO_SYNC_TO_DISPLAY                             296 /* --- */
2332 #define NV_CTRL_GVO_SYNC_TO_DISPLAY_DISABLE                     0
2333 #define NV_CTRL_GVO_SYNC_TO_DISPLAY_ENABLE                      1
2334 
2335 /*
2336  * NV_CTRL_X_SERVER_UNIQUE_ID - returns a pseudo-unique identifier for this
2337  * X server. Intended for use in cases where an NV-CONTROL client communicates
2338  * with multiple X servers, and wants some level of confidence that two
2339  * X Display connections correspond to the same or different X servers.
2340  */
2341 
2342 #define NV_CTRL_X_SERVER_UNIQUE_ID                              297 /* R--- */
2343 
2344 /*
2345  * NV_CTRL_PIXMAP_CACHE - This attribute controls whether the driver attempts to
2346  * store video memory pixmaps in a cache.  The cache speeds up allocation and
2347  * deallocation of pixmaps, but could use more memory than when the cache is
2348  * disabled.
2349  */
2350 
2351 #define NV_CTRL_PIXMAP_CACHE                                    298 /* RW-X */
2352 #define NV_CTRL_PIXMAP_CACHE_DISABLE                              0
2353 #define NV_CTRL_PIXMAP_CACHE_ENABLE                               1
2354 
2355 /*
2356  * NV_CTRL_PIXMAP_CACHE_ROUNDING_SIZE_KB - When the pixmap cache is enabled and
2357  * there is not enough free space in the cache to fit a new pixmap, the driver
2358  * will round up to the next multiple of this number of kilobytes when
2359  * allocating more memory for the cache.
2360  */
2361 
2362 #define NV_CTRL_PIXMAP_CACHE_ROUNDING_SIZE_KB                   299 /* RW-X */
2363 
2364 /*
2365  * NV_CTRL_IS_GVO_DISPLAY - returns whether or not a given display is an
2366  * SDI device.
2367  */
2368 
2369 #define NV_CTRL_IS_GVO_DISPLAY                                  300 /* R-D */
2370 #define NV_CTRL_IS_GVO_DISPLAY_FALSE                              0
2371 #define NV_CTRL_IS_GVO_DISPLAY_TRUE                               1
2372 
2373 /*
2374  * NV_CTRL_PCI_ID - Returns the PCI vendor and device ID of the specified
2375  * device.
2376  *
2377  * NV_CTRL_PCI_ID is a "packed" integer attribute; the PCI vendor ID is stored
2378  * in the upper 16 bits of the integer, and the PCI device ID is stored in the
2379  * lower 16 bits of the integer.
2380  */
2381 
2382 #define NV_CTRL_PCI_ID                                          301 /* R--GI */
2383 
2384 /*
2385  * NV_CTRL_GVO_FULL_RANGE_COLOR - Allow full range color data [4-1019]
2386  * without clamping to [64-940].
2387  */
2388 
2389 #define NV_CTRL_GVO_FULL_RANGE_COLOR                            302 /* RW- */
2390 #define NV_CTRL_GVO_FULL_RANGE_COLOR_DISABLED                     0
2391 #define NV_CTRL_GVO_FULL_RANGE_COLOR_ENABLED                      1
2392 
2393 /*
2394  * NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE - Returns whether or not
2395  * SLI Mosaic Mode supported.
2396  */
2397 
2398 #define NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE                       303 /* R-- */
2399 #define NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE_FALSE                   0
2400 #define NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE_TRUE                    1
2401 
2402 /*
2403  * NV_CTRL_GVO_ENABLE_RGB_DATA - Allows clients to specify when
2404  * the GVO board should process colors as RGB when the output data
2405  * format is one of the NV_CTRL_GVO_DATA_FORMAT_???_PASSTRHU modes.
2406  */
2407 
2408 #define NV_CTRL_GVO_ENABLE_RGB_DATA                             304 /* RW- */
2409 #define NV_CTRL_GVO_ENABLE_RGB_DATA_DISABLE                       0
2410 #define NV_CTRL_GVO_ENABLE_RGB_DATA_ENABLE                        1
2411 
2412 /*
2413  * NV_CTRL_IMAGE_SHARPENING_DEFAULT - Returns default value of
2414  * Image Sharpening.
2415  */
2416 
2417 #define NV_CTRL_IMAGE_SHARPENING_DEFAULT                        305 /* R-- */
2418 
2419 /*
2420  * NV_CTRL_PCI_DOMAIN - Returns the PCI domain number the specified device is
2421  * using.
2422  */
2423 
2424 #define NV_CTRL_PCI_DOMAIN                                      306 /* R--GI */
2425 
2426 /*
2427  * NV_CTRL_GVI_NUM_JACKS - Returns the number of input BNC jacks available
2428  * on a GVI device.
2429  */
2430 
2431 #define NV_CTRL_GVI_NUM_JACKS                                   307 /* R--I */
2432 
2433 /*
2434  * NV_CTRL_GVI_MAX_LINKS_PER_STREAM - Returns the maximum supported number of
2435  * links that can be tied to one stream.
2436  */
2437 
2438 #define NV_CTRL_GVI_MAX_LINKS_PER_STREAM                        308 /* R--I */
2439 
2440 /*
2441  * NV_CTRL_GVI_DETECTED_CHANNEL_BITS_PER_COMPONENT - Returns the detected
2442  * number of bits per component (BPC) of data on the given input jack+
2443  * channel.
2444  *
2445  * The jack number should be specified in the lower 16 bits of the
2446  * "display_mask" parameter, while the channel number should be specified in
2447  * the upper 16 bits.
2448  */
2449 
2450 #define NV_CTRL_GVI_DETECTED_CHANNEL_BITS_PER_COMPONENT         309 /* R--I */
2451 #define NV_CTRL_GVI_BITS_PER_COMPONENT_UNKNOWN                    0
2452 #define NV_CTRL_GVI_BITS_PER_COMPONENT_8                          1
2453 #define NV_CTRL_GVI_BITS_PER_COMPONENT_10                         2
2454 #define NV_CTRL_GVI_BITS_PER_COMPONENT_12                         3
2455 
2456 /*
2457  * NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT - Specify the number of
2458  * bits per component (BPC) of data for the captured stream.
2459  * The stream number should be specified in the "display_mask" parameter.
2460  *
2461  * Note: Setting this attribute may also result in the following
2462  *       NV-CONTROL attributes being reset on the GVI device (to ensure
2463  *       the configuration remains valid):
2464  *           NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING
2465  */
2466 
2467 #define NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT         310 /* RW-I */
2468 
2469 /*
2470  * NV_CTRL_GVI_DETECTED_CHANNEL_COMPONENT_SAMPLING - Returns the detected
2471  * sampling format for the input jack+channel.
2472  *
2473  * The jack number should be specified in the lower 16 bits of the
2474  * "display_mask" parameter, while the channel number should be specified in
2475  * the upper 16 bits.
2476  */
2477 
2478 #define NV_CTRL_GVI_DETECTED_CHANNEL_COMPONENT_SAMPLING         311 /* R--I */
2479 #define NV_CTRL_GVI_COMPONENT_SAMPLING_UNKNOWN                    0
2480 #define NV_CTRL_GVI_COMPONENT_SAMPLING_4444                       1
2481 #define NV_CTRL_GVI_COMPONENT_SAMPLING_4224                       2
2482 #define NV_CTRL_GVI_COMPONENT_SAMPLING_444                        3
2483 #define NV_CTRL_GVI_COMPONENT_SAMPLING_422                        4
2484 #define NV_CTRL_GVI_COMPONENT_SAMPLING_420                        5
2485 
2486 /*
2487  * NV_CTRL_GVI_REQUESTED_COMPONENT_SAMPLING - Specify the sampling format for
2488  * the captured stream.
2489  * The possible values are the NV_CTRL_GVI_DETECTED_COMPONENT_SAMPLING
2490  * constants.
2491  * The stream number should be specified in the "display_mask" parameter.
2492  */
2493 
2494 #define NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING         312 /* RW-I */
2495 
2496 /*
2497  * NV_CTRL_GVI_CHROMA_EXPAND - Enable or disable 4:2:2 -> 4:4:4 chroma
2498  * expansion for the captured stream.  This value is ignored when a
2499  * COMPONENT_SAMPLING format is selected that does not use chroma subsampling,
2500  * or if a BITS_PER_COMPONENT value is selected that is not supported.
2501  * The stream number should be specified in the "display_mask" parameter.
2502  */
2503 
2504 #define NV_CTRL_GVI_REQUESTED_STREAM_CHROMA_EXPAND              313 /* RW-I */
2505 #define NV_CTRL_GVI_CHROMA_EXPAND_FALSE                           0
2506 #define NV_CTRL_GVI_CHROMA_EXPAND_TRUE                            1
2507 
2508 /*
2509  * NV_CTRL_GVI_DETECTED_CHANNEL_COLOR_SPACE - Returns the detected color space
2510  * of the input jack+channel.
2511  *
2512  * The jack number should be specified in the lower 16 bits of the
2513  * "display_mask" parameter, while the channel number should be specified in
2514  * the upper 16 bits.
2515  */
2516 
2517 #define NV_CTRL_GVI_DETECTED_CHANNEL_COLOR_SPACE                314 /* R--I */
2518 #define NV_CTRL_GVI_COLOR_SPACE_UNKNOWN                           0
2519 #define NV_CTRL_GVI_COLOR_SPACE_GBR                               1
2520 #define NV_CTRL_GVI_COLOR_SPACE_GBRA                              2
2521 #define NV_CTRL_GVI_COLOR_SPACE_GBRD                              3
2522 #define NV_CTRL_GVI_COLOR_SPACE_YCBCR                             4
2523 #define NV_CTRL_GVI_COLOR_SPACE_YCBCRA                            5
2524 #define NV_CTRL_GVI_COLOR_SPACE_YCBCRD                            6
2525 
2526 /*
2527  * NV_CTRL_GVI_DETECTED_CHANNEL_LINK_ID - Returns the detected link identifier
2528  * for the given input jack+channel.
2529  *
2530  * The jack number should be specified in the lower 16 bits of the
2531  * "display_mask" parameter, while the channel number should be specified in
2532  * the upper 16 bits.
2533  */
2534 
2535 #define NV_CTRL_GVI_DETECTED_CHANNEL_LINK_ID                    315 /* R--I */
2536 #define NV_CTRL_GVI_LINK_ID_UNKNOWN                          0xFFFF
2537 
2538 /*
2539  * NV_CTRL_GVI_DETECTED_CHANNEL_SMPTE352_IDENTIFIER - Returns the 4-byte
2540  * SMPTE 352 identifier from the given input jack+channel.
2541  *
2542  * The jack number should be specified in the lower 16 bits of the
2543  * "display_mask" parameter, while the channel number should be specified in
2544  * the upper 16 bits.
2545  */
2546 
2547 #define NV_CTRL_GVI_DETECTED_CHANNEL_SMPTE352_IDENTIFIER        316 /* R--I */
2548 
2549 /*
2550  * NV_CTRL_GVI_GLOBAL_IDENTIFIER - Returns a global identifier for the
2551  * GVI device.  This identifier can be used to relate GVI devices named
2552  * in NV-CONTROL with those enumerated in OpenGL.
2553  */
2554 
2555 #define NV_CTRL_GVI_GLOBAL_IDENTIFIER                           317 /* R--I */
2556 
2557 /*
2558  * NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION - Returns the number of nanoseconds
2559  * that one unit of NV_CTRL_FRAMELOCK_SYNC_DELAY corresponds to.
2560  */
2561 #define NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION                 318 /* R-- */
2562 
2563 /*
2564  * NV_CTRL_GPU_COOLER_MANUAL_CONTROL - Query the current or set a new
2565  * cooler control state; the value of this attribute controls the
2566  * availability of additional cooler control attributes (see below).
2567  *
2568  * Note: this attribute is unavailable unless cooler control support
2569  * has been enabled in the X server (by the user).
2570  */
2571 
2572 #define NV_CTRL_GPU_COOLER_MANUAL_CONTROL                       319 /* RW-G */
2573 #define NV_CTRL_GPU_COOLER_MANUAL_CONTROL_FALSE                   0
2574 #define NV_CTRL_GPU_COOLER_MANUAL_CONTROL_TRUE                    1
2575 
2576 /*
2577  * NV_CTRL_THERMAL_COOLER_LEVEL - Returns cooler's current operating
2578  * level.
2579  */
2580 
2581 #define NV_CTRL_THERMAL_COOLER_LEVEL                            320 /* RW-C */
2582 
2583 /* NV_CTRL_THERMAL_COOLER_LEVEL_SET_DEFAULT - Sets default values of
2584  * cooler.
2585  */
2586 
2587 #define NV_CTRL_THERMAL_COOLER_LEVEL_SET_DEFAULT                321 /* -W-C */
2588 
2589 /*
2590  * NV_CTRL_THERMAL_COOLER_CONTROL_TYPE -
2591  * Returns a cooler's control signal characteristics.
2592  * The possible types are restricted, Variable and Toggle.
2593  */
2594 
2595 #define NV_CTRL_THERMAL_COOLER_CONTROL_TYPE                     322 /* R--C */
2596 #define NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_NONE                  0
2597 #define NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_TOGGLE                1
2598 #define NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_VARIABLE              2
2599 
2600 /*
2601  * NV_CTRL_THERMAL_COOLER_TARGET - Returns objects that cooler cools.
2602  * Targets may be GPU, Memory, Power Supply or All of these.
2603  * GPU_RELATED = GPU | MEMORY | POWER_SUPPLY
2604  *
2605  */
2606 
2607 #define NV_CTRL_THERMAL_COOLER_TARGET                           323 /* R--C */
2608 #define NV_CTRL_THERMAL_COOLER_TARGET_NONE                        0
2609 #define NV_CTRL_THERMAL_COOLER_TARGET_GPU                         1
2610 #define NV_CTRL_THERMAL_COOLER_TARGET_MEMORY                      2
2611 #define NV_CTRL_THERMAL_COOLER_TARGET_POWER_SUPPLY                4
2612 #define NV_CTRL_THERMAL_COOLER_TARGET_GPU_RELATED   \
2613         (NV_CTRL_THERMAL_COOLER_TARGET_GPU |        \
2614          NV_CTRL_THERMAL_COOLER_TARGET_MEMORY |     \
2615          NV_CTRL_THERMAL_COOLER_TARGET_POWER_SUPPLY)
2616 
2617 /*
2618  * NV_CTRL_GPU_ECC_SUPPORTED - Reports whether ECC is supported by the
2619  * targeted GPU.
2620  */
2621 #define NV_CTRL_GPU_ECC_SUPPORTED                               324 /* R--G */
2622 #define NV_CTRL_GPU_ECC_SUPPORTED_FALSE                           0
2623 #define NV_CTRL_GPU_ECC_SUPPORTED_TRUE                            1
2624 
2625 /*
2626  * NV_CTRL_GPU_ECC_STATUS - Returns the current hardware ECC setting
2627  * for the targeted GPU.
2628  */
2629 #define NV_CTRL_GPU_ECC_STATUS                                  325 /* R--G */
2630 #define NV_CTRL_GPU_ECC_STATUS_DISABLED                           0
2631 #define NV_CTRL_GPU_ECC_STATUS_ENABLED                            1
2632 
2633 /*
2634  * NV_CTRL_GPU_ECC_CONFIGURATION - Reports whether ECC can be configured
2635  * dynamically for the GPU in question.
2636  */
2637 #define NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED                 326 /* R--G */
2638 #define NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED_FALSE             0
2639 #define NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED_TRUE              1
2640 
2641 /*
2642  * NV_CTRL_GPU_ECC_CONFIGURATION_SETTING - Returns the current ECC
2643  * configuration setting or specifies new settings.  New settings do not
2644  * take effect until the next POST.
2645  */
2646 #define NV_CTRL_GPU_ECC_CONFIGURATION                           327 /* RW-G */
2647 #define NV_CTRL_GPU_ECC_CONFIGURATION_DISABLED                    0
2648 #define NV_CTRL_GPU_ECC_CONFIGURATION_ENABLED                     1
2649 
2650 /*
2651  * NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_SETTING - Returns the default
2652  * ECC configuration setting.
2653  */
2654 #define NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION                   328 /* R--G */
2655 #define NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_DISABLED            0
2656 #define NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_ENABLED             1
2657 
2658 /*
2659  * NV_CTRL_GPU_ECC_SINGLE_BIT_ERRORS - Returns the number of single-bit
2660  * ECC errors detected by the targeted GPU since the last POST.
2661  * Note: this attribute is a 64-bit integer attribute.
2662  */
2663 #define NV_CTRL_GPU_ECC_SINGLE_BIT_ERRORS                       329 /* R--GQ */
2664 
2665 /*
2666  * NV_CTRL_GPU_ECC_DOUBLE_BIT_ERRORS - Returns the number of double-bit
2667  * ECC errors detected by the targeted GPU since the last POST.
2668  * Note: this attribute is a 64-bit integer attribute.
2669  */
2670 #define NV_CTRL_GPU_ECC_DOUBLE_BIT_ERRORS                       330 /* R--GQ */
2671 
2672 /*
2673  * NV_CTRL_GPU_ECC_AGGREGATE_SINGLE_BIT_ERRORS - Returns the number of
2674  * single-bit ECC errors detected by the targeted GPU since the
2675  * last counter reset.
2676  * Note: this attribute is a 64-bit integer attribute.
2677  */
2678 #define NV_CTRL_GPU_ECC_AGGREGATE_SINGLE_BIT_ERRORS             331 /* R--GQ */
2679 
2680 /*
2681  * NV_CTRL_GPU_ECC_AGGREGATE_DOUBLE_BIT_ERRORS - Returns the number of
2682  * double-bit ECC errors detected by the targeted GPU since the
2683  * last counter reset.
2684  * Note: this attribute is a 64-bit integer attribute.
2685  */
2686 #define NV_CTRL_GPU_ECC_AGGREGATE_DOUBLE_BIT_ERRORS             332 /* R--GQ */
2687 
2688 /*
2689  * NV_CTRL_GPU_ECC_RESET_ERROR_STATUS - Resets the volatile/aggregate
2690  * single-bit and double-bit error counters.  This attribute is a
2691  * bitmask attribute.
2692  */
2693 #define NV_CTRL_GPU_ECC_RESET_ERROR_STATUS                      333 /* -W-G */
2694 #define NV_CTRL_GPU_ECC_RESET_ERROR_STATUS_VOLATILE             0x00000001
2695 #define NV_CTRL_GPU_ECC_RESET_ERROR_STATUS_AGGREGATE            0x00000002
2696 
2697 /*
2698  * NV_CTRL_GPU_POWER_MIZER_MODE - Provides a hint to the driver
2699  * as to how to manage the performance of the GPU.
2700  *
2701  * ADAPTIVE                     - adjust GPU clocks based on GPU
2702  *                                utilization
2703  * PREFER_MAXIMUM_PERFORMANCE   - raise GPU clocks to favor
2704  *                                maximum performance, to the extent
2705  *                                that thermal and other constraints
2706  *                                allow
2707  */
2708 #define NV_CTRL_GPU_POWER_MIZER_MODE                            334 /* RW-G */
2709 #define NV_CTRL_GPU_POWER_MIZER_MODE_ADAPTIVE                     0
2710 #define NV_CTRL_GPU_POWER_MIZER_MODE_PREFER_MAXIMUM_PERFORMANCE   1
2711 
2712 /*
2713  * NV_CTRL_GVI_SYNC_OUTPUT_FORMAT - Returns the output sync signal
2714  * from the GVI device.
2715  */
2716 
2717 #define NV_CTRL_GVI_SYNC_OUTPUT_FORMAT                          335 /* R--I */
2718 
2719 /*
2720  * NV_CTRL_GVI_MAX_CHANNELS_PER_JACK  - Returns the maximum
2721  * supported number of (logical) channels within a single physical jack of
2722  * a GVI device.  For most SDI video formats, there is only one channel
2723  * (channel 0).  But for 3G video formats (as specified in SMPTE 425),
2724  * as an example, there are two channels (channel 0 and channel 1) per
2725  * physical jack.
2726  */
2727 
2728 #define NV_CTRL_GVI_MAX_CHANNELS_PER_JACK                       336 /* R--I */
2729 
2730 /*
2731  * NV_CTRL_GVI_MAX_STREAMS  - Returns the maximum number of streams
2732  * that can be configured on the GVI device.
2733  */
2734 
2735 #define NV_CTRL_GVI_MAX_STREAMS                                 337 /* R--I */
2736 
2737 /*
2738  * NV_CTRL_GVI_NUM_CAPTURE_SURFACES - The GVI interface exposed through
2739  * NV-CONTROL and the GLX_NV_video_input extension uses internal capture
2740  * surfaces when frames are read from the GVI device.  The
2741  * NV_CTRL_GVI_NUM_CAPTURE_SURFACES can be used to query and assign the
2742  * number of capture surfaces.  This attribute is applied when
2743  * glXBindVideoCaptureDeviceNV() is called by the application.
2744  *
2745  * A lower number of capture surfaces will mean less video memory is used,
2746  * but can result in frames being dropped if the application cannot keep up
2747  * with the capture device.  A higher number will prevent frames from being
2748  * dropped, making capture more reliable but will consume move video memory.
2749  */
2750 #define NV_CTRL_GVI_NUM_CAPTURE_SURFACES                        338 /* RW-I */
2751 
2752 /*
2753  * NV_CTRL_OVERSCAN_COMPENSATION - not supported
2754  */
2755 #define NV_CTRL_OVERSCAN_COMPENSATION                           339 /* RWDG */
2756 
2757 /*
2758  * NV_CTRL_GPU_PCIE_GENERATION - Reports the current PCIe generation.
2759  */
2760 #define NV_CTRL_GPU_PCIE_GENERATION                             341 /* R--GI */
2761 #define NV_CTRL_GPU_PCIE_GENERATION1                            0x00000001
2762 #define NV_CTRL_GPU_PCIE_GENERATION2                            0x00000002
2763 #define NV_CTRL_GPU_PCIE_GENERATION3                            0x00000003
2764 
2765 /*
2766  * NV_CTRL_GVI_BOUND_GPU - Returns the NV_CTRL_TARGET_TYPE_GPU target_id of
2767  * the GPU currently bound to the GVI device.  Returns -1 if no GPU is
2768  * currently bound to the GVI device.
2769  */
2770 #define NV_CTRL_GVI_BOUND_GPU                                   342 /* R--I */
2771 
2772 /*
2773  * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT3 - this attribute is only
2774  * intended to be used to query the ValidValues for
2775  * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for VIDEO_FORMAT values between
2776  * 64 and 95.  See NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for details.
2777  */
2778 
2779 #define NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT3                    343 /* ---GI */
2780 
2781 /*
2782  * NV_CTRL_ACCELERATE_TRAPEZOIDS - Toggles RENDER Trapezoid acceleration
2783  */
2784 
2785 #define NV_CTRL_ACCELERATE_TRAPEZOIDS                           344 /* RW- */
2786 #define NV_CTRL_ACCELERATE_TRAPEZOIDS_DISABLE                   0
2787 #define NV_CTRL_ACCELERATE_TRAPEZOIDS_ENABLE                    1
2788 
2789 /*
2790  * NV_CTRL_GPU_CORES - Returns number of GPU cores supported by the graphics
2791  * pipeline.
2792  */
2793 
2794 #define NV_CTRL_GPU_CORES                                       345 /* R--G */
2795 
2796 /*
2797  * NV_CTRL_GPU_MEMORY_BUS_WIDTH - Returns memory bus bandwidth on the associated
2798  * subdevice.
2799  */
2800 
2801 #define NV_CTRL_GPU_MEMORY_BUS_WIDTH                            346 /* R--G */
2802 
2803 /*
2804  * NV_CTRL_GVI_TEST_MODE - This attribute controls the GVI test mode.  When
2805  * enabled, the GVI device will generate fake data as quickly as possible.  All
2806  * GVI settings are still valid when this is enabled (e.g., the requested video
2807  * format is honored and sets the video size).
2808  * This may be used to test the pipeline.
2809  */
2810 
2811 #define NV_CTRL_GVI_TEST_MODE                                   347 /* R--I */
2812 #define NV_CTRL_GVI_TEST_MODE_DISABLE                             0
2813 #define NV_CTRL_GVI_TEST_MODE_ENABLE                              1
2814 
2815 /*
2816  * NV_CTRL_COLOR_SPACE - This option sets color space of the video
2817  * signal.
2818  */
2819 #define NV_CTRL_COLOR_SPACE                                     348 /* RWDG */
2820 #define NV_CTRL_COLOR_SPACE_RGB                                   0
2821 #define NV_CTRL_COLOR_SPACE_YCbCr422                              1
2822 #define NV_CTRL_COLOR_SPACE_YCbCr444                              2
2823 
2824 /*
2825  * NV_CTRL_COLOR_RANGE - This option sets color range of the video
2826  * signal.
2827  */
2828 #define NV_CTRL_COLOR_RANGE                                     349 /* RWDG */
2829 #define NV_CTRL_COLOR_RANGE_FULL                                  0
2830 #define NV_CTRL_COLOR_RANGE_LIMITED                               1
2831 
2832 /*
2833  * NV_CTRL_GPU_SCALING_DEFAULT_TARGET - not supported
2834  *
2835  * NV_CTRL_GPU_SCALING_DEFAULT_METHOD - not supported
2836  */
2837 #define NV_CTRL_GPU_SCALING_DEFAULT_TARGET                      350 /* R-DG */
2838 #define NV_CTRL_GPU_SCALING_DEFAULT_METHOD                      351 /* R-DG */
2839 
2840 /*
2841  * NV_CTRL_DITHERING_MODE - Controls the dithering mode, when
2842  * NV_CTRL_CURRENT_DITHERING is Enabled.
2843  *
2844  * AUTO: allow the driver to choose the dithering mode automatically.
2845  *
2846  * DYNAMIC_2X2: use a 2x2 matrix to dither from the GPU's pixel
2847  * pipeline to the bit depth of the flat panel.  The matrix values
2848  * are changed from frame to frame.
2849  *
2850  * STATIC_2X2: use a 2x2 matrix to dither from the GPU's pixel
2851  * pipeline to the bit depth of the flat panel.  The matrix values
2852  * do not change from frame to frame.
2853  *
2854  * TEMPORAL: use a pseudorandom value from a uniform distribution calculated at
2855  * every pixel to achieve stochastic dithering.  This method produces a better
2856  * visual result than 2x2 matrix approaches.
2857  */
2858 #define NV_CTRL_DITHERING_MODE                                  352 /* RWDG */
2859 #define NV_CTRL_DITHERING_MODE_AUTO                               0
2860 #define NV_CTRL_DITHERING_MODE_DYNAMIC_2X2                        1
2861 #define NV_CTRL_DITHERING_MODE_STATIC_2X2                         2
2862 #define NV_CTRL_DITHERING_MODE_TEMPORAL                           3
2863 
2864 /*
2865  * NV_CTRL_CURRENT_DITHERING - Returns the current dithering state.
2866  */
2867 #define NV_CTRL_CURRENT_DITHERING                               353 /* R-DG */
2868 #define NV_CTRL_CURRENT_DITHERING_DISABLED                        0
2869 #define NV_CTRL_CURRENT_DITHERING_ENABLED                         1
2870 
2871 /*
2872  * NV_CTRL_CURRENT_DITHERING_MODE - Returns the current dithering
2873  * mode.
2874  */
2875 #define NV_CTRL_CURRENT_DITHERING_MODE                          354 /* R-DG */
2876 #define NV_CTRL_CURRENT_DITHERING_MODE_NONE                       0
2877 #define NV_CTRL_CURRENT_DITHERING_MODE_DYNAMIC_2X2                1
2878 #define NV_CTRL_CURRENT_DITHERING_MODE_STATIC_2X2                 2
2879 #define NV_CTRL_CURRENT_DITHERING_MODE_TEMPORAL                   3
2880 
2881 /*
2882  * NV_CTRL_THERMAL_SENSOR_READING - Returns the thermal sensor's current
2883  * reading.
2884  */
2885 #define NV_CTRL_THERMAL_SENSOR_READING                          355 /* R--S */
2886 
2887 /*
2888  * NV_CTRL_THERMAL_SENSOR_PROVIDER - Returns the hardware device that
2889  * provides the thermal sensor.
2890  */
2891 #define NV_CTRL_THERMAL_SENSOR_PROVIDER                         356 /* R--S */
2892 #define NV_CTRL_THERMAL_SENSOR_PROVIDER_NONE                      0
2893 #define NV_CTRL_THERMAL_SENSOR_PROVIDER_GPU_INTERNAL              1
2894 #define NV_CTRL_THERMAL_SENSOR_PROVIDER_ADM1032                   2
2895 #define NV_CTRL_THERMAL_SENSOR_PROVIDER_ADT7461                   3
2896 #define NV_CTRL_THERMAL_SENSOR_PROVIDER_MAX6649                   4
2897 #define NV_CTRL_THERMAL_SENSOR_PROVIDER_MAX1617                   5
2898 #define NV_CTRL_THERMAL_SENSOR_PROVIDER_LM99                      6
2899 #define NV_CTRL_THERMAL_SENSOR_PROVIDER_LM89                      7
2900 #define NV_CTRL_THERMAL_SENSOR_PROVIDER_LM64                      8
2901 #define NV_CTRL_THERMAL_SENSOR_PROVIDER_G781                      9
2902 #define NV_CTRL_THERMAL_SENSOR_PROVIDER_ADT7473                  10
2903 #define NV_CTRL_THERMAL_SENSOR_PROVIDER_SBMAX6649                11
2904 #define NV_CTRL_THERMAL_SENSOR_PROVIDER_VBIOSEVT                 12
2905 #define NV_CTRL_THERMAL_SENSOR_PROVIDER_OS                       13
2906 #define NV_CTRL_THERMAL_SENSOR_PROVIDER_UNKNOWN          0xFFFFFFFF
2907 
2908 /*
2909  * NV_CTRL_THERMAL_SENSOR_TARGET - Returns what hardware component
2910  * the thermal sensor is measuring.
2911  */
2912 #define NV_CTRL_THERMAL_SENSOR_TARGET                           357 /* R--S */
2913 #define NV_CTRL_THERMAL_SENSOR_TARGET_NONE                        0
2914 #define NV_CTRL_THERMAL_SENSOR_TARGET_GPU                         1
2915 #define NV_CTRL_THERMAL_SENSOR_TARGET_MEMORY                      2
2916 #define NV_CTRL_THERMAL_SENSOR_TARGET_POWER_SUPPLY                4
2917 #define NV_CTRL_THERMAL_SENSOR_TARGET_BOARD                       8
2918 #define NV_CTRL_THERMAL_SENSOR_TARGET_UNKNOWN            0xFFFFFFFF
2919 
2920 /*
2921  * NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR - when TRUE, OpenGL will
2922  * draw information about the current MULTIGPU mode.
2923  */
2924 #define NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR                  358  /* RW-X */
2925 #define NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR_FALSE              0
2926 #define NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR_TRUE               1
2927 
2928 /*
2929  * NV_CTRL_GPU_CURRENT_PROCESSOR_CLOCK_FREQS - Returns GPU's processor
2930  * clock freqs.
2931  */
2932 #define NV_CTRL_GPU_CURRENT_PROCESSOR_CLOCK_FREQS               359 /* RW-G */
2933 
2934 /*
2935  * NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS - query the flags (various information
2936  * for the specified NV_CTRL_GVIO_VIDEO_FORMAT_*.  So that this can be
2937  * queried with existing interfaces, the video format should be specified
2938  * in the display_mask field; eg:
2939  *
2940  * XNVCTRLQueryTargetAttribute(dpy,
2941  *                             NV_CTRL_TARGET_TYPE_GVI,
2942  *                             gvi,
2943  *                             NV_CTRL_GVIO_VIDEO_FORMAT_720P_60_00_SMPTE296,
2944  *                             NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS,
2945  *                             &flags);
2946  *
2947  * Note: The NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_1080P_NO_12BPC flag is set
2948  *       for those 1080P 3G modes (level A and B) that do not support
2949  *       12 bits per component (when configuring a GVI stream.)
2950  */
2951 
2952 #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS                         360  /* R--I */
2953 #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_NONE              0x00000000
2954 #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_INTERLACED        0x00000001
2955 #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_PROGRESSIVE       0x00000002
2956 #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_PSF               0x00000004
2957 #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_A        0x00000008
2958 #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_B        0x00000010
2959 #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G          \
2960     ((NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_A) | \
2961      (NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_B))
2962 #define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_1080P_NO_12BPC 0x00000020
2963 
2964 /*
2965  * NV_CTRL_GPU_PCIE_MAX_LINK_SPEED - returns maximum PCIe link speed,
2966  * in gigatransfers per second (GT/s).
2967  */
2968 
2969 #define NV_CTRL_GPU_PCIE_MAX_LINK_SPEED                         361 /* R--GI */
2970 
2971 /*
2972  * NV_CTRL_3D_VISION_PRO_RESET_TRANSCEIVER_TO_FACTORY_SETTINGS - Resets the
2973  * 3D Vision Pro transceiver to its factory settings.
2974  */
2975 #define NV_CTRL_3D_VISION_PRO_RESET_TRANSCEIVER_TO_FACTORY_SETTINGS 363 /* -W-T */
2976 
2977 /*
2978  * NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL - Controls the channel that is
2979  * currently used by the 3D Vision Pro transceiver.
2980  */
2981 #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL                   364 /* RW-T */
2982 
2983 /*
2984  * NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE - Controls the mode in which the
2985  * 3D Vision Pro transceiver operates.
2986  * NV_CTRL_3D_VISION_PRO_TM_LOW_RANGE is bidirectional
2987  * NV_CTRL_3D_VISION_PRO_TM_MEDIUM_RANGE is bidirectional
2988  * NV_CTRL_3D_VISION_PRO_TM_HIGH_RANGE may be bidirectional just up to a
2989  *     given range, and unidirectional beyond it
2990  * NV_CTRL_3D_VISION_PRO_TM_COUNT is the total number of
2991  *     3D Vision Pro transceiver modes
2992  */
2993 #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE                      365 /* RW-T */
2994 #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_INVALID              0
2995 #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_LOW_RANGE            1
2996 #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_MEDIUM_RANGE         2
2997 #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_HIGH_RANGE           3
2998 #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_COUNT                4
2999 
3000 /*
3001  * NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES - controls whether updates to the color
3002  * lookup table (LUT) are synchronous with respect to X rendering.  For example,
3003  * if an X client sends XStoreColors followed by XFillRectangle, the driver will
3004  * guarantee that the FillRectangle request is not processed until after the
3005  * updated LUT colors are actually visible on the screen if
3006  * NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES is enabled.  Otherwise, the rendering may
3007  * occur first.
3008  *
3009  * This makes a difference for applications that use the LUT to animate, such as
3010  * XPilot.  If you experience flickering in applications that use LUT
3011  * animations, try enabling this attribute.
3012  *
3013  * When synchronous updates are enabled, XStoreColors requests will be processed
3014  * at your screen's refresh rate.
3015  */
3016 
3017 #define NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES                     367  /* RWDG */
3018 #define NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES_DISABLE             0
3019 #define NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES_ENABLE              1
3020 
3021 /*
3022  * NV_CTRL_DITHERING_DEPTH - Controls the dithering depth when
3023  * NV_CTRL_CURRENT_DITHERING is ENABLED.  Some displays connected
3024  * to the GPU via the DVI or LVDS interfaces cannot display the
3025  * full color range of ten bits per channel, so the GPU will
3026  * dither to either 6 or 8 bits per channel.
3027  */
3028 #define NV_CTRL_DITHERING_DEPTH                                 368 /* RWDG */
3029 #define NV_CTRL_DITHERING_DEPTH_AUTO                            0
3030 #define NV_CTRL_DITHERING_DEPTH_6_BITS                          1
3031 #define NV_CTRL_DITHERING_DEPTH_8_BITS                          2
3032 
3033 /*
3034  * NV_CTRL_CURRENT_DITHERING_DEPTH - Returns the current dithering
3035  * depth value.
3036  */
3037 #define NV_CTRL_CURRENT_DITHERING_DEPTH                         369 /* R-DG */
3038 #define NV_CTRL_CURRENT_DITHERING_DEPTH_NONE                    0
3039 #define NV_CTRL_CURRENT_DITHERING_DEPTH_6_BITS                  1
3040 #define NV_CTRL_CURRENT_DITHERING_DEPTH_8_BITS                  2
3041 
3042 /*
3043  * NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_FREQUENCY - Returns the
3044  * frequency of the channel(in kHz) of the 3D Vision Pro transceiver.
3045  * Use the display_mask parameter to specify the channel number.
3046  */
3047 #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_FREQUENCY     370 /* R--T */
3048 
3049 /*
3050  * NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_QUALITY - Returns the
3051  * quality of the channel(in percentage) of the 3D Vision Pro transceiver.
3052  * Use the display_mask parameter to specify the channel number.
3053  */
3054 #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_QUALITY       371 /* R--T */
3055 
3056 /*
3057  * NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_COUNT - Returns the number of
3058  * channels on the 3D Vision Pro transceiver.
3059  */
3060 #define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_COUNT         372 /* R--T */
3061 
3062 /*
3063  * NV_CTRL_3D_VISION_PRO_PAIR_GLASSES - Puts the 3D Vision Pro
3064  * transceiver into pairing mode to gather additional glasses.
3065  * NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_STOP - stops any pairing
3066  * NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_BEACON - starts continuous
3067  *     pairing via beacon mode
3068  * Any other value, N - Puts the 3D Vision Pro transceiver into
3069  *     authenticated pairing mode for N seconds.
3070  */
3071 #define NV_CTRL_3D_VISION_PRO_PAIR_GLASSES                      373 /* -W-T */
3072 #define NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_STOP                 0
3073 #define NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_BEACON               0xFFFFFFFF
3074 
3075 /*
3076  * NV_CTRL_3D_VISION_PRO_UNPAIR_GLASSES - Tells a specific pair
3077  * of glasses to unpair. The glasses will "forget" the address
3078  * of the 3D Vision Pro transceiver to which they have been paired.
3079  * To unpair all the currently paired glasses, specify
3080  * the glasses id as 0.
3081  */
3082 #define NV_CTRL_3D_VISION_PRO_UNPAIR_GLASSES                    374 /* -W-T */
3083 
3084 /*
3085  * NV_CTRL_3D_VISION_PRO_DISCOVER_GLASSES - Tells the 3D Vision Pro
3086  * transceiver about the glasses that have been paired using
3087  * NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_BEACON. Unless this is done,
3088  * the 3D Vision Pro transceiver will not know about glasses paired in
3089  * beacon mode.
3090  */
3091 #define NV_CTRL_3D_VISION_PRO_DISCOVER_GLASSES                  375 /* -W-T */
3092 
3093 /*
3094  * NV_CTRL_3D_VISION_PRO_IDENTIFY_GLASSES - Causes glasses LEDs to
3095  * flash for a short period of time.
3096  */
3097 #define NV_CTRL_3D_VISION_PRO_IDENTIFY_GLASSES                  376 /* -W-T */
3098 
3099 /*
3100  * NV_CTRL_3D_VISION_PRO_GLASSES_SYNC_CYCLE - Controls the
3101  * sync cycle duration(in milliseconds) of the glasses.
3102  * Use the display_mask parameter to specify the glasses id.
3103  */
3104 #define NV_CTRL_3D_VISION_PRO_GLASSES_SYNC_CYCLE                378 /* RW-T */
3105 
3106 /*
3107  * NV_CTRL_3D_VISION_PRO_GLASSES_MISSED_SYNC_CYCLES - Returns the
3108  * number of state sync cycles recently missed by the glasses.
3109  * Use the display_mask parameter to specify the glasses id.
3110  */
3111 #define NV_CTRL_3D_VISION_PRO_GLASSES_MISSED_SYNC_CYCLES        379 /* R--T */
3112 
3113 /*
3114  * NV_CTRL_3D_VISION_PRO_GLASSES_BATTERY_LEVEL - Returns the
3115  * battery level(in percentage) of the glasses.
3116  * Use the display_mask parameter to specify the glasses id.
3117  */
3118 #define NV_CTRL_3D_VISION_PRO_GLASSES_BATTERY_LEVEL             380 /* R--T */
3119 
3120 
3121 /*
3122  * NV_CTRL_GVO_ANC_PARITY_COMPUTATION - Controls the SDI device's computation
3123  * of the parity bit (bit 8) for ANC data words.
3124  */
3125 
3126 #define NV_CTRL_GVO_ANC_PARITY_COMPUTATION                      381 /* RW--- */
3127 #define NV_CTRL_GVO_ANC_PARITY_COMPUTATION_AUTO                   0
3128 #define NV_CTRL_GVO_ANC_PARITY_COMPUTATION_ON                     1
3129 #define NV_CTRL_GVO_ANC_PARITY_COMPUTATION_OFF                    2
3130 
3131 /*
3132  * NV_CTRL_3D_VISION_PRO_GLASSES_PAIR_EVENT - This attribute is sent
3133  * as an event when glasses get paired in response to pair command
3134  * from any of the clients.
3135  */
3136 #define NV_CTRL_3D_VISION_PRO_GLASSES_PAIR_EVENT                382 /* ---T */
3137 
3138 /*
3139  * NV_CTRL_3D_VISION_PRO_GLASSES_UNPAIR_EVENT - This attribute is sent
3140  * as an event when glasses get unpaired in response to unpair command
3141  * from any of the clients.
3142  */
3143 #define NV_CTRL_3D_VISION_PRO_GLASSES_UNPAIR_EVENT              383 /* ---T */
3144 
3145 /*
3146  * NV_CTRL_GPU_PCIE_CURRENT_LINK_WIDTH - returns the current
3147  * PCIe link width, in number of lanes.
3148  */
3149 #define NV_CTRL_GPU_PCIE_CURRENT_LINK_WIDTH                     384 /* R--GI */
3150 
3151 /*
3152  * NV_CTRL_GPU_PCIE_CURRENT_LINK_SPEED - returns the current
3153  * PCIe link speed, in megatransfers per second (GT/s).
3154  */
3155 #define NV_CTRL_GPU_PCIE_CURRENT_LINK_SPEED                     385 /* R--GI */
3156 
3157 /*
3158  * NV_CTRL_GVO_AUDIO_BLANKING - specifies whether the GVO device should delete
3159  * audio ancillary data packets when frames are repeated.
3160  *
3161  * When a new frame is not ready in time, the current frame, including all
3162  * ancillary data packets, is repeated.  When this data includes audio packets,
3163  * this can result in stutters or clicks.  When this option is enabled, the GVO
3164  * device will detect when frames are repeated, identify audio ancillary data
3165  * packets, and mark them for deletion.
3166  *
3167  * This option is applied when the GVO device is bound.
3168  */
3169 #define NV_CTRL_GVO_AUDIO_BLANKING                              386 /* RW- */
3170 #define NV_CTRL_GVO_AUDIO_BLANKING_DISABLE                        0
3171 #define NV_CTRL_GVO_AUDIO_BLANKING_ENABLE                         1
3172 
3173 /*
3174  * NV_CTRL_CURRENT_METAMODE_ID - switch modes to the MetaMode with
3175  * the specified ID.
3176  */
3177 #define NV_CTRL_CURRENT_METAMODE_ID                             387 /* RW- */
3178 
3179 /*
3180  * NV_CTRL_DISPLAY_ENABLED - Returns whether or not the display device
3181  * is currently enabled.
3182  */
3183 #define NV_CTRL_DISPLAY_ENABLED                                 388 /* R-D */
3184 #define NV_CTRL_DISPLAY_ENABLED_TRUE                              1
3185 #define NV_CTRL_DISPLAY_ENABLED_FALSE                             0
3186 
3187 
3188 #define NV_CTRL_LAST_ATTRIBUTE NV_CTRL_DISPLAY_ENABLED
3189 
3190 /**************************************************************************/
3191 
3192 /*
3193  * String Attributes:
3194  *
3195  * String attributes can be queryied through the XNVCTRLQueryStringAttribute()
3196  * and XNVCTRLQueryTargetStringAttribute() function calls.
3197  *
3198  * String attributes can be set through the XNVCTRLSetStringAttribute()
3199  * function call.  (There are currently no string attributes that can be
3200  * set on non-X Screen targets.)
3201  *
3202  * Unless otherwise noted, all string attributes can be queried/set using an
3203  * NV_CTRL_TARGET_TYPE_X_SCREEN target.  Attributes that cannot take an
3204  * NV_CTRL_TARGET_TYPE_X_SCREEN target also cannot be queried/set through
3205  * XNVCTRLQueryStringAttribute()/XNVCTRLSetStringAttribute() (Since
3206  * these assume an X Screen target).
3207  */
3208 
3209 
3210 /*
3211  * NV_CTRL_STRING_PRODUCT_NAME - the GPU product name on which the
3212  * specified X screen is running.
3213  *
3214  * This attribute may be queried through XNVCTRLQueryTargetStringAttribute()
3215  * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
3216  */
3217 
3218 #define NV_CTRL_STRING_PRODUCT_NAME                             0  /* R--G */
3219 
3220 
3221 /*
3222  * NV_CTRL_STRING_VBIOS_VERSION - the video bios version on the GPU on
3223  * which the specified X screen is running.
3224  */
3225 
3226 #define NV_CTRL_STRING_VBIOS_VERSION                            1  /* R--G */
3227 
3228 
3229 /*
3230  * NV_CTRL_STRING_NVIDIA_DRIVER_VERSION - string representation of the
3231  * NVIDIA driver version number for the NVIDIA X driver in use.
3232  */
3233 
3234 #define NV_CTRL_STRING_NVIDIA_DRIVER_VERSION                    3  /* R--G */
3235 
3236 
3237 /*
3238  * NV_CTRL_STRING_DISPLAY_DEVICE_NAME - name of the display device
3239  * specified in the display_mask argument.
3240  *
3241  * This attribute may be queried through XNVCTRLQueryTargetStringAttribute()
3242  * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
3243  */
3244 
3245 #define NV_CTRL_STRING_DISPLAY_DEVICE_NAME                      4  /* R-DG */
3246 
3247 
3248 /*
3249  * NV_CTRL_STRING_TV_ENCODER_NAME - name of the TV encoder used by the
3250  * specified display device; only valid if the display device is a TV.
3251  */
3252 
3253 #define NV_CTRL_STRING_TV_ENCODER_NAME                          5  /* R-DG */
3254 
3255 
3256 /*
3257  * NV_CTRL_STRING_GVIO_FIRMWARE_VERSION - indicates the version of the
3258  * Firmware on the GVIO device.
3259  */
3260 
3261 #define NV_CTRL_STRING_GVIO_FIRMWARE_VERSION                    8  /* R--I */
3262 
3263 /*
3264  * The following is deprecated; use NV_CTRL_STRING_GVIO_FIRMWARE_VERSION,
3265  * instead
3266  */
3267 #define NV_CTRL_STRING_GVO_FIRMWARE_VERSION                     8  /* R-- */
3268 
3269 
3270 /*
3271  * NV_CTRL_STRING_CURRENT_MODELINE - Return the ModeLine currently
3272  * being used by the specified display device.
3273  *
3274  * This attribute may be queried through XNVCTRLQueryTargetStringAttribute()
3275  * using an NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
3276  *
3277  * The ModeLine string may be prepended with a comma-separated list of
3278  * "token=value" pairs, separated from the ModeLine string by "::".
3279  * This "token=value" syntax is the same as that used in
3280  * NV_CTRL_BINARY_DATA_MODELINES
3281  */
3282 
3283 #define NV_CTRL_STRING_CURRENT_MODELINE                         9   /* R-DG */
3284 
3285 
3286 /*
3287  * NV_CTRL_STRING_ADD_MODELINE - Adds a ModeLine to the specified
3288  * display device.  The ModeLine is not added if validation fails.
3289  *
3290  * The ModeLine string should have the same syntax as a ModeLine in
3291  * the X configuration file; e.g.,
3292  *
3293  * "1600x1200"  229.5  1600 1664 1856 2160  1200 1201 1204 1250  +HSync +VSync
3294  */
3295 
3296 #define NV_CTRL_STRING_ADD_MODELINE                            10   /* -WDG */
3297 
3298 
3299 /*
3300  * NV_CTRL_STRING_DELETE_MODELINE - Deletes an existing ModeLine
3301  * from the specified display device.  The currently selected
3302  * ModeLine cannot be deleted.  (This also means you cannot delete
3303  * the last ModeLine.)
3304  *
3305  * The ModeLine string should have the same syntax as a ModeLine in
3306  * the X configuration file; e.g.,
3307  *
3308  * "1600x1200"  229.5  1600 1664 1856 2160  1200 1201 1204 1250  +HSync +VSync
3309  */
3310 
3311 #define NV_CTRL_STRING_DELETE_MODELINE                         11   /* -WDG */
3312 
3313 
3314 /*
3315  * NV_CTRL_STRING_CURRENT_METAMODE - Returns the metamode currently
3316  * being used by the specified X screen.  The MetaMode string has the
3317  * same syntax as the MetaMode X configuration option, as documented
3318  * in the NVIDIA driver README.
3319  *
3320  * The returned string may be prepended with a comma-separated list of
3321  * "token=value" pairs, separated from the MetaMode string by "::".
3322  * This "token=value" syntax is the same as that used in
3323  * NV_CTRL_BINARY_DATA_METAMODES.
3324  */
3325 
3326 #define NV_CTRL_STRING_CURRENT_METAMODE                        12   /* RW-- */
3327 #define NV_CTRL_STRING_CURRENT_METAMODE_VERSION_1 \
3328     NV_CTRL_STRING_CURRENT_METAMODE
3329 
3330 
3331 
3332 /*
3333  * NV_CTRL_STRING_ADD_METAMODE - Adds a MetaMode to the specified
3334  * X Screen.
3335  *
3336  * It is recommended to not use this attribute, but instead use
3337  * NV_CTRL_STRING_OPERATION_ADD_METAMODE.
3338  */
3339 
3340 #define NV_CTRL_STRING_ADD_METAMODE                            13   /* -W-- */
3341 
3342 
3343 /*
3344  * NV_CTRL_STRING_DELETE_METAMODE - Deletes an existing MetaMode from
3345  * the specified X Screen.  The currently selected MetaMode cannot be
3346  * deleted.  (This also means you cannot delete the last MetaMode).
3347  * The MetaMode string should have the same syntax as the MetaMode X
3348  * configuration option, as documented in the NVIDIA driver README.
3349  */
3350 
3351 #define NV_CTRL_STRING_DELETE_METAMODE                         14   /* -WD-- */
3352 
3353 
3354 /*
3355  * NV_CTRL_STRING_VCSC_PRODUCT_NAME - Querys the product name of the
3356  * VCSC device.
3357  *
3358  * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
3359  * using a NV_CTRL_TARGET_TYPE_VCSC target.
3360  */
3361 
3362 #define NV_CTRL_STRING_VCSC_PRODUCT_NAME                       15   /* R---V */
3363 
3364 
3365 /*
3366  * NV_CTRL_STRING_VCSC_PRODUCT_ID - Querys the product ID of the VCSC device.
3367  *
3368  * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
3369  * using a NV_CTRL_TARGET_TYPE_VCSC target.
3370  */
3371 
3372 #define NV_CTRL_STRING_VCSC_PRODUCT_ID                         16   /* R---V */
3373 
3374 
3375 /*
3376  * NV_CTRL_STRING_VCSC_SERIAL_NUMBER - Querys the unique serial number
3377  * of the VCS device.
3378  *
3379  * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
3380  * using a NV_CTRL_TARGET_TYPE_VCSC target.
3381  */
3382 
3383 #define NV_CTRL_STRING_VCSC_SERIAL_NUMBER                      17   /* R---V */
3384 
3385 
3386 /*
3387  * NV_CTRL_STRING_VCSC_BUILD_DATE - Querys the date of the VCS device.
3388  * the returned string is in the following format: "Week.Year"
3389  *
3390  * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
3391  * using a NV_CTRL_TARGET_TYPE_VCSC target.
3392  */
3393 
3394 #define NV_CTRL_STRING_VCSC_BUILD_DATE                         18   /* R---V */
3395 
3396 
3397 /*
3398  * NV_CTRL_STRING_VCSC_FIRMWARE_VERSION - Querys the firmware version
3399  * of the VCS device.
3400  *
3401  * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
3402  * using a NV_CTRL_TARGET_TYPE_VCSC target.
3403  */
3404 
3405 #define NV_CTRL_STRING_VCSC_FIRMWARE_VERSION                   19   /* R---V */
3406 
3407 
3408 /*
3409  * NV_CTRL_STRING_VCSC_FIRMWARE_REVISION - Querys the firmware revision
3410  * of the VCS device.
3411  *
3412  * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
3413  * using a NV_CTRL_TARGET_TYPE_VCS target.
3414  */
3415 
3416 #define NV_CTRL_STRING_VCSC_FIRMWARE_REVISION                  20   /* R---V */
3417 
3418 
3419 /*
3420  * NV_CTRL_STRING_VCSC_HARDWARE_VERSION - Querys the hardware version
3421  * of the VCS device.
3422  *
3423  * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
3424  * using a NV_CTRL_TARGET_TYPE_VCSC target.
3425  */
3426 
3427 #define NV_CTRL_STRING_VCSC_HARDWARE_VERSION                   21   /* R---V */
3428 
3429 
3430 /*
3431  * NV_CTRL_STRING_VCSC_HARDWARE_REVISION - Querys the hardware revision
3432  * of the VCS device.
3433  *
3434  * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
3435  * using a NV_CTRL_TARGET_TYPE_VCSC target.
3436  */
3437 
3438 #define NV_CTRL_STRING_VCSC_HARDWARE_REVISION                  22   /* R---V */
3439 
3440 
3441 /*
3442  * NV_CTRL_STRING_MOVE_METAMODE - Moves a MetaMode to the specified
3443  * index location.  The MetaMode must already exist in the X Screen's
3444  * list of MetaModes (as returned by the NV_CTRL_BINARY_DATA_METAMODES
3445  * attribute).  If the index is larger than the number of MetaModes in
3446  * the list, the MetaMode is moved to the end of the list.  The
3447  * MetaMode string should have the same syntax as the MetaMode X
3448  * configuration option, as documented in the NVIDIA driver README.
3449 
3450  * The MetaMode string must be prepended with a comma-separated list
3451  * of "token=value" pairs, separated from the MetaMode string by "::".
3452  * Currently, the only valid token is "index", which indicates where
3453  * in the MetaMode list the MetaMode should be moved to.
3454  *
3455  * Other tokens may be added in the future.
3456  *
3457  * E.g.,
3458  *  "index=5 :: CRT-0: 1024x768 @1024x768 +0+0"
3459  */
3460 
3461 #define NV_CTRL_STRING_MOVE_METAMODE                           23   /* -W-- */
3462 
3463 
3464 /*
3465  * NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES - returns the valid
3466  * horizontal sync ranges used to perform mode validation for the
3467  * specified display device.  The ranges are in the same format as the
3468  * "HorizSync" X config option:
3469  *
3470  *   "horizsync-range may be a comma separated list of either discrete
3471  *   values or ranges of values.  A range of values is two values
3472  *   separated by a dash."
3473  *
3474  * The values are in kHz.
3475  *
3476  * Additionally, the string may be prepended with a comma-separated
3477  * list of "token=value" pairs, separated from the HorizSync string by
3478  * "::".  Valid tokens:
3479  *
3480  *    Token     Value
3481  *   "source"  "edid"     - HorizSync is from the display device's EDID
3482  *             "xconfig"  - HorizSync is from the "HorizSync" entry in
3483  *                          the Monitor section of the X config file
3484  *             "option"   - HorizSync is from the "HorizSync" NVIDIA X
3485  *                          config option
3486  *             "twinview" - HorizSync is from the "SecondMonitorHorizSync"
3487  *                          NVIDIA X config option
3488  *             "builtin"  - HorizSync is from NVIDIA X driver builtin
3489  *                          default values
3490  *
3491  * Additional tokens and/or values may be added in the future.
3492  *
3493  * Example: "source=edid :: 30.000-62.000"
3494  */
3495 
3496 #define NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES                 24   /* R-DG */
3497 
3498 
3499 /*
3500  * NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES - returns the valid
3501  * vertical refresh ranges used to perform mode validation for the
3502  * specified display device.  The ranges are in the same format as the
3503  * "VertRefresh" X config option:
3504  *
3505  *   "vertrefresh-range may be a comma separated list of either discrete
3506  *    values or ranges of values.  A range of values is two values
3507  *    separated by a dash."
3508  *
3509  * The values are in Hz.
3510  *
3511  * Additionally, the string may be prepended with a comma-separated
3512  * list of "token=value" pairs, separated from the VertRefresh string by
3513  * "::".  Valid tokens:
3514  *
3515  *    Token     Value
3516  *   "source"  "edid"     - VertRefresh is from the display device's EDID
3517  *             "xconfig"  - VertRefresh is from the "VertRefresh" entry in
3518  *                          the Monitor section of the X config file
3519  *             "option"   - VertRefresh is from the "VertRefresh" NVIDIA X
3520  *                          config option
3521  *             "twinview" - VertRefresh is from the "SecondMonitorVertRefresh"
3522  *                          NVIDIA X config option
3523  *             "builtin"  - VertRefresh is from NVIDIA X driver builtin
3524  *                          default values
3525  *
3526  * Additional tokens and/or values may be added in the future.
3527  *
3528  * Example: "source=edid :: 50.000-75.000"
3529  */
3530 
3531 #define NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES               25   /* R-DG */
3532 
3533 
3534 /*
3535  * NV_CTRL_STRING_XINERAMA_SCREEN_INFO - returns the physical X Screen's
3536  * initial position and size (in absolute coordinates) within the Xinerama
3537  * desktop as the "token=value" string:  "x=#, y=#, width=#, height=#"
3538  *
3539  * Querying this attribute returns FALSE if NV_CTRL_XINERAMA is not
3540  * NV_CTRL_XINERAMA_ON.
3541  */
3542 
3543 #define NV_CTRL_STRING_XINERAMA_SCREEN_INFO                    26   /* R--- */
3544 
3545 
3546 /*
3547  * NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER - used to specify the
3548  * order that display devices will be returned via Xinerama when
3549  * nvidiaXineramaInfo is enabled.  Follows the same syntax as the
3550  * nvidiaXineramaInfoOrder X config option.
3551  */
3552 
3553 #define NV_CTRL_STRING_NVIDIA_XINERAMA_INFO_ORDER              27   /* RW-- */
3554 
3555 #define NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER \
3556     NV_CTRL_STRING_NVIDIA_XINERAMA_INFO_ORDER /* for backwards compatibility: */
3557 
3558 /*
3559  * NV_CTRL_STRING_SLI_MODE - returns a string describing the current
3560  * SLI mode, if any, or FALSE if SLI is not currently enabled.
3561  *
3562  * This string should be used for informational purposes only, and
3563  * should not be used to distinguish between SLI modes, other than to
3564  * recognize when SLI is disabled (FALSE is returned) or
3565  * enabled (the returned string is non-NULL and describes the current
3566  * SLI configuration).
3567  */
3568 
3569 #define NV_CTRL_STRING_SLI_MODE                                28   /* R---*/
3570 
3571 
3572 /*
3573  * NV_CTRL_STRING_PERFORMANCE_MODES - returns a string with all the
3574  * performance modes defined for this GPU along with their associated
3575  * NV Clock and Memory Clock values.
3576  *
3577  * Each performance modes are returned as a comma-separated list of
3578  * "token=value" pairs.  Each set of performance mode tokens are separated
3579  * by a ";".  Valid tokens:
3580  *
3581  *    Token      Value
3582  *   "perf"      integer   - the Performance level
3583  *   "nvclock"   integer   - the GPU clocks (in MHz) for the perf level
3584  *   "memclock"  integer   - the memory clocks (in MHz) for the perf level
3585  *
3586  *
3587  * Example:
3588  *
3589  *   perf=0, nvclock=500, memclock=505 ; perf=1, nvclock=650, memclock=505
3590  *
3591  * This attribute may be queried through XNVCTRLQueryTargetStringAttribute()
3592  * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
3593  */
3594 
3595 #define NV_CTRL_STRING_PERFORMANCE_MODES                      29   /* R--G */
3596 
3597 
3598 /*
3599  * NV_CTRL_STRING_VCSC_FAN_STATUS - returns a string with status of all the
3600  * fans in the Visual Computing System, if such a query is supported.  Fan
3601  * information is reported along with its tachometer reading (in RPM) and a
3602  * flag indicating whether the fan has failed or not.
3603  *
3604  * Valid tokens:
3605  *
3606  *    Token      Value
3607  *   "fan"       integer   - the Fan index
3608  *   "speed"     integer   - the tachometer reading of the fan in rpm
3609  *   "fail"      integer   - flag to indicate whether the fan has failed
3610  *
3611  * Example:
3612  *
3613  *   fan=0, speed=694, fail=0 ; fan=1, speed=693, fail=0
3614  *
3615  * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
3616  * using a NV_CTRL_TARGET_TYPE_VCSC target.
3617  *
3618  */
3619 
3620 #define NV_CTRL_STRING_VCSC_FAN_STATUS                         30   /* R---V */
3621 
3622 
3623 /*
3624  * NV_CTRL_STRING_VCSC_TEMPERATURES - returns a string with all Temperature
3625  * readings in the Visual Computing System, if such a query is supported.
3626  * Intake, Exhaust and Board Temperature values are reported in Celcius.
3627  *
3628  * Valid tokens:
3629  *
3630  *    Token      Value
3631  *   "intake"    integer   - the intake temperature for the VCS
3632  *   "exhaust"   integer   - the exhaust temperature for the VCS
3633  *   "board"     integer   - the board temperature of the VCS
3634  *
3635  * Example:
3636  *
3637  *   intake=29, exhaust=46, board=41
3638  *
3639  * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
3640  * using a NV_CTRL_TARGET_TYPE_VCSC target.
3641  *
3642  */
3643 
3644 #define NV_CTRL_STRING_VCSC_TEMPERATURES                       31   /* R---V */
3645 
3646 
3647 /*
3648  * NV_CTRL_STRING_VCSC_PSU_INFO - returns a string with all Power Supply Unit
3649  * related readings in the Visual Computing System, if such a query is
3650  * supported.  Current in amperes, Power in watts, Voltage in volts and PSU
3651  * state may be reported.  Not all PSU types support all of these values, and
3652  * therefore some readings may be unknown.
3653  *
3654  * Valid tokens:
3655  *
3656  *    Token      Value
3657  *   "current"   integer   - the current drawn in amperes by the VCS
3658  *   "power"     integer   - the power drawn in watts by the VCS
3659  *   "voltage"   integer   - the voltage reading of the VCS
3660  *   "state"     integer   - flag to indicate whether PSU is operating normally
3661  *
3662  * Example:
3663  *
3664  *   current=10, power=15, voltage=unknown, state=normal
3665  *
3666  * This attribute must be queried through XNVCTRLQueryTargetStringAttribute()
3667  * using a NV_CTRL_TARGET_TYPE_VCSC target.
3668  *
3669  */
3670 
3671 
3672 #define NV_CTRL_STRING_VCSC_PSU_INFO                           32   /* R---V */
3673 
3674 
3675 /*
3676  * NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME - query the name for the specified
3677  * NV_CTRL_GVIO_VIDEO_FORMAT_*.  So that this can be queried with existing
3678  * interfaces, XNVCTRLQueryStringAttribute() should be used, and the video
3679  * format specified in the display_mask field; eg:
3680  *
3681  * XNVCTRLQueryStringAttribute(dpy,
3682  *                             screen,
3683  *                             NV_CTRL_GVIO_VIDEO_FORMAT_720P_60_00_SMPTE296,
3684  *                             NV_CTRL_GVIO_VIDEO_FORMAT_NAME,
3685  *                             &name);
3686  */
3687 
3688 #define NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME                  33  /* R--GI */
3689 
3690 /*
3691  * The following is deprecated; use NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME,
3692  * instead
3693  */
3694 #define NV_CTRL_STRING_GVO_VIDEO_FORMAT_NAME                   33  /* R--- */
3695 
3696 
3697 /*
3698  * NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS - returns a string with the
3699  * associated NV Clock, Memory Clock and Processor Clock values.
3700  *
3701  * Current valid tokens are "nvclock", "memclock", and "processorclock".
3702  * Not all tokens will be reported on all GPUs, and additional tokens
3703  * may be added in the future.
3704  *
3705  * Clock values are returned as a comma-separated list of
3706  * "token=value" pairs.
3707  * Valid tokens:
3708  *
3709  *    Token           Value
3710  *   "nvclock"        integer - the GPU clocks (in MHz) for the current
3711  *                              perf level
3712  *   "memclock"       integer - the memory clocks (in MHz) for the current
3713  *                              perf level
3714  *   "processorclock" integer - the processor clocks (in MHz) for the perf level
3715  *
3716  *
3717  * Example:
3718  *
3719  *    nvclock=459, memclock=400, processorclock=918
3720  *
3721  * This attribute may be queried through XNVCTRLQueryTargetStringAttribute()
3722  * using an NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
3723  */
3724 
3725 #define NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS                 34  /* RW-G */
3726 
3727 /*
3728  * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_HARDWARE_REVISION - Returns the
3729  * hardware revision of the 3D Vision Pro transceiver.
3730  */
3731 #define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_HARDWARE_REVISION  35 /* R--T */
3732 
3733 /*
3734  * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_A - Returns the
3735  * firmware version of chip A of the 3D Vision Pro transceiver.
3736  */
3737 #define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_A 36 /* R--T */
3738 
3739 /*
3740  * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_A - Returns the
3741  * date of the firmware of chip A of the 3D Vision Pro transceiver.
3742  */
3743 #define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_A    37 /* R--T */
3744 
3745 /*
3746  * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_B - Returns the
3747  * firmware version of chip B of the 3D Vision Pro transceiver.
3748  */
3749 #define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_B 38 /* R--T */
3750 
3751 /*
3752  * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_B - Returns the
3753  * date of the firmware of chip B of the 3D Vision Pro transceiver.
3754  */
3755 #define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_B    39 /* R--T */
3756 
3757 /*
3758  * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_ADDRESS - Returns the RF address
3759  * of the 3D Vision Pro transceiver.
3760  */
3761 #define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_ADDRESS            40 /* R--T */
3762 
3763 /*
3764  * NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_VERSION_A - Returns the
3765  * firmware version of chip A of the glasses.
3766  * Use the display_mask parameter to specify the glasses id.
3767  */
3768 #define NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_VERSION_A     41 /* R--T */
3769 
3770 /*
3771  * NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_DATE_A - Returns the
3772  * date of the firmware of chip A of the glasses.
3773  * Use the display_mask parameter to specify the glasses id.
3774  */
3775 #define NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_DATE_A        42 /* R--T */
3776 
3777 /*
3778  * NV_CTRL_STRING_3D_VISION_PRO_GLASSES_ADDRESS - Returns the RF address
3779  * of the glasses.
3780  * Use the display_mask parameter to specify the glasses id.
3781  */
3782 #define NV_CTRL_STRING_3D_VISION_PRO_GLASSES_ADDRESS                43 /* R--T */
3783 
3784 /*
3785  * NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME - Controls the name the
3786  * glasses should use.
3787  * Use the display_mask parameter to specify the glasses id.
3788  * Glasses' name should start and end with an alpha-numeric character.
3789  */
3790 #define NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME                   44 /* RW-T */
3791 
3792 /*
3793  * NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2 - Returns the metamode currently
3794  * being used by the specified X screen.  The MetaMode string has the same
3795  * syntax as the MetaMode X configuration option, as documented in the NVIDIA
3796  * driver README.  Also, see NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 for more
3797  * details on the base syntax.
3798  *
3799  * The returned string may also be prepended with a comma-separated list of
3800  * "token=value" pairs, separated from the MetaMode string by "::".
3801  */
3802 #define NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2                   45 /* RW-- */
3803 
3804 /*
3805  * NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME - Returns a type name for the
3806  * display device ("CRT", "DFP", or "TV").  However, note that the determination
3807  * of the name is based on the protocol through which the X driver communicates
3808  * to the display device.  E.g., if the driver communicates using VGA ,then the
3809  * basename is "CRT"; if the driver communicates using TMDS, LVDS, or DP, then
3810  * the name is "DFP".
3811  */
3812 #define NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME                   46 /* R-D- */
3813 
3814 /*
3815  * NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID - Returns the type-based name + ID for
3816  * the display device, e.g. "CRT-0", "DFP-1", "TV-2".  If this device is a
3817  * DisplayPort 1.2 device, then this name will also be prepended with the
3818  * device's port address like so: "DFP-1.0.1.2.3".  See
3819  * NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME for more information about the
3820  * construction of type-based names.
3821  */
3822 #define NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID                         47 /* R-D- */
3823 
3824 /*
3825  * NV_CTRL_STRING_DISPLAY_NAME_DP_GUID - Returns the GUID of the DisplayPort
3826  * display device.  e.g. "DP-GUID-f16a5bde-79f3-11e1-b2ae-8b5a8969ba9c"
3827  *
3828  * The display device must be a DisplayPort 1.2 device.
3829  */
3830 #define NV_CTRL_STRING_DISPLAY_NAME_DP_GUID                         48 /* R-D- */
3831 
3832 /*
3833  * NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH - Returns the SHA-1 hash of the
3834  * display device's EDID in 8-4-4-4-12 UID format. e.g.
3835  * "DPY-EDID-f16a5bde-79f3-11e1-b2ae-8b5a8969ba9c"
3836  *
3837  * The display device must have a valid EDID.
3838  */
3839 #define NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH                       49 /* R-D- */
3840 
3841 /*
3842  * NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX - Returns the current NV-CONTROL
3843  * target ID (name) of the display device.  e.g. "DPY-1", "DPY-4"
3844  *
3845  * This name for the display device is not guarenteed to be the same between
3846  * different runs of the X server.
3847  */
3848 #define NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX                    50 /* R-D- */
3849 
3850 /*
3851  * NV_CTRL_STRING_DISPLAY_NAME_RANDR - Returns the RandR output name for the
3852  * display device.  e.g.  "VGA-1", "DVI-I-0", "DVI-D-3", "LVDS-1", "DP-2",
3853  * "HDMI-3", "eDP-6".  This name should match  If this device is a DisplayPort
3854  * 1.2 device, then this name will also be prepended with the device's port
3855  * address like so: "DVI-I-3.0.1.2.3"
3856  */
3857 #define NV_CTRL_STRING_DISPLAY_NAME_RANDR                           51 /* R-D- */
3858 
3859 #define NV_CTRL_STRING_LAST_ATTRIBUTE \
3860     NV_CTRL_STRING_DISPLAY_NAME_RANDR
3861 
3862 
3863 /**************************************************************************/
3864 
3865 /*
3866  * Binary Data Attributes:
3867  *
3868  * Binary data attributes can be queryied through the XNVCTRLQueryBinaryData()
3869  * and XNVCTRLQueryTargetBinaryData() function calls.
3870  *
3871  * There are currently no binary data attributes that can be set.
3872  *
3873  * Unless otherwise noted, all Binary data attributes can be queried
3874  * using an NV_CTRL_TARGET_TYPE_X_SCREEN target.  Attributes that cannot take
3875  * an NV_CTRL_TARGET_TYPE_X_SCREEN target also cannot be queried through
3876  * XNVCTRLQueryBinaryData() (Since an X Screen target is assumed).
3877  */
3878 
3879 
3880 /*
3881  * NV_CTRL_BINARY_DATA_EDID - Returns a display device's EDID information
3882  * data.
3883  *
3884  * This attribute may be queried through XNVCTRLQueryTargetBinaryData()
3885  * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
3886  */
3887 
3888 #define NV_CTRL_BINARY_DATA_EDID                                0  /* R-DG */
3889 
3890 
3891 /*
3892  * NV_CTRL_BINARY_DATA_MODELINES - Returns a display device's supported
3893  * ModeLines.  ModeLines are returned in a buffer, separated by a single
3894  * '\0' and terminated by two consecutive '\0' s like so:
3895  *
3896  *  "ModeLine 1\0ModeLine 2\0ModeLine 3\0Last ModeLine\0\0"
3897  *
3898  * This attribute may be queried through XNVCTRLQueryTargetBinaryData()
3899  * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target.
3900  *
3901  * Each ModeLine string may be prepended with a comma-separated list
3902  * of "token=value" pairs, separated from the ModeLine string with a
3903  * "::".  Valid tokens:
3904  *
3905  *    Token    Value
3906  *   "source" "xserver"    - the ModeLine is from the core X server
3907  *            "xconfig"    - the ModeLine was specified in the X config file
3908  *            "builtin"    - the NVIDIA driver provided this builtin ModeLine
3909  *            "vesa"       - this is a VESA standard ModeLine
3910  *            "edid"       - the ModeLine was in the display device's EDID
3911  *            "nv-control" - the ModeLine was specified via NV-CONTROL
3912  *
3913  *   "xconfig-name"        - for ModeLines that were specified in the X config
3914  *                           file, this is the name the X config file
3915  *                           gave for the ModeLine.
3916  *
3917  * Note that a ModeLine can have several sources; the "source" token
3918  * can appear multiple times in the "token=value" pairs list.
3919  * Additional source values may be specified in the future.
3920  *
3921  * Additional tokens may be added in the future, so it is recommended
3922  * that any token parser processing the returned string from
3923  * NV_CTRL_BINARY_DATA_MODELINES be implemented to gracefully ignore
3924  * unrecognized tokens.
3925  *
3926  * E.g.,
3927  *
3928  * "source=xserver, source=vesa, source=edid :: "1024x768_70"  75.0  1024 1048 1184 1328  768 771 777 806  -HSync -VSync"
3929  * "source=xconfig, xconfig-name=1600x1200_60.00 :: "1600x1200_60_0"  161.0  1600 1704 1880 2160  1200 1201 1204 1242  -HSync +VSync"
3930  */
3931 
3932 #define NV_CTRL_BINARY_DATA_MODELINES                           1   /* R-DG */
3933 
3934 
3935 /*
3936  * NV_CTRL_BINARY_DATA_METAMODES - Returns an X Screen's supported
3937  * MetaModes.  MetaModes are returned in a buffer separated by a
3938  * single '\0' and terminated by two consecutive '\0' s like so:
3939  *
3940  *  "MetaMode 1\0MetaMode 2\0MetaMode 3\0Last MetaMode\0\0"
3941  *
3942  * The MetaMode string should have the same syntax as the MetaMode X
3943  * configuration option, as documented in the NVIDIA driver README.
3944 
3945  * Each MetaMode string may be prepended with a comma-separated list
3946  * of "token=value" pairs, separated from the MetaMode string with
3947  * "::".  Currently, valid tokens are:
3948  *
3949  *    Token        Value
3950  *   "id"         <number>     - the id of this MetaMode; this is stored in
3951  *                               the Vertical Refresh field, as viewed
3952  *                               by the XRandR and XF86VidMode X *
3953  *                               extensions.
3954  *
3955  *   "switchable" "yes"/"no"   - whether this MetaMode may be switched to via
3956  *                               ctrl-alt-+/-; Implicit MetaModes (see
3957  *                               the "IncludeImplicitMetaModes" X
3958  *                               config option), for example, are not
3959  *                               normally made available through
3960  *                               ctrl-alt-+/-.
3961  *
3962  *   "source"     "xconfig"    - the MetaMode was specified in the X
3963  *                               config file.
3964  *                "implicit"   - the MetaMode was implicitly added; see the
3965  *                               "IncludeImplicitMetaModes" X config option
3966  *                               for details.
3967  *                "nv-control" - the MetaMode was added via the NV-CONTROL X
3968  *                               extension to the currently running X server.
3969  *                "RandR"      - the MetaMode was modified in response to an
3970  *                               RandR RRSetCrtcConfig request.
3971  *
3972  * Additional tokens may be added in the future, so it is recommended
3973  * that any token parser processing the returned string from
3974  * NV_CTRL_BINARY_DATA_METAMODES be implemented to gracefully ignore
3975  * unrecognized tokens.
3976  *
3977  * E.g.,
3978  *
3979  *   "id=50, switchable=yes, source=xconfig :: CRT-0: 1024x768 @1024x768 +0+0"
3980  */
3981 
3982 #define NV_CTRL_BINARY_DATA_METAMODES                           2   /* R-D- */
3983 #define NV_CTRL_BINARY_DATA_METAMODES_VERSION_1 \
3984     NV_CTRL_BINARY_DATA_METAMODES
3985 
3986 
3987 /*
3988  * NV_CTRL_BINARY_DATA_XSCREENS_USING_GPU - Returns the list of X
3989  * screens currently driven by the given GPU.
3990  *
3991  * The format of the returned data is:
3992  *
3993  *     4       CARD32 number of screens
3994  *     4 * n   CARD32 screen indices
3995  *
3996  * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
3997  * using a NV_CTRL_TARGET_TYPE_GPU target.  This attribute cannot be
3998  * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN.
3999  */
4000 
4001 #define NV_CTRL_BINARY_DATA_XSCREENS_USING_GPU                  3   /* R-DG */
4002 
4003 
4004 /*
4005  * NV_CTRL_BINARY_DATA_GPUS_USED_BY_XSCREEN - Returns the list of GPUs
4006  * currently in use by the given X screen.
4007  *
4008  * The format of the returned data is:
4009  *
4010  *     4       CARD32 number of GPUs
4011  *     4 * n   CARD32 GPU indices
4012  */
4013 
4014 #define NV_CTRL_BINARY_DATA_GPUS_USED_BY_XSCREEN                4   /* R--- */
4015 
4016 
4017 /*
4018  * NV_CTRL_BINARY_DATA_GPUS_USING_FRAMELOCK - Returns the list of
4019  * GPUs currently connected to the given frame lock board.
4020  *
4021  * The format of the returned data is:
4022  *
4023  *     4       CARD32 number of GPUs
4024  *     4 * n   CARD32 GPU indices
4025  *
4026  * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
4027  * using a NV_CTRL_TARGET_TYPE_FRAMELOCK target.  This attribute cannot be
4028  * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN.
4029  */
4030 
4031 #define NV_CTRL_BINARY_DATA_GPUS_USING_FRAMELOCK                5   /* R-DF */
4032 
4033 
4034 /*
4035  * NV_CTRL_BINARY_DATA_DISPLAY_VIEWPORT - Returns the Display Device's
4036  * viewport box into the given X Screen (in X Screen coordinates.)
4037  *
4038  * The format of the returned data is:
4039  *
4040  *     4       CARD32 Offset X
4041  *     4       CARD32 Offset Y
4042  *     4       CARD32 Width
4043  *     4       CARD32 Height
4044  */
4045 
4046 #define NV_CTRL_BINARY_DATA_DISPLAY_VIEWPORT                    6   /* R-DG */
4047 
4048 
4049 /*
4050  * NV_CTRL_BINARY_DATA_FRAMELOCKS_USED_BY_GPU - Returns the list of
4051  * Framelock devices currently connected to the given GPU.
4052  *
4053  * The format of the returned data is:
4054  *
4055  *     4       CARD32 number of Framelocks
4056  *     4 * n   CARD32 Framelock indices
4057  *
4058  * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
4059  * using a NV_CTRL_TARGET_TYPE_GPU target.  This attribute cannot be
4060  * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN.
4061  */
4062 
4063 #define NV_CTRL_BINARY_DATA_FRAMELOCKS_USED_BY_GPU              7   /* R-DG */
4064 
4065 
4066 /*
4067  * NV_CTRL_BINARY_DATA_GPUS_USING_VCSC - Returns the list of
4068  * GPU devices connected to the given VCS.
4069  *
4070  * The format of the returned data is:
4071  *
4072  *     4       CARD32 number of GPUs
4073  *     4 * n   CARD32 GPU indices
4074  *
4075  * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
4076  * using a NV_CTRL_TARGET_TYPE_VCSC target.  This attribute cannot be
4077  * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN and cannot be queried using
4078  * a  NV_CTRL_TARGET_TYPE_X_GPU
4079  */
4080 
4081 #define NV_CTRL_BINARY_DATA_GPUS_USING_VCSC                    8   /* R-DV */
4082 
4083 
4084 /*
4085  * NV_CTRL_BINARY_DATA_VCSCS_USED_BY_GPU - Returns the VCSC device
4086  * that is controlling the given GPU.
4087  *
4088  * The format of the returned data is:
4089  *
4090  *     4       CARD32 number of VCS (always 1)
4091  *     4 * n   CARD32 VCS indices
4092  *
4093  * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
4094  * using a NV_CTRL_TARGET_TYPE_GPU target.  This attribute cannot be
4095  * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN
4096  */
4097 
4098 #define NV_CTRL_BINARY_DATA_VCSCS_USED_BY_GPU                  9   /* R-DG */
4099 
4100 
4101 /*
4102  * NV_CTRL_BINARY_DATA_COOLERS_USED_BY_GPU - Returns the coolers that
4103  * are cooling the given GPU.
4104  *
4105  * The format of the returned data is:
4106  *
4107  *     4       CARD32 number of COOLER
4108  *     4 * n   CARD32 COOLER indices
4109  *
4110  * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
4111  * using a NV_CTRL_TARGET_TYPE_GPU target.  This attribute cannot be
4112  * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN
4113  */
4114 
4115 #define NV_CTRL_BINARY_DATA_COOLERS_USED_BY_GPU                10  /* R-DG */
4116 
4117 
4118 /*
4119  * NV_CTRL_BINARY_DATA_GPUS_USED_BY_LOGICAL_XSCREEN - Returns the list of
4120  * GPUs currently driving the given X screen.  If Xinerama is enabled, this
4121  * will return all GPUs that are driving any X screen.
4122  *
4123  * The format of the returned data is:
4124  *
4125  *     4       CARD32 number of GPUs
4126  *     4 * n   CARD32 GPU indices
4127  */
4128 
4129 #define NV_CTRL_BINARY_DATA_GPUS_USED_BY_LOGICAL_XSCREEN     11   /* R--- */
4130 
4131 /*
4132  * NV_CTRL_BINARY_DATA_THERMAL_SENSORS_USED_BY_GPU - Returns the sensors that
4133  * are attached to the given GPU.
4134  *
4135  * The format of the returned data is:
4136  *
4137  *     4       CARD32 number of SENSOR
4138  *     4 * n   CARD32 SENSOR indices
4139  *
4140  * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
4141  * using a NV_CTRL_TARGET_TYPE_GPU target.  This attribute cannot be
4142  * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN
4143  */
4144 
4145 #define NV_CTRL_BINARY_DATA_THERMAL_SENSORS_USED_BY_GPU      12  /* R--G */
4146 
4147 /*
4148  * NV_CTRL_BINARY_DATA_GLASSES_PAIRED_TO_3D_VISION_PRO_TRANSCEIVER - Returns
4149  * the id of the glasses that are currently paired to the given
4150  * 3D Vision Pro transceiver.
4151  *
4152  * The format of the returned data is:
4153  *
4154  *     4       CARD32 number of glasses
4155  *     4 * n   CARD32 id of glasses
4156  *
4157  * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
4158  * using a NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER target.
4159  */
4160 #define NV_CTRL_BINARY_DATA_GLASSES_PAIRED_TO_3D_VISION_PRO_TRANSCEIVER 13 /* R--T */
4161 
4162 /*
4163  * NV_CTRL_BINARY_DATA_DISPLAY_TARGETS - Returns all the display devices
4164  * currently connected to any GPU on the X server.
4165  *
4166  * The format of the returned data is:
4167  *
4168  *     4       CARD32 number of display devices
4169  *     4 * n   CARD32 display device indices
4170  *
4171  * This attribute can only be queried through XNVCTRLQueryTargetBinaryData().
4172  */
4173 
4174 #define NV_CTRL_BINARY_DATA_DISPLAY_TARGETS                  14  /* R--- */
4175 
4176 /*
4177  * NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU - Returns the list of
4178  * display devices that are connected to the GPU target.
4179  *
4180  * The format of the returned data is:
4181  *
4182  *     4       CARD32 number of display devices
4183  *     4 * n   CARD32 display device indices
4184  *
4185  * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
4186  * using a NV_CTRL_TARGET_TYPE_GPU target.
4187  */
4188 
4189 #define NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU        15  /* R--G */
4190 
4191 /*
4192  * NV_CTRL_BINARY_DATA_METAMODES_VERSION_2  - Returns values similar to
4193  * NV_CTRL_BINARY_DATA_METAMODES(_VERSION_1) but also returns extended syntax
4194  * information to indicate a specific display device, as well as other per-
4195  * display deviceflags as "token=value" pairs.  For example:
4196  *
4197  *   "DPY-1: 1280x1024 {Stereo=PassiveLeft},
4198  *    DPY-2: 1280x1024 {Stereo=PassiveRight},"
4199  *
4200  * The display device names have the form "DPY-%d", where the integer
4201  * part of the name is the NV-CONTROL target ID for that display device
4202  * for this instance of the X server.  Note that display device NV-CONTROL
4203  * target IDs are not guaranteed to be the same from one run of the X
4204  * server to the next.
4205  */
4206 
4207 #define NV_CTRL_BINARY_DATA_METAMODES_VERSION_2              16  /* R-D- */
4208 
4209 /*
4210  * NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN - Returns the list of
4211  * display devices that are currently scanning out the X screen target.
4212  *
4213  * The format of the returned data is:
4214  *
4215  *     4       CARD32 number of display devices
4216  *     4 * n   CARD32 display device indices
4217  *
4218  * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
4219  * using a NV_CTRL_TARGET_TYPE_X_SCREEN target.
4220  */
4221 
4222 #define NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN      17  /* R--- */
4223 
4224 
4225 #define NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE \
4226         NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN
4227 
4228 
4229 /**************************************************************************/
4230 
4231 /*
4232  * String Operation Attributes:
4233  *
4234  * These attributes are used with the XNVCTRLStringOperation()
4235  * function; a string is specified as input, and a string is returned
4236  * as output.
4237  *
4238  * Unless otherwise noted, all attributes can be operated upon using
4239  * an NV_CTRL_TARGET_TYPE_X_SCREEN target.
4240  */
4241 
4242 
4243 /*
4244  * NV_CTRL_STRING_OPERATION_ADD_METAMODE - provide a MetaMode string
4245  * as input, and returns a string containing comma-separated list of
4246  * "token=value" pairs as output.  Currently, the only output token is
4247  * "id", which indicates the id that was assigned to the MetaMode.
4248  *
4249  * All ModeLines referenced in the MetaMode must already exist for
4250  * each display device (as returned by the
4251  * NV_CTRL_BINARY_DATA_MODELINES attribute).
4252  *
4253  * The MetaMode string should have the same syntax as the MetaMode X
4254  * configuration option, as documented in the NVIDIA driver README.
4255  *
4256  * The input string can optionally be prepended with a string of
4257  * comma-separated "token=value" pairs, separated from the MetaMode
4258  * string by "::".  Currently, the only valid token is "index" which
4259  * indicates the insertion index for the MetaMode.
4260  *
4261  * E.g.,
4262  *
4263  * Input: "index=5 :: 1600x1200+0+0, 1600x1200+1600+0"
4264  * Output: "id=58"
4265  *
4266  * which causes the MetaMode to be inserted at position 5 in the
4267  * MetaMode list (all entries after 5 will be shifted down one slot in
4268  * the list), and the X server's containing mode stores 58 as the
4269  * VRefresh, so that the MetaMode can be uniquely identifed through
4270  * XRandR and XF86VidMode.
4271  */
4272 
4273 #define NV_CTRL_STRING_OPERATION_ADD_METAMODE                  0
4274 
4275 
4276 /*
4277  * NV_CTRL_STRING_OPERATION_GTF_MODELINE - provide as input a string
4278  * of comma-separated "token=value" pairs, and returns a ModeLine
4279  * string, computed using the GTF formula using the parameters from
4280  * the input string.  Valid tokens for the input string are "width",
4281  * "height", and "refreshrate".
4282  *
4283  * E.g.,
4284  *
4285  * Input: "width=1600, height=1200, refreshrate=60"
4286  * Output: "160.96  1600 1704 1880 2160  1200 1201 1204 1242  -HSync +VSync"
4287  *
4288  * This operation does not have any impact on any display device's
4289  * modePool, and the ModeLine is not validated; it is simply intended
4290  * for generating ModeLines.
4291  */
4292 
4293 #define NV_CTRL_STRING_OPERATION_GTF_MODELINE                  1
4294 
4295 
4296 /*
4297  * NV_CTRL_STRING_OPERATION_CVT_MODELINE - provide as input a string
4298  * of comma-separated "token=value" pairs, and returns a ModeLine
4299  * string, computed using the CVT formula using the parameters from
4300  * the input string.  Valid tokens for the input string are "width",
4301  * "height", "refreshrate", and "reduced-blanking".  The
4302  * "reduced-blanking" argument can be "0" or "1", to enable or disable
4303  * use of reduced blanking for the CVT formula.
4304  *
4305  * E.g.,
4306  *
4307  * Input: "width=1600, height=1200, refreshrate=60, reduced-blanking=1"
4308  * Output: "130.25  1600 1648 1680 1760  1200 1203 1207 1235  +HSync -VSync"
4309  *
4310  * This operation does not have any impact on any display device's
4311  * modePool, and the ModeLine is not validated; it is simply intended
4312  * for generating ModeLines.
4313  */
4314 
4315 #define NV_CTRL_STRING_OPERATION_CVT_MODELINE                  2
4316 
4317 
4318 /*
4319  * NV_CTRL_STRING_OPERATION_BUILD_MODEPOOL - build a ModePool for the
4320  * specified display device on the specified target (either an X
4321  * screen or a GPU).  This is typically used to generate a ModePool
4322  * for a display device on a GPU on which no X screens are present.
4323  *
4324  * Currently, a display device's ModePool is static for the life of
4325  * the X server, so XNVCTRLStringOperation will return FALSE if
4326  * requested to build a ModePool on a display device that already has
4327  * a ModePool.
4328  *
4329  * The string input to BUILD_MODEPOOL may be NULL.  If it is not NULL,
4330  * then it is interpreted as a double-colon ("::") separated list
4331  * of "option=value" pairs, where the options and the syntax of their
4332  * values are the X configuration options that impact the behavior of
4333  * modePool construction; namely:
4334  *
4335  *    "ModeValidation"
4336  *    "HorizSync"
4337  *    "VertRefresh"
4338  *    "FlatPanelProperties"
4339  *    "TVStandard"
4340  *    "ExactModeTimingsDVI"
4341  *    "UseEdidFreqs"
4342  *
4343  * An example input string might look like:
4344  *
4345  *   "ModeValidation=NoVesaModes :: HorizSync=50-110 :: VertRefresh=50-150"
4346  *
4347  * This request currently does not return a string.
4348  */
4349 
4350 #define NV_CTRL_STRING_OPERATION_BUILD_MODEPOOL                3 /* DG */
4351 
4352 
4353 /*
4354  * NV_CTRL_STRING_OPERATION_GVI_CONFIGURE_STREAMS - Configure the streams-
4355  * to-jack+channel topology for a GVI (Graphics capture board).
4356  *
4357  * The string input to GVI_CONFIGURE_STREAMS may be NULL.  If this is the
4358  * case, then the current topology is returned.
4359  *
4360  * If the input string to GVI_CONFIGURE_STREAMS is not NULL, the string
4361  * is interpreted as a semicolon (";") separated list of comma-separated
4362  * lists of "option=value" pairs that define a stream's composition.  The
4363  * available options and their values are:
4364  *
4365  *   "stream": Defines which stream this comma-separated list describes.
4366  *             Valid values are the integers between 0 and
4367  *             NV_CTRL_GVI_NUM_STREAMS-1 (inclusive).
4368  *
4369  *   "linkN":  Defines a jack+channel pair to use for the given link N.
4370  *             Valid options are the string "linkN", where N is an integer
4371  *             between 0 and NV_CTRL_GVI_MAX_LINKS_PER_STREAM-1 (inclusive).
4372  *             Valid values for these options are strings of the form
4373  *             "jackX" and/or "jackX.Y", where X is an integer between 0 and
4374  *             NV_CTRL_GVI_NUM_JACKS-1 (inclusive), and Y (optional) is an
4375  *             integer between 0 and NV_CTRL_GVI_MAX_CHANNELS_PER_JACK-1
4376  *             (inclusive).
4377  *
4378  * An example input string might look like:
4379  *
4380  *   "stream=0, link0=jack0, link1=jack1; stream=1, link0=jack2.1"
4381  *
4382  *   This example specifies two streams, stream 0 and stream 1.  Stream 0
4383  *   is defined to capture link0 data from the first channel (channel 0) of
4384  *   BNC jack 0 and link1 data from the first channel of BNC jack 1.  The
4385  *   second stream (Stream 1) is defined to capture link0 data from channel 1
4386  *   (second channel) of BNC jack 2.
4387  *
4388  * This example shows a possible configuration for capturing 3G input:
4389  *
4390  *   "stream=0, link0=jack0.0, link1=jack0.1"
4391  *
4392  * Applications should query the following attributes to determine
4393  * possible combinations:
4394  *
4395  *   NV_CTRL_GVI_MAX_STREAMS
4396  *   NV_CTRL_GVI_MAX_LINKS_PER_STREAM
4397  *   NV_CTRL_GVI_NUM_JACKS
4398  *   NV_CTRL_GVI_MAX_CHANNELS_PER_JACK
4399  *
4400  * Note: A jack+channel pair can only be tied to one link/stream.
4401  *
4402  * Upon successful configuration or querying of this attribute, a string
4403  * representing the current topology for all known streams on the device
4404  * will be returned.  On failure, NULL is returned.
4405  *
4406  * Note: Setting this attribute may also result in the following
4407  *       NV-CONTROL attributes being reset on the GVI device (to ensure
4408  *       the configuration remains valid):
4409  *           NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT
4410  *           NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT
4411  *           NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING
4412  */
4413 
4414 #define NV_CTRL_STRING_OPERATION_GVI_CONFIGURE_STREAMS         4 /* RW-I */
4415 
4416 
4417 #define NV_CTRL_STRING_OPERATION_LAST_ATTRIBUTE \
4418         NV_CTRL_STRING_OPERATION_GVI_CONFIGURE_STREAMS
4419 
4420 
4421 
4422 
4423 /**************************************************************************/
4424 
4425 /*
4426  * CTRLAttributeValidValuesRec -
4427  *
4428  * structure and related defines used by
4429  * XNVCTRLQueryValidAttributeValues() to describe the valid values of
4430  * a particular attribute.  The type field will be one of:
4431  *
4432  * ATTRIBUTE_TYPE_INTEGER : the attribute is an integer value; there
4433  * is no fixed range of valid values.
4434  *
4435  * ATTRIBUTE_TYPE_BITMASK : the attribute is an integer value,
4436  * interpretted as a bitmask.
4437  *
4438  * ATTRIBUTE_TYPE_BOOL : the attribute is a boolean, valid values are
4439  * either 1 (on/true) or 0 (off/false).
4440  *
4441  * ATTRIBUTE_TYPE_RANGE : the attribute can have any integer value
4442  * between NVCTRLAttributeValidValues.u.range.min and
4443  * NVCTRLAttributeValidValues.u.range.max (inclusive).
4444  *
4445  * ATTRIBUTE_TYPE_INT_BITS : the attribute can only have certain
4446  * integer values, indicated by which bits in
4447  * NVCTRLAttributeValidValues.u.bits.ints are on (for example: if bit
4448  * 0 is on, then 0 is a valid value; if bit 5 is on, then 5 is a valid
4449  * value, etc).  This is useful for attributes like NV_CTRL_FSAA_MODE,
4450  * which can only have certain values, depending on GPU.
4451  *
4452  * ATTRIBUTE_TYPE_64BIT_INTEGER : the attribute is a 64 bit integer value;
4453  * there is no fixed range of valid values.
4454  *
4455  * ATTRIBUTE_TYPE_STRING : the attribute is a string value; there is no fixed
4456  * range of valid values.
4457  *
4458  * ATTRIBUTE_TYPE_BINARY_DATA : the attribute is binary data; there is
4459  * no fixed range of valid values.
4460  *
4461  * ATTRIBUTE_TYPE_STRING_OPERATION : the attribute is a string; there is
4462  * no fixed range of valid values.
4463  *
4464  *
4465  * The permissions field of NVCTRLAttributeValidValuesRec is a bitmask
4466  * that may contain:
4467  *
4468  * ATTRIBUTE_TYPE_READ      - Attribute may be read (queried.)
4469  * ATTRIBUTE_TYPE_WRITE     - Attribute may be written to (set.)
4470  * ATTRIBUTE_TYPE_DISPLAY   - Attribute is valid for display target types
4471  *                            (requires a display_mask if queried via
4472  *                            a GPU or X screen.)
4473  * ATTRIBUTE_TYPE_GPU       - Attribute is valid for GPU target types.
4474  * ATTRIBUTE_TYPE_FRAMELOCK - Attribute is valid for Frame Lock target types.
4475  * ATTRIBUTE_TYPE_X_SCREEN  - Attribute is valid for X Screen target types.
4476  * ATTRIBUTE_TYPE_XINERAMA  - Attribute will be made consistent for all
4477  *                            X Screens when the Xinerama extension is enabled.
4478  * ATTRIBUTE_TYPE_VCSC      - Attribute is valid for Visual Computing System
4479  *                            target types.
4480  * ATTRIBUTE_TYPE_GVI       - Attribute is valid for Graphics Video In target
4481  *                            types.
4482  * ATTRIBUTE_TYPE_COOLER    - Attribute is valid for Cooler target types.
4483  * ATTRIBUTE_TYPE_3D_VISION_PRO_TRANSCEIVER - Attribute is valid for 3D Vision
4484  *                                            Pro Transceiver target types.
4485  *
4486  * See 'Key to Integer Attribute "Permissions"' at the top of this
4487  * file for a description of what these permission bits mean.
4488  */
4489 
4490 #define ATTRIBUTE_TYPE_UNKNOWN           0
4491 #define ATTRIBUTE_TYPE_INTEGER           1
4492 #define ATTRIBUTE_TYPE_BITMASK           2
4493 #define ATTRIBUTE_TYPE_BOOL              3
4494 #define ATTRIBUTE_TYPE_RANGE             4
4495 #define ATTRIBUTE_TYPE_INT_BITS          5
4496 #define ATTRIBUTE_TYPE_64BIT_INTEGER     6
4497 #define ATTRIBUTE_TYPE_STRING            7
4498 #define ATTRIBUTE_TYPE_BINARY_DATA       8
4499 #define ATTRIBUTE_TYPE_STRING_OPERATION  9
4500 
4501 #define ATTRIBUTE_TYPE_READ       0x001
4502 #define ATTRIBUTE_TYPE_WRITE      0x002
4503 #define ATTRIBUTE_TYPE_DISPLAY    0x004
4504 #define ATTRIBUTE_TYPE_GPU        0x008
4505 #define ATTRIBUTE_TYPE_FRAMELOCK  0x010
4506 #define ATTRIBUTE_TYPE_X_SCREEN   0x020
4507 #define ATTRIBUTE_TYPE_XINERAMA   0x040
4508 #define ATTRIBUTE_TYPE_VCSC       0x080
4509 #define ATTRIBUTE_TYPE_GVI        0x100
4510 #define ATTRIBUTE_TYPE_COOLER     0x200
4511 #define ATTRIBUTE_TYPE_THERMAL_SENSOR 0x400
4512 #define ATTRIBUTE_TYPE_3D_VISION_PRO_TRANSCEIVER 0x800
4513 
4514 #define ATTRIBUTE_TYPE_ALL_TARGETS                \
4515     ((ATTRIBUTE_TYPE_DISPLAY)                   | \
4516      (ATTRIBUTE_TYPE_GPU)                       | \
4517      (ATTRIBUTE_TYPE_FRAMELOCK)                 | \
4518      (ATTRIBUTE_TYPE_X_SCREEN)                  | \
4519      (ATTRIBUTE_TYPE_VCSC)                      | \
4520      (ATTRIBUTE_TYPE_GVI)                       | \
4521      (ATTRIBUTE_TYPE_COOLER)                    | \
4522      (ATTRIBUTE_TYPE_THERMAL_SENSOR)            | \
4523      (ATTRIBUTE_TYPE_3D_VISION_PRO_TRANSCEIVER))
4524 
4525 typedef struct _NVCTRLAttributeValidValues {
4526     int type;
4527     union {
4528         struct {
4529             int64_t min;
4530             int64_t max;
4531         } range;
4532         struct {
4533             unsigned int ints;
4534         } bits;
4535     } u;
4536     unsigned int permissions;
4537 } NVCTRLAttributeValidValuesRec;
4538 
4539 typedef struct _NVCTRLAttributePermissions {
4540     int type;
4541     unsigned int permissions;
4542 } NVCTRLAttributePermissionsRec;
4543 
4544 
4545 /**************************************************************************/
4546 
4547 /*
4548  * NV-CONTROL X event notification.
4549  *
4550  * To receive X event notifications dealing with NV-CONTROL, you should
4551  * call XNVCtrlSelectNotify() with one of the following set as the type
4552  * of event to receive (see NVCtrlLib.h for more information):
4553  */
4554 
4555 #define ATTRIBUTE_CHANGED_EVENT                     0
4556 #define TARGET_ATTRIBUTE_CHANGED_EVENT              1
4557 #define TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT 2
4558 #define TARGET_STRING_ATTRIBUTE_CHANGED_EVENT       3
4559 #define TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT       4
4560 
4561 
4562 #endif /* __NVCTRL_H */
4563