diff options
Diffstat (limited to 'gfx/angle/src/third_party/libXNVCtrl')
-rwxr-xr-x | gfx/angle/src/third_party/libXNVCtrl/BUILD.gn | 28 | ||||
-rwxr-xr-x | gfx/angle/src/third_party/libXNVCtrl/LICENSE | 22 | ||||
-rwxr-xr-x | gfx/angle/src/third_party/libXNVCtrl/NVCtrl.c | 1240 | ||||
-rwxr-xr-x | gfx/angle/src/third_party/libXNVCtrl/NVCtrl.h | 4365 | ||||
-rwxr-xr-x | gfx/angle/src/third_party/libXNVCtrl/NVCtrlLib.h | 707 | ||||
-rwxr-xr-x | gfx/angle/src/third_party/libXNVCtrl/README.angle | 14 | ||||
-rwxr-xr-x | gfx/angle/src/third_party/libXNVCtrl/libXNVCtrl.gyp | 18 | ||||
-rwxr-xr-x | gfx/angle/src/third_party/libXNVCtrl/nv_control.h | 652 |
8 files changed, 7046 insertions, 0 deletions
diff --git a/gfx/angle/src/third_party/libXNVCtrl/BUILD.gn b/gfx/angle/src/third_party/libXNVCtrl/BUILD.gn new file mode 100755 index 000000000..b58a5422b --- /dev/null +++ b/gfx/angle/src/third_party/libXNVCtrl/BUILD.gn @@ -0,0 +1,28 @@ +# Copyright (c) 2016 The ANGLE Project Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# This warning disable must be appended to the command line after the general +# warnings setup, so must be in a config. +config("libXNVCtrl_config") { + # This will build under most configurations with this warning enabled, but + # some older system headers are missing a "const" on the third parameter of + # XextAddDisplay which will cause a failure. + cflags = [ + "-Wno-incompatible-pointer-types-discards-qualifiers", + ] +} + +source_set("libXNVCtrl") { + sources = [ + "NVCtrl.c", + "NVCtrl.h", + "NVCtrlLib.h", + "nv_control.h", + ] + + configs += [ + ":libXNVCtrl_config", + "//build/config/linux:x11", + ] +} diff --git a/gfx/angle/src/third_party/libXNVCtrl/LICENSE b/gfx/angle/src/third_party/libXNVCtrl/LICENSE new file mode 100755 index 000000000..74324c0c6 --- /dev/null +++ b/gfx/angle/src/third_party/libXNVCtrl/LICENSE @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2008 NVIDIA, Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */
\ No newline at end of file diff --git a/gfx/angle/src/third_party/libXNVCtrl/NVCtrl.c b/gfx/angle/src/third_party/libXNVCtrl/NVCtrl.c new file mode 100755 index 000000000..e98437394 --- /dev/null +++ b/gfx/angle/src/third_party/libXNVCtrl/NVCtrl.c @@ -0,0 +1,1240 @@ +/* + * Copyright (c) 2008 NVIDIA, Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * Make sure that XTHREADS is defined, so that the + * LockDisplay/UnlockDisplay macros are expanded properly and the + * libXNVCtrl library properly protects the Display connection. + */ + +#if !defined(XTHREADS) +#define XTHREADS +#endif /* XTHREADS */ + +#define NEED_EVENTS +#define NEED_REPLIES +#include <stdint.h> +#include <stdlib.h> +#include <X11/Xlibint.h> +#include <X11/Xutil.h> +#include <X11/extensions/Xext.h> +#include <X11/extensions/extutil.h> +#include "NVCtrlLib.h" +#include "nv_control.h" + +#define NVCTRL_EXT_EXISTS 1 +#define NVCTRL_EXT_NEED_TARGET_SWAP 2 +#define NVCTRL_EXT_64_BIT_ATTRIBUTES 4 +#define NVCTRL_EXT_NEED_CHECK (1 << (sizeof(XPointer) - 1)) + +static XExtensionInfo _nvctrl_ext_info_data; +static XExtensionInfo *nvctrl_ext_info = &_nvctrl_ext_info_data; +static const char *nvctrl_extension_name = NV_CONTROL_NAME; + +#define XNVCTRLCheckExtension(dpy,i,val) \ + XextCheckExtension (dpy, i, nvctrl_extension_name, val) +#define XNVCTRLSimpleCheckExtension(dpy,i) \ + XextSimpleCheckExtension (dpy, i, nvctrl_extension_name) + +static int close_display(); +static uintptr_t version_flags(Display *dpy, XExtDisplayInfo *info); +static Bool wire_to_event(); +static /* const */ XExtensionHooks nvctrl_extension_hooks = { + NULL, /* create_gc */ + NULL, /* copy_gc */ + NULL, /* flush_gc */ + NULL, /* free_gc */ + NULL, /* create_font */ + NULL, /* free_font */ + close_display, /* close_display */ + wire_to_event, /* wire_to_event */ + NULL, /* event_to_wire */ + NULL, /* error */ + NULL, /* error_string */ +}; + +static XEXT_GENERATE_FIND_DISPLAY (find_display, nvctrl_ext_info, + nvctrl_extension_name, + &nvctrl_extension_hooks, + NV_CONTROL_EVENTS, + (XPointer)NVCTRL_EXT_NEED_CHECK) + +static XEXT_GENERATE_CLOSE_DISPLAY (close_display, nvctrl_ext_info) + +/* + * NV-CONTROL versions 1.8 and 1.9 pack the target_type and target_id + * fields in reversed order. In order to talk to one of these servers, + * we need to swap these fields. + */ + +static void XNVCTRLCheckTargetData(Display *dpy, XExtDisplayInfo *info, + int *target_type, int *target_id) +{ + uintptr_t flags = version_flags(dpy, info); + + /* We need to swap the target_type and target_id */ + if (flags & NVCTRL_EXT_NEED_TARGET_SWAP) { + int tmp; + tmp = *target_type; + *target_type = *target_id; + *target_id = tmp; + } +} + + +Bool XNVCTRLQueryExtension ( + Display *dpy, + int *event_basep, + int *error_basep +){ + XExtDisplayInfo *info = find_display (dpy); + + if (XextHasExtension(info)) { + if (event_basep) *event_basep = info->codes->first_event; + if (error_basep) *error_basep = info->codes->first_error; + return True; + } else { + return False; + } +} + +/* + * Retrieve any cached flags that depend on the version of the NV-CONTROL + * extension. + */ + +static uintptr_t version_flags(Display *dpy, XExtDisplayInfo *info) +{ + uintptr_t data = (uintptr_t)info->data; + + /* If necessary, determine the NV-CONTROL version */ + if (data & NVCTRL_EXT_NEED_CHECK) { + int major, minor; + data = 0; + if (XNVCTRLQueryVersion(dpy, &major, &minor)) { + data |= NVCTRL_EXT_EXISTS; + if (major == 1 && (minor == 8 || minor == 9)) { + data |= NVCTRL_EXT_NEED_TARGET_SWAP; + } + if ((major > 1) || ((major == 1) && (minor > 20))) { + data |= NVCTRL_EXT_64_BIT_ATTRIBUTES; + } + } + + info->data = (XPointer)data; + } + + return data; +} + +Bool XNVCTRLQueryVersion ( + Display *dpy, + int *major, + int *minor +){ + XExtDisplayInfo *info = find_display (dpy); + xnvCtrlQueryExtensionReply rep; + xnvCtrlQueryExtensionReq *req; + + if(!XextHasExtension(info)) + return False; + + XNVCTRLCheckExtension (dpy, info, False); + + LockDisplay (dpy); + GetReq (nvCtrlQueryExtension, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlQueryExtension; + if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; + } + if (major) *major = rep.major; + if (minor) *minor = rep.minor; + UnlockDisplay (dpy); + SyncHandle (); + return True; +} + + +Bool XNVCTRLIsNvScreen ( + Display *dpy, + int screen +){ + XExtDisplayInfo *info = find_display (dpy); + xnvCtrlIsNvReply rep; + xnvCtrlIsNvReq *req; + Bool isnv; + + if(!XextHasExtension(info)) + return False; + + XNVCTRLCheckExtension (dpy, info, False); + + LockDisplay (dpy); + GetReq (nvCtrlIsNv, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlIsNv; + req->screen = screen; + if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; + } + isnv = rep.isnv; + UnlockDisplay (dpy); + SyncHandle (); + return isnv; +} + + +Bool XNVCTRLQueryTargetCount ( + Display *dpy, + int target_type, + int *value +){ + XExtDisplayInfo *info = find_display (dpy); + xnvCtrlQueryTargetCountReply rep; + xnvCtrlQueryTargetCountReq *req; + + if(!XextHasExtension(info)) + return False; + + XNVCTRLCheckExtension (dpy, info, False); + + LockDisplay (dpy); + GetReq (nvCtrlQueryTargetCount, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlQueryTargetCount; + req->target_type = target_type; + if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; + } + if (value) *value = rep.count; + UnlockDisplay (dpy); + SyncHandle (); + return True; +} + + +void XNVCTRLSetTargetAttribute ( + Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + int value +){ + XExtDisplayInfo *info = find_display (dpy); + xnvCtrlSetAttributeReq *req; + + XNVCTRLSimpleCheckExtension (dpy, info); + XNVCTRLCheckTargetData(dpy, info, &target_type, &target_id); + + LockDisplay (dpy); + GetReq (nvCtrlSetAttribute, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlSetAttribute; + req->target_type = target_type; + req->target_id = target_id; + req->display_mask = display_mask; + req->attribute = attribute; + req->value = value; + UnlockDisplay (dpy); + SyncHandle (); +} + +void XNVCTRLSetAttribute ( + Display *dpy, + int screen, + unsigned int display_mask, + unsigned int attribute, + int value +){ + XNVCTRLSetTargetAttribute (dpy, NV_CTRL_TARGET_TYPE_X_SCREEN, screen, + display_mask, attribute, value); +} + + +Bool XNVCTRLSetTargetAttributeAndGetStatus ( + Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + int value +){ + XExtDisplayInfo *info = find_display (dpy); + xnvCtrlSetAttributeAndGetStatusReq *req; + xnvCtrlSetAttributeAndGetStatusReply rep; + Bool success; + + if(!XextHasExtension(info)) + return False; + + XNVCTRLCheckExtension (dpy, info, False); + + LockDisplay (dpy); + GetReq (nvCtrlSetAttributeAndGetStatus, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlSetAttributeAndGetStatus; + req->target_type = target_type; + req->target_id = target_id; + req->display_mask = display_mask; + req->attribute = attribute; + req->value = value; + if (!_XReply (dpy, (xReply *) &rep, 0, False)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; + } + UnlockDisplay (dpy); + SyncHandle (); + + success = rep.flags; + return success; +} + +Bool XNVCTRLSetAttributeAndGetStatus ( + Display *dpy, + int screen, + unsigned int display_mask, + unsigned int attribute, + int value +){ + return XNVCTRLSetTargetAttributeAndGetStatus(dpy, + NV_CTRL_TARGET_TYPE_X_SCREEN, + screen, display_mask, + attribute, value); +} + + +Bool XNVCTRLQueryTargetAttribute ( + Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + int *value +){ + XExtDisplayInfo *info = find_display (dpy); + xnvCtrlQueryAttributeReply rep; + xnvCtrlQueryAttributeReq *req; + Bool exists; + + if(!XextHasExtension(info)) + return False; + + XNVCTRLCheckExtension (dpy, info, False); + XNVCTRLCheckTargetData(dpy, info, &target_type, &target_id); + + LockDisplay (dpy); + GetReq (nvCtrlQueryAttribute, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlQueryAttribute; + req->target_type = target_type; + req->target_id = target_id; + req->display_mask = display_mask; + req->attribute = attribute; + if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; + } + exists = rep.flags; + if (exists && value) *value = rep.value; + UnlockDisplay (dpy); + SyncHandle (); + return exists; +} + +Bool XNVCTRLQueryAttribute ( + Display *dpy, + int screen, + unsigned int display_mask, + unsigned int attribute, + int *value +){ + return XNVCTRLQueryTargetAttribute(dpy, NV_CTRL_TARGET_TYPE_X_SCREEN, + screen, display_mask, attribute, value); +} + + +Bool XNVCTRLQueryTargetAttribute64 ( + Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + int64_t *value +){ + XExtDisplayInfo *info = find_display(dpy); + xnvCtrlQueryAttribute64Reply rep; + xnvCtrlQueryAttributeReq *req; + Bool exists; + + if (!XextHasExtension(info)) + return False; + + XNVCTRLCheckExtension(dpy, info, False); + XNVCTRLCheckTargetData(dpy, info, &target_type, &target_id); + + LockDisplay(dpy); + GetReq(nvCtrlQueryAttribute, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlQueryAttribute64; + req->target_type = target_type; + req->target_id = target_id; + req->display_mask = display_mask; + req->attribute = attribute; + if (!_XReply(dpy, (xReply *)&rep, 0, xTrue)) { + UnlockDisplay(dpy); + SyncHandle(); + return False; + } + exists = rep.flags; + if (exists && value) *value = rep.value_64; + UnlockDisplay(dpy); + SyncHandle(); + return exists; +} + + +Bool XNVCTRLQueryTargetStringAttribute ( + Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + char **ptr +){ + XExtDisplayInfo *info = find_display (dpy); + xnvCtrlQueryStringAttributeReply rep; + xnvCtrlQueryStringAttributeReq *req; + Bool exists; + int length, numbytes, slop; + + if (!ptr) return False; + + if(!XextHasExtension(info)) + return False; + + XNVCTRLCheckExtension (dpy, info, False); + XNVCTRLCheckTargetData(dpy, info, &target_type, &target_id); + + LockDisplay (dpy); + GetReq (nvCtrlQueryStringAttribute, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlQueryStringAttribute; + req->target_type = target_type; + req->target_id = target_id; + req->display_mask = display_mask; + req->attribute = attribute; + if (!_XReply (dpy, (xReply *) &rep, 0, False)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; + } + length = rep.length; + numbytes = rep.n; + slop = numbytes & 3; + exists = rep.flags; + if (exists) { + *ptr = (char *) Xmalloc(numbytes); + } + if (!exists || !*ptr) { + _XEatData(dpy, length); + UnlockDisplay (dpy); + SyncHandle (); + return False; + } else { + _XRead(dpy, (char *) *ptr, numbytes); + if (slop) _XEatData(dpy, 4-slop); + } + UnlockDisplay (dpy); + SyncHandle (); + return exists; +} + +Bool XNVCTRLQueryStringAttribute ( + Display *dpy, + int screen, + unsigned int display_mask, + unsigned int attribute, + char **ptr +){ + return XNVCTRLQueryTargetStringAttribute(dpy, NV_CTRL_TARGET_TYPE_X_SCREEN, + screen, display_mask, + attribute, ptr); +} + + +Bool XNVCTRLSetTargetStringAttribute ( + Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + char *ptr +){ + XExtDisplayInfo *info = find_display (dpy); + xnvCtrlSetStringAttributeReq *req; + xnvCtrlSetStringAttributeReply rep; + int size; + Bool success; + + if(!XextHasExtension(info)) + return False; + + XNVCTRLCheckExtension (dpy, info, False); + + size = strlen(ptr)+1; + + LockDisplay (dpy); + GetReq (nvCtrlSetStringAttribute, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlSetStringAttribute; + req->target_type = target_type; + req->target_id = target_id; + req->display_mask = display_mask; + req->attribute = attribute; + req->length += ((size + 3) & ~3) >> 2; + req->num_bytes = size; + Data(dpy, ptr, size); + + if (!_XReply (dpy, (xReply *) &rep, 0, False)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; + } + UnlockDisplay (dpy); + SyncHandle (); + + success = rep.flags; + return success; +} + +Bool XNVCTRLSetStringAttribute ( + Display *dpy, + int screen, + unsigned int display_mask, + unsigned int attribute, + char *ptr +){ + return XNVCTRLSetTargetStringAttribute(dpy, NV_CTRL_TARGET_TYPE_X_SCREEN, + screen, display_mask, + attribute, ptr); +} + + +static Bool XNVCTRLQueryValidTargetAttributeValues32 ( + Display *dpy, + XExtDisplayInfo *info, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + NVCTRLAttributeValidValuesRec *values +){ + xnvCtrlQueryValidAttributeValuesReply rep; + xnvCtrlQueryValidAttributeValuesReq *req; + Bool exists; + + LockDisplay (dpy); + GetReq (nvCtrlQueryValidAttributeValues, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlQueryValidAttributeValues; + req->target_type = target_type; + req->target_id = target_id; + req->display_mask = display_mask; + req->attribute = attribute; + if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; + } + exists = rep.flags; + if (exists) { + values->type = rep.attr_type; + if (rep.attr_type == ATTRIBUTE_TYPE_RANGE) { + values->u.range.min = rep.min; + values->u.range.max = rep.max; + } + if (rep.attr_type == ATTRIBUTE_TYPE_INT_BITS) { + values->u.bits.ints = rep.bits; + } + values->permissions = rep.perms; + } + UnlockDisplay (dpy); + SyncHandle (); + return exists; +} + + +Bool XNVCTRLQueryValidTargetStringAttributeValues ( + Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + NVCTRLAttributeValidValuesRec *values +){ + XExtDisplayInfo *info = find_display(dpy); + Bool exists; + xnvCtrlQueryValidAttributeValuesReply rep; + xnvCtrlQueryValidAttributeValuesReq *req; + + if (!values) return False; + + if (!XextHasExtension(info)) + return False; + + XNVCTRLCheckExtension(dpy, info, False); + + LockDisplay(dpy); + GetReq (nvCtrlQueryValidAttributeValues, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlQueryValidStringAttributeValues; + req->target_type = target_type; + req->target_id = target_id; + req->display_mask = display_mask; + req->attribute = attribute; + if (!_XReply(dpy, (xReply *)&rep, 0, xTrue)) { + UnlockDisplay(dpy); + SyncHandle(); + return False; + } + exists = rep.flags; + if (exists) { + values->type = rep.attr_type; + values->permissions = rep.perms; + } + UnlockDisplay(dpy); + SyncHandle(); + return exists; +} + + +static Bool XNVCTRLQueryValidTargetAttributeValues64 ( + Display *dpy, + XExtDisplayInfo *info, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + NVCTRLAttributeValidValuesRec *values +){ + xnvCtrlQueryValidAttributeValues64Reply rep; + xnvCtrlQueryValidAttributeValuesReq *req; + Bool exists; + + LockDisplay(dpy); + GetReq(nvCtrlQueryValidAttributeValues, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlQueryValidAttributeValues64; + req->target_type = target_type; + req->target_id = target_id; + req->display_mask = display_mask; + req->attribute = attribute; + if (!_XReply(dpy, (xReply *)&rep, + sz_xnvCtrlQueryValidAttributeValues64Reply_extra, + xTrue)) { + UnlockDisplay(dpy); + SyncHandle(); + return False; + } + exists = rep.flags; + if (exists) { + values->type = rep.attr_type; + if (rep.attr_type == ATTRIBUTE_TYPE_RANGE) { + values->u.range.min = rep.min_64; + values->u.range.max = rep.max_64; + } + if (rep.attr_type == ATTRIBUTE_TYPE_INT_BITS) { + values->u.bits.ints = rep.bits_64; + } + values->permissions = rep.perms; + } + UnlockDisplay(dpy); + SyncHandle(); + return exists; +} + +Bool XNVCTRLQueryValidTargetAttributeValues ( + Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + NVCTRLAttributeValidValuesRec *values +){ + XExtDisplayInfo *info = find_display(dpy); + Bool exists; + uintptr_t flags; + + if (!values) return False; + + if (!XextHasExtension(info)) + return False; + + XNVCTRLCheckExtension(dpy, info, False); + XNVCTRLCheckTargetData(dpy, info, &target_type, &target_id); + + flags = version_flags(dpy,info); + + if (!(flags & NVCTRL_EXT_EXISTS)) + return False; + + if (flags & NVCTRL_EXT_64_BIT_ATTRIBUTES) { + exists = XNVCTRLQueryValidTargetAttributeValues64(dpy, info, + target_type, + target_id, + display_mask, + attribute, + values); + } else { + exists = XNVCTRLQueryValidTargetAttributeValues32(dpy, info, + target_type, + target_id, + display_mask, + attribute, + values); + } + return exists; +} + + +Bool XNVCTRLQueryValidAttributeValues ( + Display *dpy, + int screen, + unsigned int display_mask, + unsigned int attribute, + NVCTRLAttributeValidValuesRec *values +){ + return XNVCTRLQueryValidTargetAttributeValues(dpy, + NV_CTRL_TARGET_TYPE_X_SCREEN, + screen, display_mask, + attribute, values); +} + + +static Bool QueryAttributePermissionsInternal ( + Display *dpy, + unsigned int attribute, + NVCTRLAttributePermissionsRec *permissions, + unsigned int reqType +){ + XExtDisplayInfo *info = find_display (dpy); + xnvCtrlQueryAttributePermissionsReply rep; + xnvCtrlQueryAttributePermissionsReq *req; + Bool exists; + + if(!XextHasExtension(info)) + return False; + + XNVCTRLCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(nvCtrlQueryAttributePermissions, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = reqType; + req->attribute = attribute; + if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { + UnlockDisplay (dpy); + SyncHandle(); + return False; + } + exists = rep.flags; + if (exists && permissions) { + permissions->type = rep.attr_type; + permissions->permissions = rep.perms; + } + UnlockDisplay(dpy); + SyncHandle(); + return exists; +} + + +Bool XNVCTRLQueryAttributePermissions ( + Display *dpy, + unsigned int attribute, + NVCTRLAttributePermissionsRec *permissions +){ + return QueryAttributePermissionsInternal(dpy, + attribute, + permissions, + X_nvCtrlQueryAttributePermissions); +} + + +Bool XNVCTRLQueryStringAttributePermissions ( + Display *dpy, + unsigned int attribute, + NVCTRLAttributePermissionsRec *permissions +){ + return QueryAttributePermissionsInternal(dpy, + attribute, + permissions, + X_nvCtrlQueryStringAttributePermissions); +} + + +Bool XNVCTRLQueryBinaryDataAttributePermissions ( + Display *dpy, + unsigned int attribute, + NVCTRLAttributePermissionsRec *permissions +){ + return QueryAttributePermissionsInternal(dpy, + attribute, + permissions, + X_nvCtrlQueryBinaryDataAttributePermissions); +} + + +Bool XNVCTRLQueryStringOperationAttributePermissions ( + Display *dpy, + unsigned int attribute, + NVCTRLAttributePermissionsRec *permissions +){ + return QueryAttributePermissionsInternal(dpy, + attribute, + permissions, + X_nvCtrlQueryStringOperationAttributePermissions); +} + + +void XNVCTRLSetGvoColorConversion ( + Display *dpy, + int screen, + float colorMatrix[3][3], + float colorOffset[3], + float colorScale[3] +){ + XExtDisplayInfo *info = find_display (dpy); + xnvCtrlSetGvoColorConversionReq *req; + + XNVCTRLSimpleCheckExtension (dpy, info); + + LockDisplay (dpy); + GetReq (nvCtrlSetGvoColorConversion, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlSetGvoColorConversion; + req->screen = screen; + + req->cscMatrix_y_r = colorMatrix[0][0]; + req->cscMatrix_y_g = colorMatrix[0][1]; + req->cscMatrix_y_b = colorMatrix[0][2]; + + req->cscMatrix_cr_r = colorMatrix[1][0]; + req->cscMatrix_cr_g = colorMatrix[1][1]; + req->cscMatrix_cr_b = colorMatrix[1][2]; + + req->cscMatrix_cb_r = colorMatrix[2][0]; + req->cscMatrix_cb_g = colorMatrix[2][1]; + req->cscMatrix_cb_b = colorMatrix[2][2]; + + req->cscOffset_y = colorOffset[0]; + req->cscOffset_cr = colorOffset[1]; + req->cscOffset_cb = colorOffset[2]; + + req->cscScale_y = colorScale[0]; + req->cscScale_cr = colorScale[1]; + req->cscScale_cb = colorScale[2]; + + UnlockDisplay (dpy); + SyncHandle (); +} + + +Bool XNVCTRLQueryGvoColorConversion ( + Display *dpy, + int screen, + float colorMatrix[3][3], + float colorOffset[3], + float colorScale[3] +){ + XExtDisplayInfo *info = find_display (dpy); + xnvCtrlQueryGvoColorConversionReply rep; + xnvCtrlQueryGvoColorConversionReq *req; + + if(!XextHasExtension(info)) + return False; + + XNVCTRLCheckExtension (dpy, info, False); + + LockDisplay (dpy); + + GetReq (nvCtrlQueryGvoColorConversion, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlQueryGvoColorConversion; + req->screen = screen; + + if (!_XReply(dpy, (xReply *) &rep, 0, xFalse)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; + } + + _XRead(dpy, (char *)(colorMatrix), 36); + _XRead(dpy, (char *)(colorOffset), 12); + _XRead(dpy, (char *)(colorScale), 12); + + UnlockDisplay (dpy); + SyncHandle (); + + return True; +} + + +Bool XNVCtrlSelectTargetNotify ( + Display *dpy, + int target_type, + int target_id, + int notify_type, + Bool onoff +){ + XExtDisplayInfo *info = find_display (dpy); + xnvCtrlSelectTargetNotifyReq *req; + + if(!XextHasExtension (info)) + return False; + + XNVCTRLCheckExtension (dpy, info, False); + + LockDisplay (dpy); + GetReq (nvCtrlSelectTargetNotify, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlSelectTargetNotify; + req->target_type = target_type; + req->target_id = target_id; + req->notifyType = notify_type; + req->onoff = onoff; + UnlockDisplay (dpy); + SyncHandle (); + + return True; +} + + +Bool XNVCtrlSelectNotify ( + Display *dpy, + int screen, + int type, + Bool onoff +){ + XExtDisplayInfo *info = find_display (dpy); + xnvCtrlSelectNotifyReq *req; + + if(!XextHasExtension (info)) + return False; + + XNVCTRLCheckExtension (dpy, info, False); + + LockDisplay (dpy); + GetReq (nvCtrlSelectNotify, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlSelectNotify; + req->screen = screen; + req->notifyType = type; + req->onoff = onoff; + UnlockDisplay (dpy); + SyncHandle (); + + return True; +} + +Bool XNVCTRLQueryTargetBinaryData ( + Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + unsigned char **ptr, + int *len +){ + XExtDisplayInfo *info = find_display (dpy); + xnvCtrlQueryBinaryDataReply rep; + xnvCtrlQueryBinaryDataReq *req; + Bool exists; + int length, numbytes, slop; + + if (!ptr) return False; + + if(!XextHasExtension(info)) + return False; + + XNVCTRLCheckExtension (dpy, info, False); + XNVCTRLCheckTargetData(dpy, info, &target_type, &target_id); + + LockDisplay (dpy); + GetReq (nvCtrlQueryBinaryData, req); + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlQueryBinaryData; + req->target_type = target_type; + req->target_id = target_id; + req->display_mask = display_mask; + req->attribute = attribute; + if (!_XReply (dpy, (xReply *) &rep, 0, False)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; + } + length = rep.length; + numbytes = rep.n; + slop = numbytes & 3; + exists = rep.flags; + if (exists) { + *ptr = (unsigned char *) Xmalloc(numbytes); + } + if (!exists || !*ptr) { + _XEatData(dpy, length); + UnlockDisplay (dpy); + SyncHandle (); + return False; + } else { + _XRead(dpy, (char *) *ptr, numbytes); + if (slop) _XEatData(dpy, 4-slop); + } + if (len) *len = numbytes; + UnlockDisplay (dpy); + SyncHandle (); + return exists; +} + +Bool XNVCTRLQueryBinaryData ( + Display *dpy, + int screen, + unsigned int display_mask, + unsigned int attribute, + unsigned char **ptr, + int *len +){ + return XNVCTRLQueryTargetBinaryData(dpy, NV_CTRL_TARGET_TYPE_X_SCREEN, + screen, display_mask, + attribute, ptr, len); +} + +Bool XNVCTRLStringOperation ( + Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + char *pIn, + char **ppOut +) { + XExtDisplayInfo *info = find_display(dpy); + xnvCtrlStringOperationReq *req; + xnvCtrlStringOperationReply rep; + Bool ret; + int inSize, outSize, length, slop; + + if (!XextHasExtension(info)) + return False; + + if (!ppOut) + return False; + + *ppOut = NULL; + + XNVCTRLCheckExtension(dpy, info, False); + XNVCTRLCheckTargetData(dpy, info, &target_type, &target_id); + + if (pIn) { + inSize = strlen(pIn) + 1; + } else { + inSize = 0; + } + + LockDisplay(dpy); + GetReq(nvCtrlStringOperation, req); + + req->reqType = info->codes->major_opcode; + req->nvReqType = X_nvCtrlStringOperation; + req->target_type = target_type; + req->target_id = target_id; + req->display_mask = display_mask; + req->attribute = attribute; + + req->length += ((inSize + 3) & ~3) >> 2; + req->num_bytes = inSize; + + if (pIn) { + Data(dpy, pIn, inSize); + } + + if (!_XReply (dpy, (xReply *) &rep, 0, False)) { + UnlockDisplay(dpy); + SyncHandle(); + return False; + } + + length = rep.length; + outSize = rep.num_bytes; + slop = outSize & 3; + + if (outSize) *ppOut = (char *) Xmalloc(outSize); + + if (!*ppOut) { + _XEatData(dpy, length); + } else { + _XRead(dpy, (char *) *ppOut, outSize); + if (slop) _XEatData(dpy, 4-slop); + } + + ret = rep.ret; + + UnlockDisplay(dpy); + SyncHandle(); + + return ret; +} + + +static Bool wire_to_event (Display *dpy, XEvent *host, xEvent *wire) +{ + XExtDisplayInfo *info = find_display (dpy); + XNVCtrlEvent *re; + xnvctrlEvent *event; + XNVCtrlEventTarget *reTarget; + xnvctrlEventTarget *eventTarget; + XNVCtrlEventTargetAvailability *reTargetAvailability; + XNVCtrlStringEventTarget *reTargetString; + XNVCtrlBinaryEventTarget *reTargetBinary; + + XNVCTRLCheckExtension (dpy, info, False); + + switch ((wire->u.u.type & 0x7F) - info->codes->first_event) { + case ATTRIBUTE_CHANGED_EVENT: + re = (XNVCtrlEvent *) host; + event = (xnvctrlEvent *) wire; + re->attribute_changed.type = event->u.u.type & 0x7F; + re->attribute_changed.serial = + _XSetLastRequestRead(dpy, (xGenericReply*) event); + re->attribute_changed.send_event = ((event->u.u.type & 0x80) != 0); + re->attribute_changed.display = dpy; + re->attribute_changed.time = event->u.attribute_changed.time; + re->attribute_changed.screen = event->u.attribute_changed.screen; + re->attribute_changed.display_mask = + event->u.attribute_changed.display_mask; + re->attribute_changed.attribute = event->u.attribute_changed.attribute; + re->attribute_changed.value = event->u.attribute_changed.value; + break; + case TARGET_ATTRIBUTE_CHANGED_EVENT: + reTarget = (XNVCtrlEventTarget *) host; + eventTarget = (xnvctrlEventTarget *) wire; + reTarget->attribute_changed.type = eventTarget->u.u.type & 0x7F; + reTarget->attribute_changed.serial = + _XSetLastRequestRead(dpy, (xGenericReply*) eventTarget); + reTarget->attribute_changed.send_event = + ((eventTarget->u.u.type & 0x80) != 0); + reTarget->attribute_changed.display = dpy; + reTarget->attribute_changed.time = + eventTarget->u.attribute_changed.time; + reTarget->attribute_changed.target_type = + eventTarget->u.attribute_changed.target_type; + reTarget->attribute_changed.target_id = + eventTarget->u.attribute_changed.target_id; + reTarget->attribute_changed.display_mask = + eventTarget->u.attribute_changed.display_mask; + reTarget->attribute_changed.attribute = + eventTarget->u.attribute_changed.attribute; + reTarget->attribute_changed.value = + eventTarget->u.attribute_changed.value; + break; + case TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT: + reTargetAvailability = (XNVCtrlEventTargetAvailability *) host; + eventTarget = (xnvctrlEventTarget *) wire; + reTargetAvailability->attribute_changed.type = + eventTarget->u.u.type & 0x7F; + reTargetAvailability->attribute_changed.serial = + _XSetLastRequestRead(dpy, (xGenericReply*) eventTarget); + reTargetAvailability->attribute_changed.send_event = + ((eventTarget->u.u.type & 0x80) != 0); + reTargetAvailability->attribute_changed.display = dpy; + reTargetAvailability->attribute_changed.time = + eventTarget->u.availability_changed.time; + reTargetAvailability->attribute_changed.target_type = + eventTarget->u.availability_changed.target_type; + reTargetAvailability->attribute_changed.target_id = + eventTarget->u.availability_changed.target_id; + reTargetAvailability->attribute_changed.display_mask = + eventTarget->u.availability_changed.display_mask; + reTargetAvailability->attribute_changed.attribute = + eventTarget->u.availability_changed.attribute; + reTargetAvailability->attribute_changed.availability = + eventTarget->u.availability_changed.availability; + reTargetAvailability->attribute_changed.value = + eventTarget->u.availability_changed.value; + break; + case TARGET_STRING_ATTRIBUTE_CHANGED_EVENT: + reTargetString = (XNVCtrlStringEventTarget *) host; + eventTarget = (xnvctrlEventTarget *) wire; + reTargetString->attribute_changed.type = eventTarget->u.u.type & 0x7F; + reTargetString->attribute_changed.serial = + _XSetLastRequestRead(dpy, (xGenericReply*) eventTarget); + reTargetString->attribute_changed.send_event = + ((eventTarget->u.u.type & 0x80) != 0); + reTargetString->attribute_changed.display = dpy; + reTargetString->attribute_changed.time = + eventTarget->u.attribute_changed.time; + reTargetString->attribute_changed.target_type = + eventTarget->u.attribute_changed.target_type; + reTargetString->attribute_changed.target_id = + eventTarget->u.attribute_changed.target_id; + reTargetString->attribute_changed.display_mask = + eventTarget->u.attribute_changed.display_mask; + reTargetString->attribute_changed.attribute = + eventTarget->u.attribute_changed.attribute; + break; + case TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT: + reTargetBinary = (XNVCtrlBinaryEventTarget *) host; + eventTarget = (xnvctrlEventTarget *) wire; + reTargetBinary->attribute_changed.type = eventTarget->u.u.type & 0x7F; + reTargetBinary->attribute_changed.serial = + _XSetLastRequestRead(dpy, (xGenericReply*) eventTarget); + reTargetBinary->attribute_changed.send_event = + ((eventTarget->u.u.type & 0x80) != 0); + reTargetBinary->attribute_changed.display = dpy; + reTargetBinary->attribute_changed.time = + eventTarget->u.attribute_changed.time; + reTargetBinary->attribute_changed.target_type = + eventTarget->u.attribute_changed.target_type; + reTargetBinary->attribute_changed.target_id = + eventTarget->u.attribute_changed.target_id; + reTargetBinary->attribute_changed.display_mask = + eventTarget->u.attribute_changed.display_mask; + reTargetBinary->attribute_changed.attribute = + eventTarget->u.attribute_changed.attribute; + break; + + default: + return False; + } + + return True; +} + diff --git a/gfx/angle/src/third_party/libXNVCtrl/NVCtrl.h b/gfx/angle/src/third_party/libXNVCtrl/NVCtrl.h new file mode 100755 index 000000000..7bd7ab7a3 --- /dev/null +++ b/gfx/angle/src/third_party/libXNVCtrl/NVCtrl.h @@ -0,0 +1,4365 @@ +/* + * Copyright (c) 2010 NVIDIA, Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef __NVCTRL_H +#define __NVCTRL_H + +#include <stdint.h> + +/**************************************************************************/ + +/* + * Attribute Targets + * + * Targets define attribute groups. For example, some attributes are only + * valid to set on a GPU, others are only valid when talking about an + * X Screen. Target types are then what is used to identify the target + * group of the attribute you wish to set/query. + * + * Here are the supported target types: + */ + +#define NV_CTRL_TARGET_TYPE_X_SCREEN 0 +#define NV_CTRL_TARGET_TYPE_GPU 1 +#define NV_CTRL_TARGET_TYPE_FRAMELOCK 2 +#define NV_CTRL_TARGET_TYPE_VCSC 3 /* Visual Computing System */ +#define NV_CTRL_TARGET_TYPE_GVI 4 +#define NV_CTRL_TARGET_TYPE_COOLER 5 /* e.g., fan */ +#define NV_CTRL_TARGET_TYPE_THERMAL_SENSOR 6 +#define NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER 7 +#define NV_CTRL_TARGET_TYPE_DISPLAY 8 + +/**************************************************************************/ + +/* + * Attributes + * + * Some attributes may only be read; some may require a display_mask + * argument and others may be valid only for specific target types. + * This information is encoded in the "permission" comment after each + * attribute #define, and can be queried at run time with + * XNVCTRLQueryValidAttributeValues() and/or + * XNVCTRLQueryValidTargetAttributeValues() + * + * Key to Integer Attribute "Permissions": + * + * R: The attribute is readable (in general, all attributes will be + * readable) + * + * W: The attribute is writable (attributes may not be writable for + * various reasons: they represent static system information, they + * can only be changed by changing an XF86Config option, etc). + * + * D: The attribute requires the display mask argument. The + * attributes NV_CTRL_CONNECTED_DISPLAYS and NV_CTRL_ENABLED_DISPLAYS + * will be a bitmask of what display devices are connected and what + * display devices are enabled for use in X, respectively. Each bit + * in the bitmask represents a display device; it is these bits which + * should be used as the display_mask when dealing with attributes + * designated with "D" below. For attributes that do not require the + * display mask, the argument is ignored. + * + * Alternatively, NV-CONTROL versions 1.27 and greater allow these + * attributes to be accessed via display target types, in which case + * the display_mask is ignored. + * + * G: The attribute may be queried using an NV_CTRL_TARGET_TYPE_GPU + * target type via XNVCTRLQueryTargetAttribute(). + * + * F: The attribute may be queried using an NV_CTRL_TARGET_TYPE_FRAMELOCK + * target type via XNVCTRLQueryTargetAttribute(). + * + * X: When Xinerama is enabled, this attribute is kept consistent across + * all Physical X Screens; assignment of this attribute will be + * broadcast by the NVIDIA X Driver to all X Screens. + * + * V: The attribute may be queried using an NV_CTRL_TARGET_TYPE_VCSC + * target type via XNVCTRLQueryTargetAttribute(). + * + * I: The attribute may be queried using an NV_CTRL_TARGET_TYPE_GVI target type + * via XNVCTRLQueryTargetAttribute(). + * + * Q: The attribute is a 64-bit integer attribute; use the 64-bit versions + * of the appropriate query interfaces. + * + * C: The attribute may be queried using an NV_CTRL_TARGET_TYPE_COOLER target + * type via XNVCTRLQueryTargetAttribute(). + * + * S: The attribute may be queried using an NV_CTRL_TARGET_TYPE_THERMAL_SENSOR + * target type via XNVCTRLQueryTargetAttribute(). + * + * T: The attribute may be queried using an + * NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER target type + * via XNVCTRLQueryTargetAttribute(). + * + * NOTE: Unless mentioned otherwise, all attributes may be queried using + * an NV_CTRL_TARGET_TYPE_X_SCREEN target type via + * XNVCTRLQueryTargetAttribute(). + */ + +/**************************************************************************/ + +/* + * Integer attributes: + * + * Integer attributes can be queried through the XNVCTRLQueryAttribute() and + * XNVCTRLQueryTargetAttribute() function calls. + * + * Integer attributes can be set through the XNVCTRLSetAttribute() and + * XNVCTRLSetTargetAttribute() function calls. + * + * Unless otherwise noted, all integer attributes can be queried/set + * using an NV_CTRL_TARGET_TYPE_X_SCREEN target. Attributes that cannot + * take an NV_CTRL_TARGET_TYPE_X_SCREEN also cannot be queried/set through + * XNVCTRLQueryAttribute()/XNVCTRLSetAttribute() (Since these assume + * an X Screen target). + */ + +/* + * NV_CTRL_FLATPANEL_SCALING - not supported + */ + +#define NV_CTRL_FLATPANEL_SCALING 2 /* RWDG */ +#define NV_CTRL_FLATPANEL_SCALING_DEFAULT 0 +#define NV_CTRL_FLATPANEL_SCALING_NATIVE 1 +#define NV_CTRL_FLATPANEL_SCALING_SCALED 2 +#define NV_CTRL_FLATPANEL_SCALING_CENTERED 3 +#define NV_CTRL_FLATPANEL_SCALING_ASPECT_SCALED 4 + +/* + * NV_CTRL_FLATPANEL_DITHERING is deprecated; NV_CTRL_DITHERING should + * be used instead. + */ + +#define NV_CTRL_FLATPANEL_DITHERING 3 /* RWDG */ +#define NV_CTRL_FLATPANEL_DITHERING_DEFAULT 0 +#define NV_CTRL_FLATPANEL_DITHERING_ENABLED 1 +#define NV_CTRL_FLATPANEL_DITHERING_DISABLED 2 + +/* + * NV_CTRL_DITHERING - the requested dithering configuration; + * possible values are: + * + * 0: auto (the driver will decide when to dither) + * 1: enabled (the driver will always dither when possible) + * 2: disabled (the driver will never dither) + */ + +#define NV_CTRL_DITHERING 3 /* RWDG */ +#define NV_CTRL_DITHERING_AUTO 0 +#define NV_CTRL_DITHERING_ENABLED 1 +#define NV_CTRL_DITHERING_DISABLED 2 + +/* + * NV_CTRL_DIGITAL_VIBRANCE - sets the digital vibrance level for the + * specified display device. + */ + +#define NV_CTRL_DIGITAL_VIBRANCE 4 /* RWDG */ + +/* + * NV_CTRL_BUS_TYPE - returns the bus type through which the specified device + * is connected to the computer. + * When this attribute is queried on an X screen target, the bus type of the + * GPU driving the X screen is returned. + */ + +#define NV_CTRL_BUS_TYPE 5 /* R--GI */ +#define NV_CTRL_BUS_TYPE_AGP 0 +#define NV_CTRL_BUS_TYPE_PCI 1 +#define NV_CTRL_BUS_TYPE_PCI_EXPRESS 2 +#define NV_CTRL_BUS_TYPE_INTEGRATED 3 + +/* + * NV_CTRL_VIDEO_RAM - returns the total amount of memory available + * to the specified GPU (or the GPU driving the specified X + * screen). Note: if the GPU supports TurboCache(TM), the value + * reported may exceed the amount of video memory installed on the + * GPU. The value reported for integrated GPUs may likewise exceed + * the amount of dedicated system memory set aside by the system + * BIOS for use by the integrated GPU. + */ + +#define NV_CTRL_VIDEO_RAM 6 /* R--G */ + +/* + * NV_CTRL_IRQ - returns the interrupt request line used by the specified + * device. + * When this attribute is queried on an X screen target, the IRQ of the GPU + * driving the X screen is returned. + */ + +#define NV_CTRL_IRQ 7 /* R--GI */ + +/* + * NV_CTRL_OPERATING_SYSTEM - returns the operating system on which + * the X server is running. + */ + +#define NV_CTRL_OPERATING_SYSTEM 8 /* R--G */ +#define NV_CTRL_OPERATING_SYSTEM_LINUX 0 +#define NV_CTRL_OPERATING_SYSTEM_FREEBSD 1 +#define NV_CTRL_OPERATING_SYSTEM_SUNOS 2 + +/* + * NV_CTRL_SYNC_TO_VBLANK - enables sync to vblank for OpenGL clients. + * This setting is only applied to OpenGL clients that are started + * after this setting is applied. + */ + +#define NV_CTRL_SYNC_TO_VBLANK 9 /* RW-X */ +#define NV_CTRL_SYNC_TO_VBLANK_OFF 0 +#define NV_CTRL_SYNC_TO_VBLANK_ON 1 + +/* + * NV_CTRL_LOG_ANISO - enables anisotropic filtering for OpenGL + * clients; on some NVIDIA hardware, this can only be enabled or + * disabled; on other hardware different levels of anisotropic + * filtering can be specified. This setting is only applied to OpenGL + * clients that are started after this setting is applied. + */ + +#define NV_CTRL_LOG_ANISO 10 /* RW-X */ + +/* + * NV_CTRL_FSAA_MODE - the FSAA setting for OpenGL clients; possible + * FSAA modes: + * + * NV_CTRL_FSAA_MODE_2x "2x Bilinear Multisampling" + * NV_CTRL_FSAA_MODE_2x_5t "2x Quincunx Multisampling" + * NV_CTRL_FSAA_MODE_15x15 "1.5 x 1.5 Supersampling" + * NV_CTRL_FSAA_MODE_2x2 "2 x 2 Supersampling" + * NV_CTRL_FSAA_MODE_4x "4x Bilinear Multisampling" + * NV_CTRL_FSAA_MODE_4x_9t "4x Gaussian Multisampling" + * NV_CTRL_FSAA_MODE_8x "2x Bilinear Multisampling by 4x Supersampling" + * NV_CTRL_FSAA_MODE_16x "4x Bilinear Multisampling by 4x Supersampling" + * NV_CTRL_FSAA_MODE_8xS "4x Multisampling by 2x Supersampling" + * + * This setting is only applied to OpenGL clients that are started + * after this setting is applied. + */ + +#define NV_CTRL_FSAA_MODE 11 /* RW-X */ +#define NV_CTRL_FSAA_MODE_NONE 0 +#define NV_CTRL_FSAA_MODE_2x 1 +#define NV_CTRL_FSAA_MODE_2x_5t 2 +#define NV_CTRL_FSAA_MODE_15x15 3 +#define NV_CTRL_FSAA_MODE_2x2 4 +#define NV_CTRL_FSAA_MODE_4x 5 +#define NV_CTRL_FSAA_MODE_4x_9t 6 +#define NV_CTRL_FSAA_MODE_8x 7 +#define NV_CTRL_FSAA_MODE_16x 8 +#define NV_CTRL_FSAA_MODE_8xS 9 +#define NV_CTRL_FSAA_MODE_8xQ 10 +#define NV_CTRL_FSAA_MODE_16xS 11 +#define NV_CTRL_FSAA_MODE_16xQ 12 +#define NV_CTRL_FSAA_MODE_32xS 13 +#define NV_CTRL_FSAA_MODE_32x 14 +#define NV_CTRL_FSAA_MODE_64xS 15 +#define NV_CTRL_FSAA_MODE_MAX NV_CTRL_FSAA_MODE_64xS + +/* + * NV_CTRL_TEXTURE_SHARPEN - enables texture sharpening for OpenGL + * clients. This setting is only applied to OpenGL clients that are + * started after this setting is applied. + */ + +#define NV_CTRL_TEXTURE_SHARPEN 12 /* RW-X */ +#define NV_CTRL_TEXTURE_SHARPEN_OFF 0 +#define NV_CTRL_TEXTURE_SHARPEN_ON 1 + +/* + * NV_CTRL_UBB - returns whether UBB is enabled for the specified X + * screen. + */ + +#define NV_CTRL_UBB 13 /* R-- */ +#define NV_CTRL_UBB_OFF 0 +#define NV_CTRL_UBB_ON 1 + +/* + * NV_CTRL_OVERLAY - returns whether the RGB overlay is enabled for + * the specified X screen. + */ + +#define NV_CTRL_OVERLAY 14 /* R-- */ +#define NV_CTRL_OVERLAY_OFF 0 +#define NV_CTRL_OVERLAY_ON 1 + +/* + * NV_CTRL_STEREO - returns whether stereo (and what type) is enabled + * for the specified X screen. + */ + +#define NV_CTRL_STEREO 16 /* R-- */ +#define NV_CTRL_STEREO_OFF 0 +#define NV_CTRL_STEREO_DDC 1 +#define NV_CTRL_STEREO_BLUELINE 2 +#define NV_CTRL_STEREO_DIN 3 +#define NV_CTRL_STEREO_PASSIVE_EYE_PER_DPY 4 +#define NV_CTRL_STEREO_VERTICAL_INTERLACED 5 +#define NV_CTRL_STEREO_COLOR_INTERLACED 6 +#define NV_CTRL_STEREO_HORIZONTAL_INTERLACED 7 +#define NV_CTRL_STEREO_CHECKERBOARD_PATTERN 8 +#define NV_CTRL_STEREO_INVERSE_CHECKERBOARD_PATTERN 9 +#define NV_CTRL_STEREO_3D_VISION 10 +#define NV_CTRL_STEREO_3D_VISION_PRO 11 + +/* + * NV_CTRL_EMULATE - controls OpenGL software emulation of future + * NVIDIA GPUs. + */ + +#define NV_CTRL_EMULATE 17 /* RW- */ +#define NV_CTRL_EMULATE_NONE 0 + +/* + * NV_CTRL_TWINVIEW - returns whether TwinView is enabled for the + * specified X screen. + */ + +#define NV_CTRL_TWINVIEW 18 /* R-- */ +#define NV_CTRL_TWINVIEW_NOT_ENABLED 0 +#define NV_CTRL_TWINVIEW_ENABLED 1 + +/* + * NV_CTRL_CONNECTED_DISPLAYS - returns a display mask indicating the last + * cached state of the display devices connected to the GPU or GPU driving + * the specified X screen. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_CONNECTED_DISPLAYS 19 /* R--G */ + +/* + * NV_CTRL_ENABLED_DISPLAYS - returns a display mask indicating what + * display devices are enabled for use on the specified X screen or + * GPU. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_ENABLED_DISPLAYS 20 /* R--G */ + +/**************************************************************************/ +/* + * Integer attributes specific to configuring Frame Lock on boards that + * support it. + */ + +/* + * NV_CTRL_FRAMELOCK - returns whether the underlying GPU supports + * Frame Lock. All of the other frame lock attributes are only + * applicable if NV_CTRL_FRAMELOCK is _SUPPORTED. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_FRAMELOCK 21 /* R--G */ +#define NV_CTRL_FRAMELOCK_NOT_SUPPORTED 0 +#define NV_CTRL_FRAMELOCK_SUPPORTED 1 + +/* + * NV_CTRL_FRAMELOCK_MASTER - get/set which display device to use + * as the frame lock master for the entire sync group. Note that only + * one node in the sync group should be configured as the master. + * + * This attribute can only be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be + * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN. + */ + +#define NV_CTRL_FRAMELOCK_MASTER 22 /* RW-G */ + +/* These are deprecated. NV_CTRL_FRAMELOCK_MASTER now takes and + returns a display mask as value. */ +#define NV_CTRL_FRAMELOCK_MASTER_FALSE 0 +#define NV_CTRL_FRAMELOCK_MASTER_TRUE 1 + +/* + * NV_CTRL_FRAMELOCK_POLARITY - sync either to the rising edge of the + * frame lock pulse, the falling edge of the frame lock pulse or both. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN + * target. + */ + +#define NV_CTRL_FRAMELOCK_POLARITY 23 /* RW-F */ +#define NV_CTRL_FRAMELOCK_POLARITY_RISING_EDGE 0x1 +#define NV_CTRL_FRAMELOCK_POLARITY_FALLING_EDGE 0x2 +#define NV_CTRL_FRAMELOCK_POLARITY_BOTH_EDGES 0x3 + +/* + * NV_CTRL_FRAMELOCK_SYNC_DELAY - delay between the frame lock pulse + * and the GPU sync. This value must be multiplied by + * NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION to determine the sync delay in + * nanoseconds. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN + * target. + * + * USAGE NODE: NV_CTRL_FRAMELOCK_SYNC_DELAY_MAX and + * NV_CTRL_FRAMELOCK_SYNC_DELAY_FACTOR are deprecated. + * The Sync Delay _MAX and _FACTOR are different for different + * GSync products and so, to be correct, the valid values for + * NV_CTRL_FRAMELOCK_SYNC_DELAY must be queried to get the range + * of acceptable sync delay values, and + * NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION must be queried to + * obtain the correct factor. + */ + +#define NV_CTRL_FRAMELOCK_SYNC_DELAY 24 /* RW-F */ +#define NV_CTRL_FRAMELOCK_SYNC_DELAY_MAX 2047 // deprecated +#define NV_CTRL_FRAMELOCK_SYNC_DELAY_FACTOR 7.81 // deprecated + +/* + * NV_CTRL_FRAMELOCK_SYNC_INTERVAL - how many house sync pulses + * between the frame lock sync generation (0 == sync every house sync); + * this only applies to the master when receiving house sync. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN + * target. + */ + +#define NV_CTRL_FRAMELOCK_SYNC_INTERVAL 25 /* RW-F */ + +/* + * NV_CTRL_FRAMELOCK_PORT0_STATUS - status of the rj45 port0. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN + * target. + */ + +#define NV_CTRL_FRAMELOCK_PORT0_STATUS 26 /* R--F */ +#define NV_CTRL_FRAMELOCK_PORT0_STATUS_INPUT 0 +#define NV_CTRL_FRAMELOCK_PORT0_STATUS_OUTPUT 1 + +/* + * NV_CTRL_FRAMELOCK_PORT1_STATUS - status of the rj45 port1. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN + * target. + */ + +#define NV_CTRL_FRAMELOCK_PORT1_STATUS 27 /* R--F */ +#define NV_CTRL_FRAMELOCK_PORT1_STATUS_INPUT 0 +#define NV_CTRL_FRAMELOCK_PORT1_STATUS_OUTPUT 1 + +/* + * NV_CTRL_FRAMELOCK_HOUSE_STATUS - returns whether or not the house + * sync signal was detected on the BNC connector of the frame lock + * board. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN + * target. + */ + +#define NV_CTRL_FRAMELOCK_HOUSE_STATUS 28 /* R--F */ +#define NV_CTRL_FRAMELOCK_HOUSE_STATUS_NOT_DETECTED 0 +#define NV_CTRL_FRAMELOCK_HOUSE_STATUS_DETECTED 1 + +/* + * NV_CTRL_FRAMELOCK_SYNC - enable/disable the syncing of display + * devices to the frame lock pulse as specified by previous calls to + * NV_CTRL_FRAMELOCK_MASTER and NV_CTRL_FRAMELOCK_SLAVES. + * + * This attribute can only be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be + * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN. + */ + +#define NV_CTRL_FRAMELOCK_SYNC 29 /* RW-G */ +#define NV_CTRL_FRAMELOCK_SYNC_DISABLE 0 +#define NV_CTRL_FRAMELOCK_SYNC_ENABLE 1 + +/* + * NV_CTRL_FRAMELOCK_SYNC_READY - reports whether a frame lock + * board is receiving sync (regardless of whether or not any display + * devices are using the sync). + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN + * target. + */ + +#define NV_CTRL_FRAMELOCK_SYNC_READY 30 /* R--F */ +#define NV_CTRL_FRAMELOCK_SYNC_READY_FALSE 0 +#define NV_CTRL_FRAMELOCK_SYNC_READY_TRUE 1 + +/* + * NV_CTRL_FRAMELOCK_STEREO_SYNC - this indicates that the GPU stereo + * signal is in sync with the frame lock stereo signal. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN + * target. + */ + +#define NV_CTRL_FRAMELOCK_STEREO_SYNC 31 /* R--G */ +#define NV_CTRL_FRAMELOCK_STEREO_SYNC_FALSE 0 +#define NV_CTRL_FRAMELOCK_STEREO_SYNC_TRUE 1 + +/* + * NV_CTRL_FRAMELOCK_TEST_SIGNAL - to test the connections in the sync + * group, tell the master to enable a test signal, then query port[01] + * status and sync_ready on all slaves. When done, tell the master to + * disable the test signal. Test signal should only be manipulated + * while NV_CTRL_FRAMELOCK_SYNC is enabled. + * + * The TEST_SIGNAL is also used to reset the Universal Frame Count (as + * returned by the glXQueryFrameCountNV() function in the + * GLX_NV_swap_group extension). Note: for best accuracy of the + * Universal Frame Count, it is recommended to toggle the TEST_SIGNAL + * on and off after enabling frame lock. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_FRAMELOCK_TEST_SIGNAL 32 /* RW-G */ +#define NV_CTRL_FRAMELOCK_TEST_SIGNAL_DISABLE 0 +#define NV_CTRL_FRAMELOCK_TEST_SIGNAL_ENABLE 1 + +/* + * NV_CTRL_FRAMELOCK_ETHERNET_DETECTED - The frame lock boards are + * cabled together using regular cat5 cable, connecting to rj45 ports + * on the backplane of the card. There is some concern that users may + * think these are ethernet ports and connect them to a + * router/hub/etc. The hardware can detect this and will shut off to + * prevent damage (either to itself or to the router). + * NV_CTRL_FRAMELOCK_ETHERNET_DETECTED may be called to find out if + * ethernet is connected to one of the rj45 ports. An appropriate + * error message should then be displayed. The _PORT0 and _PORT1 + * values may be or'ed together. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN + * target. + */ + +#define NV_CTRL_FRAMELOCK_ETHERNET_DETECTED 33 /* R--F */ +#define NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_NONE 0 +#define NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_PORT0 0x1 +#define NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_PORT1 0x2 + +/* + * NV_CTRL_FRAMELOCK_VIDEO_MODE - get/set what video mode is used + * to interperate the house sync signal. This should only be set + * on the master. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN + * target. + */ + +#define NV_CTRL_FRAMELOCK_VIDEO_MODE 34 /* RW-F */ +#define NV_CTRL_FRAMELOCK_VIDEO_MODE_NONE 0 +#define NV_CTRL_FRAMELOCK_VIDEO_MODE_TTL 1 +#define NV_CTRL_FRAMELOCK_VIDEO_MODE_NTSCPALSECAM 2 +#define NV_CTRL_FRAMELOCK_VIDEO_MODE_HDTV 3 + +/* + * During FRAMELOCK bring-up, the above values were redefined to + * these: + */ + +#define NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_AUTO 0 +#define NV_CTRL_FRAMELOCK_VIDEO_MODE_TTL 1 +#define NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_BI_LEVEL 2 +#define NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_TRI_LEVEL 3 + +/* + * NV_CTRL_FRAMELOCK_SYNC_RATE - this is the refresh rate that the + * frame lock board is sending to the GPU, in milliHz. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN + * target. + */ + +#define NV_CTRL_FRAMELOCK_SYNC_RATE 35 /* R--F */ + +/**************************************************************************/ + +/* + * NV_CTRL_FORCE_GENERIC_CPU - inhibit the use of CPU specific + * features such as MMX, SSE, or 3DNOW! for OpenGL clients; this + * option may result in performance loss, but may be useful in + * conjunction with software such as the Valgrind memory debugger. + * This setting is only applied to OpenGL clients that are started + * after this setting is applied. + * + * USAGE NOTE: This attribute is deprecated. CPU compatibility is now + * checked each time during initialization. + */ + +#define NV_CTRL_FORCE_GENERIC_CPU 37 /* RW-X */ +#define NV_CTRL_FORCE_GENERIC_CPU_DISABLE 0 +#define NV_CTRL_FORCE_GENERIC_CPU_ENABLE 1 + +/* + * NV_CTRL_OPENGL_AA_LINE_GAMMA - for OpenGL clients, allow + * Gamma-corrected antialiased lines to consider variances in the + * color display capabilities of output devices when rendering smooth + * lines. Only available on recent Quadro GPUs. This setting is only + * applied to OpenGL clients that are started after this setting is + * applied. + */ + +#define NV_CTRL_OPENGL_AA_LINE_GAMMA 38 /* RW-X */ +#define NV_CTRL_OPENGL_AA_LINE_GAMMA_DISABLE 0 +#define NV_CTRL_OPENGL_AA_LINE_GAMMA_ENABLE 1 + +/* + * NV_CTRL_FRAMELOCK_TIMING - this is TRUE when the gpu is both receiving + * and locked to an input timing signal. Timing information may come from + * the following places: Another frame lock device that is set to master, + * the house sync signal, or the GPU's internal timing from a display + * device. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_FRAMELOCK_TIMING 39 /* R--G */ +#define NV_CTRL_FRAMELOCK_TIMING_FALSE 0 +#define NV_CTRL_FRAMELOCK_TIMING_TRUE 1 + +/* + * NV_CTRL_FLIPPING_ALLOWED - when TRUE, OpenGL will swap by flipping + * when possible; when FALSE, OpenGL will alway swap by blitting. + */ + +#define NV_CTRL_FLIPPING_ALLOWED 40 /* RW-X */ +#define NV_CTRL_FLIPPING_ALLOWED_FALSE 0 +#define NV_CTRL_FLIPPING_ALLOWED_TRUE 1 + +/* + * NV_CTRL_ARCHITECTURE - returns the architecture on which the X server is + * running. + */ + +#define NV_CTRL_ARCHITECTURE 41 /* R-- */ +#define NV_CTRL_ARCHITECTURE_X86 0 +#define NV_CTRL_ARCHITECTURE_X86_64 1 +#define NV_CTRL_ARCHITECTURE_IA64 2 + +/* + * NV_CTRL_TEXTURE_CLAMPING - texture clamping mode in OpenGL. By + * default, _SPEC is used, which forces OpenGL texture clamping to + * conform with the OpenGL specification. _EDGE forces NVIDIA's + * OpenGL implementation to remap GL_CLAMP to GL_CLAMP_TO_EDGE, + * which is not strictly conformant, but some applications rely on + * the non-conformant behavior. + */ + +#define NV_CTRL_TEXTURE_CLAMPING 42 /* RW-X */ +#define NV_CTRL_TEXTURE_CLAMPING_EDGE 0 +#define NV_CTRL_TEXTURE_CLAMPING_SPEC 1 + +#define NV_CTRL_CURSOR_SHADOW 43 /* RW- */ +#define NV_CTRL_CURSOR_SHADOW_DISABLE 0 +#define NV_CTRL_CURSOR_SHADOW_ENABLE 1 + +#define NV_CTRL_CURSOR_SHADOW_ALPHA 44 /* RW- */ +#define NV_CTRL_CURSOR_SHADOW_RED 45 /* RW- */ +#define NV_CTRL_CURSOR_SHADOW_GREEN 46 /* RW- */ +#define NV_CTRL_CURSOR_SHADOW_BLUE 47 /* RW- */ + +#define NV_CTRL_CURSOR_SHADOW_X_OFFSET 48 /* RW- */ +#define NV_CTRL_CURSOR_SHADOW_Y_OFFSET 49 /* RW- */ + +/* + * When Application Control for FSAA is enabled, then what the + * application requests is used, and NV_CTRL_FSAA_MODE is ignored. If + * this is disabled, then any application setting is overridden with + * NV_CTRL_FSAA_MODE + */ + +#define NV_CTRL_FSAA_APPLICATION_CONTROLLED 50 /* RW-X */ +#define NV_CTRL_FSAA_APPLICATION_CONTROLLED_ENABLED 1 +#define NV_CTRL_FSAA_APPLICATION_CONTROLLED_DISABLED 0 + +/* + * When Application Control for LogAniso is enabled, then what the + * application requests is used, and NV_CTRL_LOG_ANISO is ignored. If + * this is disabled, then any application setting is overridden with + * NV_CTRL_LOG_ANISO + */ + +#define NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED 51 /* RW-X */ +#define NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED_ENABLED 1 +#define NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED_DISABLED 0 + +/* + * IMAGE_SHARPENING adjusts the sharpness of the display's image + * quality by amplifying high frequency content. Valid values will + * normally be in the range [0,32). Only available on GeForceFX or + * newer. + */ + +#define NV_CTRL_IMAGE_SHARPENING 52 /* RWDG */ + +/* + * NV_CTRL_TV_OVERSCAN adjusts the amount of overscan on the specified + * display device. + */ + +#define NV_CTRL_TV_OVERSCAN 53 /* RWDG */ + +/* + * NV_CTRL_TV_FLICKER_FILTER adjusts the amount of flicker filter on + * the specified display device. + */ + +#define NV_CTRL_TV_FLICKER_FILTER 54 /* RWDG */ + +/* + * NV_CTRL_TV_BRIGHTNESS adjusts the amount of brightness on the + * specified display device. + */ + +#define NV_CTRL_TV_BRIGHTNESS 55 /* RWDG */ + +/* + * NV_CTRL_TV_HUE adjusts the amount of hue on the specified display + * device. + */ + +#define NV_CTRL_TV_HUE 56 /* RWDG */ + +/* + * NV_CTRL_TV_CONTRAST adjusts the amount of contrast on the specified + * display device. + */ + +#define NV_CTRL_TV_CONTRAST 57 /* RWDG */ + +/* + * NV_CTRL_TV_SATURATION adjusts the amount of saturation on the + * specified display device. + */ + +#define NV_CTRL_TV_SATURATION 58 /* RWDG */ + +/* + * NV_CTRL_TV_RESET_SETTINGS - this write-only attribute can be used + * to request that all TV Settings be reset to their default values; + * typical usage would be that this attribute be sent, and then all + * the TV attributes be queried to retrieve their new values. + */ + +#define NV_CTRL_TV_RESET_SETTINGS 59 /* -WDG */ + +/* + * NV_CTRL_GPU_CORE_TEMPERATURE reports the current core temperature + * of the GPU driving the X screen. + */ + +#define NV_CTRL_GPU_CORE_TEMPERATURE 60 /* R--G */ + +/* + * NV_CTRL_GPU_CORE_THRESHOLD reports the current GPU core slowdown + * threshold temperature, NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD and + * NV_CTRL_GPU_MAX_CORE_THRESHOLD report the default and MAX core + * slowdown threshold temperatures. + * + * NV_CTRL_GPU_CORE_THRESHOLD reflects the temperature at which the + * GPU is throttled to prevent overheating. + */ + +#define NV_CTRL_GPU_CORE_THRESHOLD 61 /* R--G */ +#define NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD 62 /* R--G */ +#define NV_CTRL_GPU_MAX_CORE_THRESHOLD 63 /* R--G */ + +/* + * NV_CTRL_AMBIENT_TEMPERATURE reports the current temperature in the + * immediate neighbourhood of the GPU driving the X screen. + */ + +#define NV_CTRL_AMBIENT_TEMPERATURE 64 /* R--G */ + +/* + * NV_CTRL_PBUFFER_SCANOUT_SUPPORTED - returns whether this X screen + * supports scanout of FP pbuffers; + * + * if this screen does not support PBUFFER_SCANOUT, then all other + * PBUFFER_SCANOUT attributes are unavailable. + * + * PBUFFER_SCANOUT is supported if and only if: + * - Twinview is configured with clone mode. The secondary screen is used to + * scanout the pbuffer. + * - The desktop is running in with 16 bits per pixel. + */ +#define NV_CTRL_PBUFFER_SCANOUT_SUPPORTED 65 /* R-- */ +#define NV_CTRL_PBUFFER_SCANOUT_FALSE 0 +#define NV_CTRL_PBUFFER_SCANOUT_TRUE 1 + +/* + * NV_CTRL_PBUFFER_SCANOUT_XID indicates the XID of the pbuffer used for + * scanout. + */ +#define NV_CTRL_PBUFFER_SCANOUT_XID 66 /* RW- */ + +/**************************************************************************/ +/* + * The NV_CTRL_GVO_* integer attributes are used to configure GVO + * (Graphics to Video Out). This functionality is available, for + * example, on the Quadro FX 4000 SDI graphics board. + * + * The following is a typical usage pattern for the GVO attributes: + * + * - query NV_CTRL_GVO_SUPPORTED to determine if the X screen supports GV0. + * + * - specify NV_CTRL_GVO_SYNC_MODE (one of FREE_RUNNING, GENLOCK, or + * FRAMELOCK); if you specify GENLOCK or FRAMELOCK, you should also + * specify NV_CTRL_GVO_SYNC_SOURCE. + * + * - Use NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED and + * NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED to detect what input syncs are + * present. + * + * (If no analog sync is detected but it is known that a valid + * bi-level or tri-level sync is connected set + * NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE appropriately and + * retest with NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED). + * + * - if syncing to input sync, query the + * NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT attribute; note that Input video + * format can only be queried after SYNC_SOURCE is specified. + * + * - specify the NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT + * + * - specify the NV_CTRL_GVO_DATA_FORMAT + * + * - specify any custom Color Space Conversion (CSC) matrix, offset, + * and scale with XNVCTRLSetGvoColorConversion(). + * + * - if using the GLX_NV_video_out extension to display one or more + * pbuffers, call glXGetVideoDeviceNV() to lock the GVO output for use + * by the GLX client; then bind the pbuffer(s) to the GVO output with + * glXBindVideoImageNV() and send pbuffers to the GVO output with + * glXSendPbufferToVideoNV(); see the GLX_NV_video_out spec for more + * details. + * + * - if using the GLX_NV_present_video extension, call + * glXBindVideoDeviceNV() to bind the GVO video device to current + * OpenGL context. + * + * Note that setting most GVO attributes only causes the value to be + * cached in the X server. The values will be flushed to the hardware + * either when the next MetaMode is set that uses the GVO display + * device, or when a GLX pbuffer is bound to the GVO output (with + * glXBindVideoImageNV()). + * + * Note that GLX_NV_video_out/GLX_NV_present_video and X screen use + * are mutually exclusive. If a MetaMode is currently using the GVO + * device, then glXGetVideoDeviceNV and glXBindVideoImageNV() will + * fail. Similarly, if a GLX client has locked the GVO output (via + * glXGetVideoDeviceNV or glXBindVideoImageNV), then setting a + * MetaMode that uses the GVO device will fail. The + * NV_CTRL_GVO_GLX_LOCKED event will be sent when a GLX client locks + * the GVO output. + * + */ + +/* + * NV_CTRL_GVO_SUPPORTED - returns whether this X screen supports GVO; + * if this screen does not support GVO output, then all other GVO + * attributes are unavailable. + */ + +#define NV_CTRL_GVO_SUPPORTED 67 /* R-- */ +#define NV_CTRL_GVO_SUPPORTED_FALSE 0 +#define NV_CTRL_GVO_SUPPORTED_TRUE 1 + +/* + * NV_CTRL_GVO_SYNC_MODE - selects the GVO sync mode; possible values + * are: + * + * FREE_RUNNING - GVO does not sync to any external signal + * + * GENLOCK - the GVO output is genlocked to an incoming sync signal; + * genlocking locks at hsync. This requires that the output video + * format exactly match the incoming sync video format. + * + * FRAMELOCK - the GVO output is frame locked to an incoming sync + * signal; frame locking locks at vsync. This requires that the output + * video format have the same refresh rate as the incoming sync video + * format. + */ + +#define NV_CTRL_GVO_SYNC_MODE 68 /* RW- */ +#define NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING 0 +#define NV_CTRL_GVO_SYNC_MODE_GENLOCK 1 +#define NV_CTRL_GVO_SYNC_MODE_FRAMELOCK 2 + +/* + * NV_CTRL_GVO_SYNC_SOURCE - if NV_CTRL_GVO_SYNC_MODE is set to either + * GENLOCK or FRAMELOCK, this controls which sync source is used as + * the incoming sync signal (either Composite or SDI). If + * NV_CTRL_GVO_SYNC_MODE is FREE_RUNNING, this attribute has no + * effect. + */ + +#define NV_CTRL_GVO_SYNC_SOURCE 69 /* RW- */ +#define NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE 0 +#define NV_CTRL_GVO_SYNC_SOURCE_SDI 1 + +/* + * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT - specifies the desired output video + * format for GVO devices or the desired input video format for GVI devices. + * + * Note that for GVO, the valid video formats may vary depending on + * the NV_CTRL_GVO_SYNC_MODE and the incoming sync video format. See + * the definition of NV_CTRL_GVO_SYNC_MODE. + * + * Note that when querying the ValidValues for this data type, the + * values are reported as bits within a bitmask + * (ATTRIBUTE_TYPE_INT_BITS); unfortunately, there are more valid + * value bits than will fit in a single 32-bit value. To solve this, + * query the ValidValues for NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT to + * check which of the first 31 VIDEO_FORMATS are valid, query the + * ValidValues for NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2 to check which + * of the 32-63 VIDEO_FORMATS are valid, and query the ValidValues of + * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT3 to check which of the 64-95 + * VIDEO_FORMATS are valid. + * + * Note: Setting this attribute on a GVI device may also result in the + * following NV-CONTROL attributes being reset on that device (to + * ensure the configuration remains valid): + * NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT + * NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING + */ + +#define NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT 70 /* RW--I */ + +#define NV_CTRL_GVIO_VIDEO_FORMAT_NONE 0 +#define NV_CTRL_GVIO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC 1 +#define NV_CTRL_GVIO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL 2 +#define NV_CTRL_GVIO_VIDEO_FORMAT_720P_59_94_SMPTE296 3 +#define NV_CTRL_GVIO_VIDEO_FORMAT_720P_60_00_SMPTE296 4 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1035I_59_94_SMPTE260 5 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1035I_60_00_SMPTE260 6 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_SMPTE295 7 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_SMPTE274 8 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_59_94_SMPTE274 9 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_60_00_SMPTE274 10 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_23_976_SMPTE274 11 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_24_00_SMPTE274 12 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_25_00_SMPTE274 13 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_29_97_SMPTE274 14 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_30_00_SMPTE274 15 +#define NV_CTRL_GVIO_VIDEO_FORMAT_720P_50_00_SMPTE296 16 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_48_00_SMPTE274 17 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_47_96_SMPTE274 18 +#define NV_CTRL_GVIO_VIDEO_FORMAT_720P_30_00_SMPTE296 19 +#define NV_CTRL_GVIO_VIDEO_FORMAT_720P_29_97_SMPTE296 20 +#define NV_CTRL_GVIO_VIDEO_FORMAT_720P_25_00_SMPTE296 21 +#define NV_CTRL_GVIO_VIDEO_FORMAT_720P_24_00_SMPTE296 22 +#define NV_CTRL_GVIO_VIDEO_FORMAT_720P_23_98_SMPTE296 23 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_25_00_SMPTE274 24 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_29_97_SMPTE274 25 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_30_00_SMPTE274 26 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_24_00_SMPTE274 27 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_23_98_SMPTE274 28 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_30_00_SMPTE372 29 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_29_97_SMPTE372 30 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_60_00_SMPTE372 31 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_59_94_SMPTE372 32 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_25_00_SMPTE372 33 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_50_00_SMPTE372 34 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_24_00_SMPTE372 35 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_23_98_SMPTE372 36 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_48_00_SMPTE372 37 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_47_96_SMPTE372 38 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_50_00_3G_LEVEL_A_SMPTE274 39 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_59_94_3G_LEVEL_A_SMPTE274 40 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_60_00_3G_LEVEL_A_SMPTE274 41 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_60_00_3G_LEVEL_B_SMPTE274 42 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_60_00_3G_LEVEL_B_SMPTE274 43 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_60_00_3G_LEVEL_B_SMPTE372 44 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_50_00_3G_LEVEL_B_SMPTE274 45 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_3G_LEVEL_B_SMPTE274 46 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_50_00_3G_LEVEL_B_SMPTE372 47 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_30_00_3G_LEVEL_B_SMPTE274 48 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_30_00_3G_LEVEL_B_SMPTE372 49 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_25_00_3G_LEVEL_B_SMPTE274 50 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_25_00_3G_LEVEL_B_SMPTE372 51 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_24_00_3G_LEVEL_B_SMPTE274 52 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_24_00_3G_LEVEL_B_SMPTE372 53 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_48_00_3G_LEVEL_B_SMPTE274 54 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_48_00_3G_LEVEL_B_SMPTE372 55 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_59_94_3G_LEVEL_B_SMPTE274 56 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_59_94_3G_LEVEL_B_SMPTE274 57 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_59_94_3G_LEVEL_B_SMPTE372 58 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_29_97_3G_LEVEL_B_SMPTE274 59 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_29_97_3G_LEVEL_B_SMPTE372 60 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080P_23_98_3G_LEVEL_B_SMPTE274 61 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048P_23_98_3G_LEVEL_B_SMPTE372 62 +#define NV_CTRL_GVIO_VIDEO_FORMAT_1080I_47_96_3G_LEVEL_B_SMPTE274 63 +#define NV_CTRL_GVIO_VIDEO_FORMAT_2048I_47_96_3G_LEVEL_B_SMPTE372 64 + +/* + * The following are deprecated; NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT and the + * corresponding NV_CTRL_GVIO_* formats should be used instead. + */ +#define NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT 70 /* RW- */ + +#define NV_CTRL_GVO_VIDEO_FORMAT_NONE 0 +#define NV_CTRL_GVO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC 1 +#define NV_CTRL_GVO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL 2 +#define NV_CTRL_GVO_VIDEO_FORMAT_720P_59_94_SMPTE296 3 +#define NV_CTRL_GVO_VIDEO_FORMAT_720P_60_00_SMPTE296 4 +#define NV_CTRL_GVO_VIDEO_FORMAT_1035I_59_94_SMPTE260 5 +#define NV_CTRL_GVO_VIDEO_FORMAT_1035I_60_00_SMPTE260 6 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080I_50_00_SMPTE295 7 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080I_50_00_SMPTE274 8 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080I_59_94_SMPTE274 9 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080I_60_00_SMPTE274 10 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080P_23_976_SMPTE274 11 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080P_24_00_SMPTE274 12 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080P_25_00_SMPTE274 13 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080P_29_97_SMPTE274 14 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080P_30_00_SMPTE274 15 +#define NV_CTRL_GVO_VIDEO_FORMAT_720P_50_00_SMPTE296 16 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080I_48_00_SMPTE274 17 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080I_47_96_SMPTE274 18 +#define NV_CTRL_GVO_VIDEO_FORMAT_720P_30_00_SMPTE296 19 +#define NV_CTRL_GVO_VIDEO_FORMAT_720P_29_97_SMPTE296 20 +#define NV_CTRL_GVO_VIDEO_FORMAT_720P_25_00_SMPTE296 21 +#define NV_CTRL_GVO_VIDEO_FORMAT_720P_24_00_SMPTE296 22 +#define NV_CTRL_GVO_VIDEO_FORMAT_720P_23_98_SMPTE296 23 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_25_00_SMPTE274 24 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_29_97_SMPTE274 25 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_30_00_SMPTE274 26 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_24_00_SMPTE274 27 +#define NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_23_98_SMPTE274 28 +#define NV_CTRL_GVO_VIDEO_FORMAT_2048P_30_00_SMPTE372 29 +#define NV_CTRL_GVO_VIDEO_FORMAT_2048P_29_97_SMPTE372 30 +#define NV_CTRL_GVO_VIDEO_FORMAT_2048I_60_00_SMPTE372 31 +#define NV_CTRL_GVO_VIDEO_FORMAT_2048I_59_94_SMPTE372 32 +#define NV_CTRL_GVO_VIDEO_FORMAT_2048P_25_00_SMPTE372 33 +#define NV_CTRL_GVO_VIDEO_FORMAT_2048I_50_00_SMPTE372 34 +#define NV_CTRL_GVO_VIDEO_FORMAT_2048P_24_00_SMPTE372 35 +#define NV_CTRL_GVO_VIDEO_FORMAT_2048P_23_98_SMPTE372 36 +#define NV_CTRL_GVO_VIDEO_FORMAT_2048I_48_00_SMPTE372 37 +#define NV_CTRL_GVO_VIDEO_FORMAT_2048I_47_96_SMPTE372 38 + +/* + * NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT - indicates the input video format + * detected for GVO or GVI devices; the possible values are the + * NV_CTRL_GVIO_VIDEO_FORMAT constants. + * + * For GVI devices, the jack number should be specified in the lower + * 16 bits of the "display_mask" parameter, while the channel number should be + * specified in the upper 16 bits. + */ + +#define NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT 71 /* R--I */ + +/* + * The following is deprecated. Use NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT, + * instead. + */ +#define NV_CTRL_GVO_INPUT_VIDEO_FORMAT 71 /* R-- */ + +/* + * NV_CTRL_GVO_DATA_FORMAT - This controls how the data in the source + * (either the X screen or the GLX pbuffer) is interpretted and + * displayed. + * + * Note: some of the below DATA_FORMATS have been renamed. For + * example, R8G8B8_TO_RGB444 has been renamed to X8X8X8_444_PASSTHRU. + * This is to more accurately reflect DATA_FORMATS where the + * per-channel data could be either RGB or YCrCb -- the point is that + * the driver and GVO hardware do not perform any implicit color space + * conversion on the data; it is passed through to the SDI out. + */ + +#define NV_CTRL_GVO_DATA_FORMAT 72 /* RW- */ +#define NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB444 0 +#define NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4444 1 +#define NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_YCRCBZ4444 2 +#define NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB422 3 +#define NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4224 4 +#define NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_YCRCBZ4224 5 +#define NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_RGB444 6 // renamed +#define NV_CTRL_GVO_DATA_FORMAT_X8X8X8_444_PASSTHRU 6 +#define NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_RGBA4444 7 // renamed +#define NV_CTRL_GVO_DATA_FORMAT_X8X8X8A8_4444_PASSTHRU 7 +#define NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_RGBZ4444 8 // renamed +#define NV_CTRL_GVO_DATA_FORMAT_X8X8X8Z8_4444_PASSTHRU 8 +#define NV_CTRL_GVO_DATA_FORMAT_Y10CR10CB10_TO_YCRCB444 9 // renamed +#define NV_CTRL_GVO_DATA_FORMAT_X10X10X10_444_PASSTHRU 9 +#define NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8_TO_YCRCB444 10 // renamed +#define NV_CTRL_GVO_DATA_FORMAT_X10X8X8_444_PASSTHRU 10 +#define NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8A10_TO_YCRCBA4444 11 // renamed +#define NV_CTRL_GVO_DATA_FORMAT_X10X8X8A10_4444_PASSTHRU 11 +#define NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8Z10_TO_YCRCBZ4444 12 // renamed +#define NV_CTRL_GVO_DATA_FORMAT_X10X8X8Z10_4444_PASSTHRU 12 +#define NV_CTRL_GVO_DATA_FORMAT_DUAL_R8G8B8_TO_DUAL_YCRCB422 13 +#define NV_CTRL_GVO_DATA_FORMAT_DUAL_Y8CR8CB8_TO_DUAL_YCRCB422 14 // renamed +#define NV_CTRL_GVO_DATA_FORMAT_DUAL_X8X8X8_TO_DUAL_422_PASSTHRU 14 +#define NV_CTRL_GVO_DATA_FORMAT_R10G10B10_TO_YCRCB422 15 +#define NV_CTRL_GVO_DATA_FORMAT_R10G10B10_TO_YCRCB444 16 +#define NV_CTRL_GVO_DATA_FORMAT_Y12CR12CB12_TO_YCRCB444 17 // renamed +#define NV_CTRL_GVO_DATA_FORMAT_X12X12X12_444_PASSTHRU 17 +#define NV_CTRL_GVO_DATA_FORMAT_R12G12B12_TO_YCRCB444 18 +#define NV_CTRL_GVO_DATA_FORMAT_X8X8X8_422_PASSTHRU 19 +#define NV_CTRL_GVO_DATA_FORMAT_X8X8X8A8_4224_PASSTHRU 20 +#define NV_CTRL_GVO_DATA_FORMAT_X8X8X8Z8_4224_PASSTHRU 21 +#define NV_CTRL_GVO_DATA_FORMAT_X10X10X10_422_PASSTHRU 22 +#define NV_CTRL_GVO_DATA_FORMAT_X10X8X8_422_PASSTHRU 23 +#define NV_CTRL_GVO_DATA_FORMAT_X10X8X8A10_4224_PASSTHRU 24 +#define NV_CTRL_GVO_DATA_FORMAT_X10X8X8Z10_4224_PASSTHRU 25 +#define NV_CTRL_GVO_DATA_FORMAT_X12X12X12_422_PASSTHRU 26 +#define NV_CTRL_GVO_DATA_FORMAT_R12G12B12_TO_YCRCB422 27 + +/* + * NV_CTRL_GVO_DISPLAY_X_SCREEN - no longer supported + */ + +#define NV_CTRL_GVO_DISPLAY_X_SCREEN 73 /* RW- */ +#define NV_CTRL_GVO_DISPLAY_X_SCREEN_ENABLE 1 +#define NV_CTRL_GVO_DISPLAY_X_SCREEN_DISABLE 0 + +/* + * NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED - indicates whether + * Composite Sync input is detected. + */ + +#define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED 74 /* R-- */ +#define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_FALSE 0 +#define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_TRUE 1 + +/* + * NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE - get/set the + * Composite Sync input detect mode. + */ + +#define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE 75 /* RW- */ +#define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_AUTO 0 +#define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_BI_LEVEL 1 +#define NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_TRI_LEVEL 2 + +/* + * NV_CTRL_GVO_SYNC_INPUT_DETECTED - indicates whether SDI Sync input + * is detected, and what type. + */ + +#define NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED 76 /* R-- */ +#define NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_NONE 0 +#define NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_HD 1 +#define NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_SD 2 + +/* + * NV_CTRL_GVO_VIDEO_OUTPUTS - indicates which GVO video output + * connectors are currently outputing data. + */ + +#define NV_CTRL_GVO_VIDEO_OUTPUTS 77 /* R-- */ +#define NV_CTRL_GVO_VIDEO_OUTPUTS_NONE 0 +#define NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO1 1 +#define NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO2 2 +#define NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO_BOTH 3 + +/* + * NV_CTRL_GVO_FPGA_VERSION - indicates the version of the Firmware on + * the GVO device. Deprecated; use + * NV_CTRL_STRING_GVIO_FIRMWARE_VERSION instead. + */ + +#define NV_CTRL_GVO_FIRMWARE_VERSION 78 /* R-- */ + +/* + * NV_CTRL_GVO_SYNC_DELAY_PIXELS - controls the delay between the + * input sync and the output sync in numbers of pixels from hsync; + * this is a 12 bit value. + * + * If the NV_CTRL_GVO_CAPABILITIES_ADVANCE_SYNC_SKEW bit is set, + * then setting this value will set an advance instead of a delay. + */ + +#define NV_CTRL_GVO_SYNC_DELAY_PIXELS 79 /* RW- */ + +/* + * NV_CTRL_GVO_SYNC_DELAY_LINES - controls the delay between the input + * sync and the output sync in numbers of lines from vsync; this is a + * 12 bit value. + * + * If the NV_CTRL_GVO_CAPABILITIES_ADVANCE_SYNC_SKEW bit is set, + * then setting this value will set an advance instead of a delay. + */ + +#define NV_CTRL_GVO_SYNC_DELAY_LINES 80 /* RW- */ + +/* + * NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE - must be set for a period + * of about 2 seconds for the new InputVideoFormat to be properly + * locked to. In nvidia-settings, we do a reacquire whenever genlock + * or frame lock mode is entered into, when the user clicks the + * "detect" button. This value can be written, but always reads back + * _FALSE. + */ + +#define NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE 81 /* -W- */ +#define NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_FALSE 0 +#define NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_TRUE 1 + +/* + * NV_CTRL_GVO_GLX_LOCKED - indicates that GVO configurability is + * locked by GLX; this occurs when either glXGetVideoDeviceNV (part of + * GLX_NV_video_out) or glXBindVideoDeviceNV (part of + * GLX_NV_present_video) is called. All GVO output resources are + * locked until released by the GLX_NV_video_out/GLX_NV_present_video + * client. + * + * When GVO is locked, setting of the following GVO NV-CONTROL attributes will + * not happen immediately and will instead be cached. The GVO resource will + * need to be disabled/released and re-enabled/claimed for the values to be + * flushed. These attributes are: + * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT + * NV_CTRL_GVO_DATA_FORMAT + * NV_CTRL_GVO_FLIP_QUEUE_SIZE + * + * This attribute is deprecated and may be removed in a future release. Its + * functionality has been replaced by NV_CTRL_GVO_LOCK_OWNER. + */ + +#define NV_CTRL_GVO_GLX_LOCKED 82 /* R-- */ +#define NV_CTRL_GVO_GLX_LOCKED_FALSE 0 +#define NV_CTRL_GVO_GLX_LOCKED_TRUE 1 + +/* + * NV_CTRL_GVIO_VIDEO_FORMAT_{WIDTH,HEIGHT,REFRESH_RATE} - query the + * width, height, and refresh rate for the specified + * NV_CTRL_GVIO_VIDEO_FORMAT_*. So that this can be queried with + * existing interfaces, XNVCTRLQueryAttribute() should be used, and + * the video format specified in the display_mask field; eg: + * + * XNVCTRLQueryAttribute (dpy, + * screen, + * NV_CTRL_GVIO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC, + * NV_CTRL_GVIO_VIDEO_FORMAT_WIDTH, + * &value); + * + * Note that Refresh Rate is in milliHertz values + */ + +#define NV_CTRL_GVIO_VIDEO_FORMAT_WIDTH 83 /* R--I */ +#define NV_CTRL_GVIO_VIDEO_FORMAT_HEIGHT 84 /* R--I */ +#define NV_CTRL_GVIO_VIDEO_FORMAT_REFRESH_RATE 85 /* R--I */ + +/* The following are deprecated; use the NV_CTRL_GVIO_* versions, instead */ +#define NV_CTRL_GVO_VIDEO_FORMAT_WIDTH 83 /* R-- */ +#define NV_CTRL_GVO_VIDEO_FORMAT_HEIGHT 84 /* R-- */ +#define NV_CTRL_GVO_VIDEO_FORMAT_REFRESH_RATE 85 /* R-- */ + +/* + * NV_CTRL_GVO_X_SCREEN_PAN_[XY] - no longer supported + */ + +#define NV_CTRL_GVO_X_SCREEN_PAN_X 86 /* RW- */ +#define NV_CTRL_GVO_X_SCREEN_PAN_Y 87 /* RW- */ + +/* + * NV_CTRL_GPU_OVERCLOCKING_STATE - query the current or set a new + * overclocking state; the value of this attribute controls the + * availability of additional overclocking attributes (see below). + * + * Note: this attribute is unavailable unless overclocking support + * has been enabled in the X server (by the user). + */ + +#define NV_CTRL_GPU_OVERCLOCKING_STATE 88 /* RW-G */ +#define NV_CTRL_GPU_OVERCLOCKING_STATE_NONE 0 +#define NV_CTRL_GPU_OVERCLOCKING_STATE_MANUAL 1 + +/* + * NV_CTRL_GPU_{2,3}D_CLOCK_FREQS - query or set the GPU and memory + * clocks of the device driving the X screen. New clock frequencies + * are tested before being applied, and may be rejected. + * + * Note: if the target clocks are too aggressive, their testing may + * render the system unresponsive. + * + * Note: while this attribute can always be queried, it can't be set + * unless NV_CTRL_GPU_OVERCLOCKING_STATE is set to _MANUAL. Since + * the target clocks may be rejected, the requester should read this + * attribute after the set to determine success or failure. + * + * NV_CTRL_GPU_{2,3}D_CLOCK_FREQS are "packed" integer attributes; the + * GPU clock is stored in the upper 16 bits of the integer, and the + * memory clock is stored in the lower 16 bits of the integer. All + * clock values are in MHz. + */ + +#define NV_CTRL_GPU_2D_CLOCK_FREQS 89 /* RW-G */ +#define NV_CTRL_GPU_3D_CLOCK_FREQS 90 /* RW-G */ + +/* + * NV_CTRL_GPU_DEFAULT_{2,3}D_CLOCK_FREQS - query the default memory + * and GPU core clocks of the device driving the X screen. + * + * NV_CTRL_GPU_DEFAULT_{2,3}D_CLOCK_FREQS are "packed" integer + * attributes; the GPU clock is stored in the upper 16 bits of the + * integer, and the memory clock is stored in the lower 16 bits of the + * integer. All clock values are in MHz. + */ + +#define NV_CTRL_GPU_DEFAULT_2D_CLOCK_FREQS 91 /* R--G */ +#define NV_CTRL_GPU_DEFAULT_3D_CLOCK_FREQS 92 /* R--G */ + +/* + * NV_CTRL_GPU_CURRENT_CLOCK_FREQS - query the current GPU and memory + * clocks of the graphics device driving the X screen. + * + * NV_CTRL_GPU_CURRENT_CLOCK_FREQS is a "packed" integer attribute; + * the GPU clock is stored in the upper 16 bits of the integer, and + * the memory clock is stored in the lower 16 bits of the integer. + * All clock values are in MHz. All clock values are in MHz. + */ + +#define NV_CTRL_GPU_CURRENT_CLOCK_FREQS 93 /* R--G */ + +/* + * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS - Holds the last calculated + * optimal 3D clock frequencies found by the + * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION process. Querying this + * attribute before having probed for the optimal clocks will return + * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_INVALID + * + * Note: unless NV_CTRL_GPU_OVERCLOCKING_STATE is set to _MANUAL, the + * optimal clock detection process is unavailable. + */ + +#define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS 94 /* R--G */ +#define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_INVALID 0 + +/* + * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION - set to _START to + * initiate testing for the optimal 3D clock frequencies. Once + * found, the optimal clock frequencies will be returned by the + * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS attribute asynchronously + * (using an X event, see XNVCtrlSelectNotify). + * + * To cancel an ongoing test for the optimal clocks, set the + * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION attribute to _CANCEL + * + * Note: unless NV_CTRL_GPU_OVERCLOCKING_STATE is set to _MANUAL, the + * optimal clock detection process is unavailable. + */ + +#define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION 95 /* -W-G */ +#define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_START 0 +#define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_CANCEL 1 + +/* + * NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE - query this + * variable to know if a test is currently being run to + * determine the optimal 3D clock frequencies. _BUSY means a + * test is currently running, _IDLE means the test is not running. + * + * Note: unless NV_CTRL_GPU_OVERCLOCKING_STATE is set to _MANUAL, the + * optimal clock detection process is unavailable. + */ + +#define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE 96 /* R--G */ +#define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE_IDLE 0 +#define NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE_BUSY 1 + +/* + * NV_CTRL_FLATPANEL_CHIP_LOCATION - for the specified display device, + * report whether the flat panel is driven by the on-chip controller, + * or a separate controller chip elsewhere on the graphics board. + * This attribute is only available for flat panels. + */ + +#define NV_CTRL_FLATPANEL_CHIP_LOCATION 215 /* R-DG */ +#define NV_CTRL_FLATPANEL_CHIP_LOCATION_INTERNAL 0 +#define NV_CTRL_FLATPANEL_CHIP_LOCATION_EXTERNAL 1 + +/* + * NV_CTRL_FLATPANEL_LINK - report the number of links for a DVI connection, or + * the main link's active lane count for DisplayPort. + * This attribute is only available for flat panels. + */ + +#define NV_CTRL_FLATPANEL_LINK 216 /* R-DG */ +#define NV_CTRL_FLATPANEL_LINK_SINGLE 0 +#define NV_CTRL_FLATPANEL_LINK_DUAL 1 +#define NV_CTRL_FLATPANEL_LINK_QUAD 3 + +/* + * NV_CTRL_FLATPANEL_SIGNAL - for the specified display device, report + * whether the flat panel is driven by an LVDS, TMDS, or DisplayPort signal. + * This attribute is only available for flat panels. + */ + +#define NV_CTRL_FLATPANEL_SIGNAL 217 /* R-DG */ +#define NV_CTRL_FLATPANEL_SIGNAL_LVDS 0 +#define NV_CTRL_FLATPANEL_SIGNAL_TMDS 1 +#define NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT 2 + +/* + * NV_CTRL_USE_HOUSE_SYNC - when TRUE, the server (master) frame lock + * device will propagate the incoming house sync signal as the outgoing + * frame lock sync signal. If the frame lock device cannot detect a + * frame lock sync signal, it will default to using the internal timings + * from the GPU connected to the primary connector. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_FRAMELOCK or NV_CTRL_TARGET_TYPE_X_SCREEN + * target. + */ + +#define NV_CTRL_USE_HOUSE_SYNC 218 /* RW-F */ +#define NV_CTRL_USE_HOUSE_SYNC_FALSE 0 +#define NV_CTRL_USE_HOUSE_SYNC_TRUE 1 + +/* + * NV_CTRL_EDID_AVAILABLE - report if an EDID is available for the + * specified display device. + * + * This attribute may also be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN + * target. + */ + +#define NV_CTRL_EDID_AVAILABLE 219 /* R-DG */ +#define NV_CTRL_EDID_AVAILABLE_FALSE 0 +#define NV_CTRL_EDID_AVAILABLE_TRUE 1 + +/* + * NV_CTRL_FORCE_STEREO - when TRUE, OpenGL will force stereo flipping + * even when no stereo drawables are visible (if the device is configured + * to support it, see the "Stereo" X config option). + * When false, fall back to the default behavior of only flipping when a + * stereo drawable is visible. + */ + +#define NV_CTRL_FORCE_STEREO 220 /* RW- */ +#define NV_CTRL_FORCE_STEREO_FALSE 0 +#define NV_CTRL_FORCE_STEREO_TRUE 1 + +/* + * NV_CTRL_IMAGE_SETTINGS - the image quality setting for OpenGL clients. + * + * This setting is only applied to OpenGL clients that are started + * after this setting is applied. + */ + +#define NV_CTRL_IMAGE_SETTINGS 221 /* RW-X */ +#define NV_CTRL_IMAGE_SETTINGS_HIGH_QUALITY 0 +#define NV_CTRL_IMAGE_SETTINGS_QUALITY 1 +#define NV_CTRL_IMAGE_SETTINGS_PERFORMANCE 2 +#define NV_CTRL_IMAGE_SETTINGS_HIGH_PERFORMANCE 3 + +/* + * NV_CTRL_XINERAMA - return whether xinerama is enabled + */ + +#define NV_CTRL_XINERAMA 222 /* R--G */ +#define NV_CTRL_XINERAMA_OFF 0 +#define NV_CTRL_XINERAMA_ON 1 + +/* + * NV_CTRL_XINERAMA_STEREO - when TRUE, OpenGL will allow stereo flipping + * on multiple X screens configured with Xinerama. + * When FALSE, flipping is allowed only on one X screen at a time. + */ + +#define NV_CTRL_XINERAMA_STEREO 223 /* RW- */ +#define NV_CTRL_XINERAMA_STEREO_FALSE 0 +#define NV_CTRL_XINERAMA_STEREO_TRUE 1 + +/* + * NV_CTRL_BUS_RATE - if the bus type of the specified device is AGP, then + * NV_CTRL_BUS_RATE returns the configured AGP transfer rate. If the bus type + * is PCI Express, then this attribute returns the maximum link width. + * When this attribute is queried on an X screen target, the bus rate of the + * GPU driving the X screen is returned. + */ + +#define NV_CTRL_BUS_RATE 224 /* R--GI */ + +/* + * NV_CTRL_GPU_PCIE_MAX_LINK_WIDTH - returns the maximum + * PCIe link width, in number of lanes. + */ +#define NV_CTRL_GPU_PCIE_MAX_LINK_WIDTH NV_CTRL_BUS_RATE + +/* + * NV_CTRL_SHOW_SLI_HUD - when TRUE, OpenGL will draw information about the + * current SLI mode. + * Renamed this attribute to NV_CTRL_SHOW_SLI_VISUAL_INDICATOR + */ + +#define NV_CTRL_SHOW_SLI_HUD NV_CTRL_SHOW_SLI_VISUAL_INDICATOR +#define NV_CTRL_SHOW_SLI_HUD_FALSE NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_FALSE +#define NV_CTRL_SHOW_SLI_HUD_TRUE NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_TRUE + +/* + * NV_CTRL_SHOW_SLI_VISUAL_INDICATOR - when TRUE, OpenGL will draw information + * about the current SLI mode. + */ + +#define NV_CTRL_SHOW_SLI_VISUAL_INDICATOR 225 /* RW-X */ +#define NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_FALSE 0 +#define NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_TRUE 1 + +/* + * NV_CTRL_XV_SYNC_TO_DISPLAY - this control is valid when TwinView and + * XVideo Sync To VBlank are enabled. + * It controls which display device will be synched to. + */ + +#define NV_CTRL_XV_SYNC_TO_DISPLAY 226 /* RW- */ + +/* + * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2 - this attribute is only + * intended to be used to query the ValidValues for + * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for VIDEO_FORMAT values between + * 31 and 63. See NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for details. + */ + +#define NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2 227 /* ---GI */ + +/* + * The following is deprecated; use NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2, + * instead + */ +#define NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT2 227 /* --- */ + +/* + * NV_CTRL_GVO_OVERRIDE_HW_CSC - Override the SDI hardware's Color Space + * Conversion with the values controlled through + * XNVCTRLSetGvoColorConversion() and XNVCTRLGetGvoColorConversion(). If + * this attribute is FALSE, then the values specified through + * XNVCTRLSetGvoColorConversion() are ignored. + */ + +#define NV_CTRL_GVO_OVERRIDE_HW_CSC 228 /* RW- */ +#define NV_CTRL_GVO_OVERRIDE_HW_CSC_FALSE 0 +#define NV_CTRL_GVO_OVERRIDE_HW_CSC_TRUE 1 + +/* + * NV_CTRL_GVO_CAPABILITIES - this read-only attribute describes GVO + * capabilities that differ between NVIDIA SDI products. This value + * is a bitmask where each bit indicates whether that capability is + * available. + * + * APPLY_CSC_IMMEDIATELY - whether the CSC matrix, offset, and scale + * specified through XNVCTRLSetGvoColorConversion() will take affect + * immediately, or only after SDI output is disabled and enabled + * again. + * + * APPLY_CSC_TO_X_SCREEN - whether the CSC matrix, offset, and scale + * specified through XNVCTRLSetGvoColorConversion() will also apply + * to GVO output of an X screen, or only to OpenGL GVO output, as + * enabled through the GLX_NV_video_out extension. + * + * COMPOSITE_TERMINATION - whether the 75 ohm termination of the + * SDI composite input signal can be programmed through the + * NV_CTRL_GVO_COMPOSITE_TERMINATION attribute. + * + * SHARED_SYNC_BNC - whether the SDI device has a single BNC + * connector used for both (SDI & Composite) incoming signals. + * + * MULTIRATE_SYNC - whether the SDI device supports synchronization + * of input and output video modes that match in being odd or even + * modes (ie, AA.00 Hz modes can be synched to other BB.00 Hz modes and + * AA.XX Hz can match to BB.YY Hz where .XX and .YY are not .00) + */ + +#define NV_CTRL_GVO_CAPABILITIES 229 /* R-- */ +#define NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_IMMEDIATELY 0x00000001 +#define NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_TO_X_SCREEN 0x00000002 +#define NV_CTRL_GVO_CAPABILITIES_COMPOSITE_TERMINATION 0x00000004 +#define NV_CTRL_GVO_CAPABILITIES_SHARED_SYNC_BNC 0x00000008 +#define NV_CTRL_GVO_CAPABILITIES_MULTIRATE_SYNC 0x00000010 +#define NV_CTRL_GVO_CAPABILITIES_ADVANCE_SYNC_SKEW 0x00000020 + +/* + * NV_CTRL_GVO_COMPOSITE_TERMINATION - enable or disable 75 ohm + * termination of the SDI composite input signal. + */ + +#define NV_CTRL_GVO_COMPOSITE_TERMINATION 230 /* RW- */ +#define NV_CTRL_GVO_COMPOSITE_TERMINATION_ENABLE 1 +#define NV_CTRL_GVO_COMPOSITE_TERMINATION_DISABLE 0 + +/* + * NV_CTRL_ASSOCIATED_DISPLAY_DEVICES - display device mask indicating + * which display devices are "associated" with the specified X screen + * (ie: are available to the X screen for displaying the X screen). + */ + +#define NV_CTRL_ASSOCIATED_DISPLAY_DEVICES 231 /* RW- */ + +/* + * NV_CTRL_FRAMELOCK_SLAVES - get/set whether the display device(s) + * given should listen or ignore the master's sync signal. + * + * This attribute can only be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be + * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN. + */ + +#define NV_CTRL_FRAMELOCK_SLAVES 232 /* RW-G */ + +/* + * NV_CTRL_FRAMELOCK_MASTERABLE - Can any of the given display devices + * be set as master of the frame lock group. Returns a bitmask of the + * corresponding display devices that can be set as master. + * + * This attribute can only be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be + * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN. + */ + +#define NV_CTRL_FRAMELOCK_MASTERABLE 233 /* R-DG */ + +/* + * NV_CTRL_PROBE_DISPLAYS - re-probes the hardware to detect what + * display devices are connected to the GPU or GPU driving the + * specified X screen. Returns a display mask. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_PROBE_DISPLAYS 234 /* R--G */ + +/* + * NV_CTRL_REFRESH_RATE - Returns the refresh rate of the specified + * display device in 100 * Hz (ie. to get the refresh rate in Hz, divide + * the returned value by 100.) + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_REFRESH_RATE 235 /* R-DG */ + +/* + * NV_CTRL_GVO_FLIP_QUEUE_SIZE - The Graphics to Video Out interface + * exposed through NV-CONTROL and the GLX_NV_video_out extension uses + * an internal flip queue when pbuffers are sent to the video device + * (via glXSendPbufferToVideoNV()). The NV_CTRL_GVO_FLIP_QUEUE_SIZE + * can be used to query and assign the flip queue size. This + * attribute is applied to GLX when glXGetVideoDeviceNV() is called by + * the application. + */ + +#define NV_CTRL_GVO_FLIP_QUEUE_SIZE 236 /* RW- */ + +/* + * NV_CTRL_CURRENT_SCANLINE - query the current scanline for the + * specified display device. + */ + +#define NV_CTRL_CURRENT_SCANLINE 237 /* R-DG */ + +/* + * NV_CTRL_INITIAL_PIXMAP_PLACEMENT - Controls where X pixmaps are initially + * created. + * + * NV_CTRL_INITIAL_PIXMAP_PLACEMENT_FORCE_SYSMEM causes pixmaps to stay in + * system memory. These pixmaps can't be accelerated by the NVIDIA driver; this + * will cause blank windows if used with an OpenGL compositing manager. + * NV_CTRL_INITIAL_PIXMAP_PLACEMENT_SYSMEM creates pixmaps in system memory + * initially, but allows them to migrate to video memory. + * NV_CTRL_INITIAL_PIXMAP_PLACEMENT_VIDMEM creates pixmaps in video memory + * when enough resources are available. + * NV_CTRL_INITIAL_PIXMAP_PLACEMENT_RESERVED is currently reserved for future + * use. Behavior is undefined. + * NV_CTRL_INITIAL_PIXMAP_PLACEMENT_GPU_SYSMEM creates pixmaps in GPU accessible + * system memory when enough resources are available. + */ + +#define NV_CTRL_INITIAL_PIXMAP_PLACEMENT 238 /* RW- */ +#define NV_CTRL_INITIAL_PIXMAP_PLACEMENT_FORCE_SYSMEM 0 +#define NV_CTRL_INITIAL_PIXMAP_PLACEMENT_SYSMEM 1 +#define NV_CTRL_INITIAL_PIXMAP_PLACEMENT_VIDMEM 2 +#define NV_CTRL_INITIAL_PIXMAP_PLACEMENT_RESERVED 3 +#define NV_CTRL_INITIAL_PIXMAP_PLACEMENT_GPU_SYSMEM 4 + +/* + * NV_CTRL_PCI_BUS - Returns the PCI bus number the specified device is using. + */ + +#define NV_CTRL_PCI_BUS 239 /* R--GI */ + +/* + * NV_CTRL_PCI_DEVICE - Returns the PCI device number the specified device is + * using. + */ + +#define NV_CTRL_PCI_DEVICE 240 /* R--GI */ + +/* + * NV_CTRL_PCI_FUNCTION - Returns the PCI function number the specified device + * is using. + */ + +#define NV_CTRL_PCI_FUNCTION 241 /* R--GI */ + +/* + * NV_CTRL_FRAMELOCK_FPGA_REVISION - Querys the FPGA revision of the + * Frame Lock device. + * + * This attribute must be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_FRAMELOCK target. + */ + +#define NV_CTRL_FRAMELOCK_FPGA_REVISION 242 /* R--F */ + +/* + * NV_CTRL_MAX_SCREEN_{WIDTH,HEIGHT} - the maximum allowable size, in + * pixels, of either the specified X screen (if the target_type of the + * query is an X screen), or any X screen on the specified GPU (if the + * target_type of the query is a GPU). + */ + +#define NV_CTRL_MAX_SCREEN_WIDTH 243 /* R--G */ +#define NV_CTRL_MAX_SCREEN_HEIGHT 244 /* R--G */ + +/* + * NV_CTRL_MAX_DISPLAYS - the maximum number of display devices that + * can be driven simultaneously on a GPU (e.g., that can be used in a + * MetaMode at once). Note that this does not indicate the maximum + * number of bits that can be set in NV_CTRL_CONNECTED_DISPLAYS, + * because more display devices can be connected than are actively in + * use. + */ + +#define NV_CTRL_MAX_DISPLAYS 245 /* R--G */ + +/* + * NV_CTRL_DYNAMIC_TWINVIEW - Returns whether or not the screen + * supports dynamic twinview. + */ + +#define NV_CTRL_DYNAMIC_TWINVIEW 246 /* R-- */ + +/* + * NV_CTRL_MULTIGPU_DISPLAY_OWNER - Returns the (NV-CONTROL) GPU ID of + * the GPU that has the display device(s) used for showing the X Screen. + */ + +#define NV_CTRL_MULTIGPU_DISPLAY_OWNER 247 /* R-- */ + +/* + * NV_CTRL_GPU_SCALING - not supported + */ + +#define NV_CTRL_GPU_SCALING 248 /* RWDG */ + +#define NV_CTRL_GPU_SCALING_TARGET_INVALID 0 +#define NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT 1 +#define NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE 2 + +#define NV_CTRL_GPU_SCALING_METHOD_INVALID 0 +#define NV_CTRL_GPU_SCALING_METHOD_STRETCHED 1 +#define NV_CTRL_GPU_SCALING_METHOD_CENTERED 2 +#define NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED 3 + +/* + * NV_CTRL_FRONTEND_RESOLUTION - not supported + */ + +#define NV_CTRL_FRONTEND_RESOLUTION 249 /* R-DG */ + +/* + * NV_CTRL_BACKEND_RESOLUTION - not supported + */ + +#define NV_CTRL_BACKEND_RESOLUTION 250 /* R-DG */ + +/* + * NV_CTRL_FLATPANEL_NATIVE_RESOLUTION - Returns the dimensions of the + * native resolution of the flat panel as determined by the + * NVIDIA X Driver. + * + * The native resolution is the resolution at which a flat panel + * must display any image. All other resolutions must be scaled to this + * resolution through GPU scaling or the DFP's native scaling capabilities + * in order to be displayed. + * + * This attribute is only valid for flat panel (DFP) display devices. + * + * This attribute is a packed integer; the width is packed in the upper + * 16-bits and the height is packed in the lower 16-bits. + */ + +#define NV_CTRL_FLATPANEL_NATIVE_RESOLUTION 251 /* R-DG */ + +/* + * NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION - not supported + */ + +#define NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION 252 /* R-DG */ + +/* + * NV_CTRL_GPU_SCALING_ACTIVE - not supported + */ + +#define NV_CTRL_GPU_SCALING_ACTIVE 253 /* R-DG */ + +/* + * NV_CTRL_DFP_SCALING_ACTIVE - not supported + */ + +#define NV_CTRL_DFP_SCALING_ACTIVE 254 /* R-DG */ + +/* + * NV_CTRL_FSAA_APPLICATION_ENHANCED - Controls how the NV_CTRL_FSAA_MODE + * is applied when NV_CTRL_FSAA_APPLICATION_CONTROLLED is set to + * NV_CTRL_APPLICATION_CONTROLLED_DISABLED. When + * NV_CTRL_FSAA_APPLICATION_ENHANCED is _DISABLED, OpenGL applications will + * be forced to use the FSAA mode specified by NV_CTRL_FSAA_MODE. when set + * to _ENABLED, only those applications that have selected a multisample + * FBConfig will be made to use the NV_CTRL_FSAA_MODE specified. + * + * This attribute is ignored when NV_CTRL_FSAA_APPLICATION_CONTROLLED is + * set to NV_CTRL_FSAA_APPLICATION_CONTROLLED_ENABLED. + */ + +#define NV_CTRL_FSAA_APPLICATION_ENHANCED 255 /* RW-X */ +#define NV_CTRL_FSAA_APPLICATION_ENHANCED_ENABLED 1 +#define NV_CTRL_FSAA_APPLICATION_ENHANCED_DISABLED 0 + +/* + * NV_CTRL_FRAMELOCK_SYNC_RATE_4 - This is the refresh rate that the + * frame lock board is sending to the GPU with 4 digits of precision. + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_FRAMELOCK. + */ + +#define NV_CTRL_FRAMELOCK_SYNC_RATE_4 256 /* R--F */ + +/* + * NV_CTRL_GVO_LOCK_OWNER - indicates that the GVO device is available + * or in use (by GLX or an X screen). + * + * The GVO device is locked by GLX when either glXGetVideoDeviceNV + * (part of GLX_NV_video_out) or glXBindVideoDeviceNV (part of + * GLX_NV_present_video) is called. All GVO output resources are + * locked until released by the GLX_NV_video_out/GLX_NV_present_video + * client. + * + * The GVO device is locked/unlocked by an X screen, when the GVO device is + * used in a MetaMode on an X screen. + * + * When the GVO device is locked, setting of the following GVO NV-CONTROL + * attributes will not happen immediately and will instead be cached. The + * GVO resource will need to be disabled/released and re-enabled/claimed for + * the values to be flushed. These attributes are: + * + * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT + * NV_CTRL_GVO_DATA_FORMAT + * NV_CTRL_GVO_FLIP_QUEUE_SIZE + */ + +#define NV_CTRL_GVO_LOCK_OWNER 257 /* R-- */ +#define NV_CTRL_GVO_LOCK_OWNER_NONE 0 +#define NV_CTRL_GVO_LOCK_OWNER_GLX 1 +#define NV_CTRL_GVO_LOCK_OWNER_CLONE /* no longer supported */ 2 +#define NV_CTRL_GVO_LOCK_OWNER_X_SCREEN 3 + +/* + * NV_CTRL_HWOVERLAY - when a workstation overlay is in use, reports + * whether the hardware overlay is used, or if the overlay is emulated. + */ + +#define NV_CTRL_HWOVERLAY 258 /* R-- */ +#define NV_CTRL_HWOVERLAY_FALSE 0 +#define NV_CTRL_HWOVERLAY_TRUE 1 + +/* + * NV_CTRL_NUM_GPU_ERRORS_RECOVERED - Returns the number of GPU errors + * occured. This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_NUM_GPU_ERRORS_RECOVERED 259 /* R--- */ + +/* + * NV_CTRL_REFRESH_RATE_3 - Returns the refresh rate of the specified + * display device in 1000 * Hz (ie. to get the refresh rate in Hz, divide + * the returned value by 1000.) + * + * This attribute may be queried through XNVCTRLQueryTargetAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_REFRESH_RATE_3 260 /* R-DG */ + +/* + * NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS - if the OnDemandVBlankInterrupts + * X driver option is set to true, this attribute can be used to + * determine if on-demand VBlank interrupt control is enabled on the + * specified GPU, as well as to enable or disable this feature. + */ + +#define NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS 261 /* RW-G */ +#define NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS_OFF 0 +#define NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS_ON 1 + +/* + * NV_CTRL_GPU_POWER_SOURCE reports the type of power source + * of the GPU driving the X screen. + */ + +#define NV_CTRL_GPU_POWER_SOURCE 262 /* R--G */ +#define NV_CTRL_GPU_POWER_SOURCE_AC 0 +#define NV_CTRL_GPU_POWER_SOURCE_BATTERY 1 + +/* + * NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE is deprecated + */ + +#define NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE 263 /* R--G */ +#define NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE_DESKTOP 0 +#define NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE_MAXPERF 1 + +/* NV_CTRL_GLYPH_CACHE - Enables RENDER Glyph Caching to VRAM */ + +#define NV_CTRL_GLYPH_CACHE 264 /* RW- */ +#define NV_CTRL_GLYPH_CACHE_DISABLED 0 +#define NV_CTRL_GLYPH_CACHE_ENABLED 1 + +/* + * NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL reports the current + * Performance level of the GPU driving the X screen. Each + * Performance level has associated NVClock and Mem Clock values. + */ + +#define NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL 265 /* R--G */ + +/* + * NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE reports if Adaptive Clocking + * is Enabled on the GPU driving the X screen. + */ + +#define NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE 266 /* R--G */ +#define NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_DISABLED 0 +#define NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_ENABLED 1 + +/* + * NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED - Returns whether or not the GVO output + * video is locked to the GPU. + */ + +#define NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED 267 /* R--- */ +#define NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_FALSE 0 +#define NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_TRUE 1 + +/* + * NV_CTRL_GVO_SYNC_LOCK_STATUS - Returns whether or not the GVO device + * is locked to the input ref signal. If the sync mode is set to + * NV_CTRL_GVO_SYNC_MODE_GENLOCK, then this returns the genlock + * sync status, and if the sync mode is set to NV_CTRL_GVO_SYNC_MODE_FRAMELOCK, + * then this reports the frame lock status. + */ + +#define NV_CTRL_GVO_SYNC_LOCK_STATUS 268 /* R--- */ +#define NV_CTRL_GVO_SYNC_LOCK_STATUS_UNLOCKED 0 +#define NV_CTRL_GVO_SYNC_LOCK_STATUS_LOCKED 1 + +/* + * NV_CTRL_GVO_ANC_TIME_CODE_GENERATION - Allows SDI device to generate + * time codes in the ANC region of the SDI video output stream. + */ + +#define NV_CTRL_GVO_ANC_TIME_CODE_GENERATION 269 /* RW-- */ +#define NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_DISABLE 0 +#define NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_ENABLE 1 + +/* + * NV_CTRL_GVO_COMPOSITE - Enables/Disables SDI compositing. This attribute + * is only available when an SDI input source is detected and is in genlock + * mode. + */ + +#define NV_CTRL_GVO_COMPOSITE 270 /* RW-- */ +#define NV_CTRL_GVO_COMPOSITE_DISABLE 0 +#define NV_CTRL_GVO_COMPOSITE_ENABLE 1 + +/* + * NV_CTRL_GVO_COMPOSITE_ALPHA_KEY - When compositing is enabled, this + * enables/disables alpha blending. + */ + +#define NV_CTRL_GVO_COMPOSITE_ALPHA_KEY 271 /* RW-- */ +#define NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_DISABLE 0 +#define NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_ENABLE 1 + +/* + * NV_CTRL_GVO_COMPOSITE_LUMA_KEY_RANGE - Set the values of a luma + * channel range. This is a packed int that has the following format + * (in order of high-bits to low bits): + * + * Range # (11 bits), (Enabled 1 bit), min value (10 bits), max value (10 bits) + * + * To query the current values, pass the range # throught the display_mask + * variable. + */ + +#define NV_CTRL_GVO_COMPOSITE_LUMA_KEY_RANGE 272 /* RW-- */ + +#define NV_CTRL_GVO_COMPOSITE_MAKE_RANGE(range, enable, min, max) \ + ((((min)&0x3FF) << 0) | (((max)&0x3FF) << 10) | (((enable)&0x1) << 20) | \ + (((range)&0x7FF) << 21)) + +#define NV_CTRL_GVO_COMPOSITE_GET_RANGE(val, range, enable, min, max) \ + (min) = ((val) >> 0) & 0x3FF; \ + (max) = ((val) >> 10) & 0x3FF; \ + (enable) = ((val) >> 20) & 0x1; \ + (range) = ((val) >> 21) & 0x7FF; + +/* + * NV_CTRL_GVO_COMPOSITE_CR_KEY_RANGE - Set the values of a CR + * channel range. This is a packed int that has the following format + * (in order of high-bits to low bits): + * + * Range # (11 bits), (Enabled 1 bit), min value (10 bits), max value (10 bits) + * + * To query the current values, pass the range # throught he display_mask + * variable. + */ + +#define NV_CTRL_GVO_COMPOSITE_CR_KEY_RANGE 273 /* RW-- */ + +/* + * NV_CTRL_GVO_COMPOSITE_CB_KEY_RANGE - Set the values of a CB + * channel range. This is a packed int that has the following format + * (in order of high-bits to low bits): + * + * Range # (11 bits), (Enabled 1 bit), min value (10 bits), max value (10 bits) + * + * To query the current values, pass the range # throught he display_mask + * variable. + */ + +#define NV_CTRL_GVO_COMPOSITE_CB_KEY_RANGE 274 /* RW-- */ + +/* + * NV_CTRL_GVO_COMPOSITE_NUM_KEY_RANGES - Returns the number of ranges + * available for each channel (Y/Luma, Cr, and Cb.) + */ + +#define NV_CTRL_GVO_COMPOSITE_NUM_KEY_RANGES 275 /* R--- */ + +/* + * NV_CTRL_SWITCH_TO_DISPLAYS - Can be used to select which displays + * to switch to (as a hotkey event). + */ + +#define NV_CTRL_SWITCH_TO_DISPLAYS 276 /* -W- */ + +/* + * NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT - Event that notifies + * when a notebook lid change occurs (i.e. when the lid is opened or + * closed.) This attribute can be queried to retrieve the current + * notebook lid status (opened/closed.) + */ + +#define NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT 277 /* RW- */ +#define NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT_CLOSE 0 +#define NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT_OPEN 1 + +/* + * NV_CTRL_NOTEBOOK_INTERNAL_LCD - Returns the display device mask of + * the intenal LCD of a notebook. + */ + +#define NV_CTRL_NOTEBOOK_INTERNAL_LCD 278 /* R-- */ + +/* + * NV_CTRL_DEPTH_30_ALLOWED - returns whether the NVIDIA X driver supports + * depth 30 on the specified X screen or GPU. + */ + +#define NV_CTRL_DEPTH_30_ALLOWED 279 /* R--G */ + +/* + * NV_CTRL_MODE_SET_EVENT This attribute is sent as an event + * when hotkey, ctrl-alt-+/- or randr event occurs. Note that + * This attribute cannot be set or queried and is meant to + * be received by clients that wish to be notified of when + * mode set events occur. + */ + +#define NV_CTRL_MODE_SET_EVENT 280 /* --- */ + +/* + * NV_CTRL_OPENGL_AA_LINE_GAMMA_VALUE - the gamma value used by + * OpenGL when NV_CTRL_OPENGL_AA_LINE_GAMMA is enabled + */ + +#define NV_CTRL_OPENGL_AA_LINE_GAMMA_VALUE 281 /* RW-X */ + +/* + * NV_CTRL_VCSC_HIGH_PERF_MODE - Is used to both query High Performance Mode + * status on the Visual Computing System, and also to enable or disable High + * Performance Mode. + */ + +#define NV_CTRL_VCSC_HIGH_PERF_MODE 282 /* RW-V */ +#define NV_CTRL_VCSC_HIGH_PERF_MODE_DISABLE 0 +#define NV_CTRL_VCSC_HIGH_PERF_MODE_ENABLE 1 + +/* + * NV_CTRL_DISPLAYPORT_LINK_RATE - returns the negotiated lane bandwidth of the + * DisplayPort main link. + * This attribute is only available for DisplayPort flat panels. + */ + +#define NV_CTRL_DISPLAYPORT_LINK_RATE 291 /* R-DG */ +#define NV_CTRL_DISPLAYPORT_LINK_RATE_DISABLED 0x0 +#define NV_CTRL_DISPLAYPORT_LINK_RATE_1_62GBPS 0x6 +#define NV_CTRL_DISPLAYPORT_LINK_RATE_2_70GBPS 0xA + +/* + * NV_CTRL_STEREO_EYES_EXCHANGE - Controls whether or not the left and right + * eyes of a stereo image are flipped. + */ + +#define NV_CTRL_STEREO_EYES_EXCHANGE 292 /* RW-X */ +#define NV_CTRL_STEREO_EYES_EXCHANGE_OFF 0 +#define NV_CTRL_STEREO_EYES_EXCHANGE_ON 1 + +/* + * NV_CTRL_NO_SCANOUT - returns whether the special "NoScanout" mode is + * enabled on the specified X screen or GPU; for details on this mode, + * see the description of the "none" value for the "UseDisplayDevice" + * X configuration option in the NVIDIA driver README. + */ + +#define NV_CTRL_NO_SCANOUT 293 /* R--G */ +#define NV_CTRL_NO_SCANOUT_DISABLED 0 +#define NV_CTRL_NO_SCANOUT_ENABLED 1 + +/* + * NV_CTRL_GVO_CSC_CHANGED_EVENT This attribute is sent as an event + * when the color space conversion matrix has been altered by another + * client. + */ + +#define NV_CTRL_GVO_CSC_CHANGED_EVENT 294 /* --- */ + +/* + * NV_CTRL_FRAMELOCK_SLAVEABLE - Returns a bitmask of the display devices + * that are (currently) allowed to be selected as slave devices for the + * given GPU + */ + +#define NV_CTRL_FRAMELOCK_SLAVEABLE 295 /* R-DG */ + +/* + * NV_CTRL_GVO_SYNC_TO_DISPLAY This attribute controls whether or not + * the non-SDI display device will be sync'ed to the SDI display device + * (when configured in TwinView, Clone Mode or when using the SDI device + * with OpenGL). + */ + +#define NV_CTRL_GVO_SYNC_TO_DISPLAY 296 /* --- */ +#define NV_CTRL_GVO_SYNC_TO_DISPLAY_DISABLE 0 +#define NV_CTRL_GVO_SYNC_TO_DISPLAY_ENABLE 1 + +/* + * NV_CTRL_X_SERVER_UNIQUE_ID - returns a pseudo-unique identifier for this + * X server. Intended for use in cases where an NV-CONTROL client communicates + * with multiple X servers, and wants some level of confidence that two + * X Display connections correspond to the same or different X servers. + */ + +#define NV_CTRL_X_SERVER_UNIQUE_ID 297 /* R--- */ + +/* + * NV_CTRL_PIXMAP_CACHE - This attribute controls whether the driver attempts to + * store video memory pixmaps in a cache. The cache speeds up allocation and + * deallocation of pixmaps, but could use more memory than when the cache is + * disabled. + */ + +#define NV_CTRL_PIXMAP_CACHE 298 /* RW-X */ +#define NV_CTRL_PIXMAP_CACHE_DISABLE 0 +#define NV_CTRL_PIXMAP_CACHE_ENABLE 1 + +/* + * NV_CTRL_PIXMAP_CACHE_ROUNDING_SIZE_KB - When the pixmap cache is enabled and + * there is not enough free space in the cache to fit a new pixmap, the driver + * will round up to the next multiple of this number of kilobytes when + * allocating more memory for the cache. + */ + +#define NV_CTRL_PIXMAP_CACHE_ROUNDING_SIZE_KB 299 /* RW-X */ + +/* + * NV_CTRL_IS_GVO_DISPLAY - returns whether or not a given display is an + * SDI device. + */ + +#define NV_CTRL_IS_GVO_DISPLAY 300 /* R-D */ +#define NV_CTRL_IS_GVO_DISPLAY_FALSE 0 +#define NV_CTRL_IS_GVO_DISPLAY_TRUE 1 + +/* + * NV_CTRL_PCI_ID - Returns the PCI vendor and device ID of the specified + * device. + * + * NV_CTRL_PCI_ID is a "packed" integer attribute; the PCI vendor ID is stored + * in the upper 16 bits of the integer, and the PCI device ID is stored in the + * lower 16 bits of the integer. + */ + +#define NV_CTRL_PCI_ID 301 /* R--GI */ + +/* + * NV_CTRL_GVO_FULL_RANGE_COLOR - Allow full range color data [4-1019] + * without clamping to [64-940]. + */ + +#define NV_CTRL_GVO_FULL_RANGE_COLOR 302 /* RW- */ +#define NV_CTRL_GVO_FULL_RANGE_COLOR_DISABLED 0 +#define NV_CTRL_GVO_FULL_RANGE_COLOR_ENABLED 1 + +/* + * NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE - Returns whether or not + * SLI Mosaic Mode supported. + */ + +#define NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE 303 /* R-- */ +#define NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE_FALSE 0 +#define NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE_TRUE 1 + +/* + * NV_CTRL_GVO_ENABLE_RGB_DATA - Allows clients to specify when + * the GVO board should process colors as RGB when the output data + * format is one of the NV_CTRL_GVO_DATA_FORMAT_???_PASSTRHU modes. + */ + +#define NV_CTRL_GVO_ENABLE_RGB_DATA 304 /* RW- */ +#define NV_CTRL_GVO_ENABLE_RGB_DATA_DISABLE 0 +#define NV_CTRL_GVO_ENABLE_RGB_DATA_ENABLE 1 + +/* + * NV_CTRL_IMAGE_SHARPENING_DEFAULT - Returns default value of + * Image Sharpening. + */ + +#define NV_CTRL_IMAGE_SHARPENING_DEFAULT 305 /* R-- */ + +/* + * NV_CTRL_PCI_DOMAIN - Returns the PCI domain number the specified device is + * using. + */ + +#define NV_CTRL_PCI_DOMAIN 306 /* R--GI */ + +/* + * NV_CTRL_GVI_NUM_JACKS - Returns the number of input BNC jacks available + * on a GVI device. + */ + +#define NV_CTRL_GVI_NUM_JACKS 307 /* R--I */ + +/* + * NV_CTRL_GVI_MAX_LINKS_PER_STREAM - Returns the maximum supported number of + * links that can be tied to one stream. + */ + +#define NV_CTRL_GVI_MAX_LINKS_PER_STREAM 308 /* R--I */ + +/* + * NV_CTRL_GVI_DETECTED_CHANNEL_BITS_PER_COMPONENT - Returns the detected + * number of bits per component (BPC) of data on the given input jack+ + * channel. + * + * The jack number should be specified in the lower 16 bits of the + * "display_mask" parameter, while the channel number should be specified in + * the upper 16 bits. + */ + +#define NV_CTRL_GVI_DETECTED_CHANNEL_BITS_PER_COMPONENT 309 /* R--I */ +#define NV_CTRL_GVI_BITS_PER_COMPONENT_UNKNOWN 0 +#define NV_CTRL_GVI_BITS_PER_COMPONENT_8 1 +#define NV_CTRL_GVI_BITS_PER_COMPONENT_10 2 +#define NV_CTRL_GVI_BITS_PER_COMPONENT_12 3 + +/* + * NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT - Specify the number of + * bits per component (BPC) of data for the captured stream. + * The stream number should be specified in the "display_mask" parameter. + * + * Note: Setting this attribute may also result in the following + * NV-CONTROL attributes being reset on the GVI device (to ensure + * the configuration remains valid): + * NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING + */ + +#define NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT 310 /* RW-I */ + +/* + * NV_CTRL_GVI_DETECTED_CHANNEL_COMPONENT_SAMPLING - Returns the detected + * sampling format for the input jack+channel. + * + * The jack number should be specified in the lower 16 bits of the + * "display_mask" parameter, while the channel number should be specified in + * the upper 16 bits. + */ + +#define NV_CTRL_GVI_DETECTED_CHANNEL_COMPONENT_SAMPLING 311 /* R--I */ +#define NV_CTRL_GVI_COMPONENT_SAMPLING_UNKNOWN 0 +#define NV_CTRL_GVI_COMPONENT_SAMPLING_4444 1 +#define NV_CTRL_GVI_COMPONENT_SAMPLING_4224 2 +#define NV_CTRL_GVI_COMPONENT_SAMPLING_444 3 +#define NV_CTRL_GVI_COMPONENT_SAMPLING_422 4 +#define NV_CTRL_GVI_COMPONENT_SAMPLING_420 5 + +/* + * NV_CTRL_GVI_REQUESTED_COMPONENT_SAMPLING - Specify the sampling format for + * the captured stream. + * The possible values are the NV_CTRL_GVI_DETECTED_COMPONENT_SAMPLING + * constants. + * The stream number should be specified in the "display_mask" parameter. + */ + +#define NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING 312 /* RW-I */ + +/* + * NV_CTRL_GVI_CHROMA_EXPAND - Enable or disable 4:2:2 -> 4:4:4 chroma + * expansion for the captured stream. This value is ignored when a + * COMPONENT_SAMPLING format is selected that does not use chroma subsampling, + * or if a BITS_PER_COMPONENT value is selected that is not supported. + * The stream number should be specified in the "display_mask" parameter. + */ + +#define NV_CTRL_GVI_REQUESTED_STREAM_CHROMA_EXPAND 313 /* RW-I */ +#define NV_CTRL_GVI_CHROMA_EXPAND_FALSE 0 +#define NV_CTRL_GVI_CHROMA_EXPAND_TRUE 1 + +/* + * NV_CTRL_GVI_DETECTED_CHANNEL_COLOR_SPACE - Returns the detected color space + * of the input jack+channel. + * + * The jack number should be specified in the lower 16 bits of the + * "display_mask" parameter, while the channel number should be specified in + * the upper 16 bits. + */ + +#define NV_CTRL_GVI_DETECTED_CHANNEL_COLOR_SPACE 314 /* R--I */ +#define NV_CTRL_GVI_COLOR_SPACE_UNKNOWN 0 +#define NV_CTRL_GVI_COLOR_SPACE_GBR 1 +#define NV_CTRL_GVI_COLOR_SPACE_GBRA 2 +#define NV_CTRL_GVI_COLOR_SPACE_GBRD 3 +#define NV_CTRL_GVI_COLOR_SPACE_YCBCR 4 +#define NV_CTRL_GVI_COLOR_SPACE_YCBCRA 5 +#define NV_CTRL_GVI_COLOR_SPACE_YCBCRD 6 + +/* + * NV_CTRL_GVI_DETECTED_CHANNEL_LINK_ID - Returns the detected link identifier + * for the given input jack+channel. + * + * The jack number should be specified in the lower 16 bits of the + * "display_mask" parameter, while the channel number should be specified in + * the upper 16 bits. + */ + +#define NV_CTRL_GVI_DETECTED_CHANNEL_LINK_ID 315 /* R--I */ +#define NV_CTRL_GVI_LINK_ID_UNKNOWN 0xFFFF + +/* + * NV_CTRL_GVI_DETECTED_CHANNEL_SMPTE352_IDENTIFIER - Returns the 4-byte + * SMPTE 352 identifier from the given input jack+channel. + * + * The jack number should be specified in the lower 16 bits of the + * "display_mask" parameter, while the channel number should be specified in + * the upper 16 bits. + */ + +#define NV_CTRL_GVI_DETECTED_CHANNEL_SMPTE352_IDENTIFIER 316 /* R--I */ + +/* + * NV_CTRL_GVI_GLOBAL_IDENTIFIER - Returns a global identifier for the + * GVI device. This identifier can be used to relate GVI devices named + * in NV-CONTROL with those enumerated in OpenGL. + */ + +#define NV_CTRL_GVI_GLOBAL_IDENTIFIER 317 /* R--I */ + +/* + * NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION - Returns the number of nanoseconds + * that one unit of NV_CTRL_FRAMELOCK_SYNC_DELAY corresponds to. + */ +#define NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION 318 /* R-- */ + +/* + * NV_CTRL_GPU_COOLER_MANUAL_CONTROL - Query the current or set a new + * cooler control state; the value of this attribute controls the + * availability of additional cooler control attributes (see below). + * + * Note: this attribute is unavailable unless cooler control support + * has been enabled in the X server (by the user). + */ + +#define NV_CTRL_GPU_COOLER_MANUAL_CONTROL 319 /* RW-G */ +#define NV_CTRL_GPU_COOLER_MANUAL_CONTROL_FALSE 0 +#define NV_CTRL_GPU_COOLER_MANUAL_CONTROL_TRUE 1 + +/* + * NV_CTRL_THERMAL_COOLER_LEVEL - Returns cooler's current operating + * level. + */ + +#define NV_CTRL_THERMAL_COOLER_LEVEL 320 /* RW-C */ + +/* NV_CTRL_THERMAL_COOLER_LEVEL_SET_DEFAULT - Sets default values of + * cooler. + */ + +#define NV_CTRL_THERMAL_COOLER_LEVEL_SET_DEFAULT 321 /* -W-C */ + +/* + * NV_CTRL_THERMAL_COOLER_CONTROL_TYPE - + * Returns a cooler's control signal characteristics. + * The possible types are restricted, Variable and Toggle. + */ + +#define NV_CTRL_THERMAL_COOLER_CONTROL_TYPE 322 /* R--C */ +#define NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_NONE 0 +#define NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_TOGGLE 1 +#define NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_VARIABLE 2 + +/* + * NV_CTRL_THERMAL_COOLER_TARGET - Returns objects that cooler cools. + * Targets may be GPU, Memory, Power Supply or All of these. + * GPU_RELATED = GPU | MEMORY | POWER_SUPPLY + * + */ + +#define NV_CTRL_THERMAL_COOLER_TARGET 323 /* R--C */ +#define NV_CTRL_THERMAL_COOLER_TARGET_NONE 0 +#define NV_CTRL_THERMAL_COOLER_TARGET_GPU 1 +#define NV_CTRL_THERMAL_COOLER_TARGET_MEMORY 2 +#define NV_CTRL_THERMAL_COOLER_TARGET_POWER_SUPPLY 4 +#define NV_CTRL_THERMAL_COOLER_TARGET_GPU_RELATED \ + (NV_CTRL_THERMAL_COOLER_TARGET_GPU | NV_CTRL_THERMAL_COOLER_TARGET_MEMORY | \ + NV_CTRL_THERMAL_COOLER_TARGET_POWER_SUPPLY) + +/* + * NV_CTRL_GPU_ECC_SUPPORTED - Reports whether ECC is supported by the + * targeted GPU. + */ +#define NV_CTRL_GPU_ECC_SUPPORTED 324 /* R--G */ +#define NV_CTRL_GPU_ECC_SUPPORTED_FALSE 0 +#define NV_CTRL_GPU_ECC_SUPPORTED_TRUE 1 + +/* + * NV_CTRL_GPU_ECC_STATUS - Returns the current hardware ECC setting + * for the targeted GPU. + */ +#define NV_CTRL_GPU_ECC_STATUS 325 /* R--G */ +#define NV_CTRL_GPU_ECC_STATUS_DISABLED 0 +#define NV_CTRL_GPU_ECC_STATUS_ENABLED 1 + +/* + * NV_CTRL_GPU_ECC_CONFIGURATION - Reports whether ECC can be configured + * dynamically for the GPU in question. + */ +#define NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED 326 /* R--G */ +#define NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED_FALSE 0 +#define NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED_TRUE 1 + +/* + * NV_CTRL_GPU_ECC_CONFIGURATION_SETTING - Returns the current ECC + * configuration setting or specifies new settings. New settings do not + * take effect until the next POST. + */ +#define NV_CTRL_GPU_ECC_CONFIGURATION 327 /* RW-G */ +#define NV_CTRL_GPU_ECC_CONFIGURATION_DISABLED 0 +#define NV_CTRL_GPU_ECC_CONFIGURATION_ENABLED 1 + +/* + * NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_SETTING - Returns the default + * ECC configuration setting. + */ +#define NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION 328 /* R--G */ +#define NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_DISABLED 0 +#define NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_ENABLED 1 + +/* + * NV_CTRL_GPU_ECC_SINGLE_BIT_ERRORS - Returns the number of single-bit + * ECC errors detected by the targeted GPU since the last POST. + * Note: this attribute is a 64-bit integer attribute. + */ +#define NV_CTRL_GPU_ECC_SINGLE_BIT_ERRORS 329 /* R--GQ */ + +/* + * NV_CTRL_GPU_ECC_DOUBLE_BIT_ERRORS - Returns the number of double-bit + * ECC errors detected by the targeted GPU since the last POST. + * Note: this attribute is a 64-bit integer attribute. + */ +#define NV_CTRL_GPU_ECC_DOUBLE_BIT_ERRORS 330 /* R--GQ */ + +/* + * NV_CTRL_GPU_ECC_AGGREGATE_SINGLE_BIT_ERRORS - Returns the number of + * single-bit ECC errors detected by the targeted GPU since the + * last counter reset. + * Note: this attribute is a 64-bit integer attribute. + */ +#define NV_CTRL_GPU_ECC_AGGREGATE_SINGLE_BIT_ERRORS 331 /* R--GQ */ + +/* + * NV_CTRL_GPU_ECC_AGGREGATE_DOUBLE_BIT_ERRORS - Returns the number of + * double-bit ECC errors detected by the targeted GPU since the + * last counter reset. + * Note: this attribute is a 64-bit integer attribute. + */ +#define NV_CTRL_GPU_ECC_AGGREGATE_DOUBLE_BIT_ERRORS 332 /* R--GQ */ + +/* + * NV_CTRL_GPU_ECC_RESET_ERROR_STATUS - Resets the volatile/aggregate + * single-bit and double-bit error counters. This attribute is a + * bitmask attribute. + */ +#define NV_CTRL_GPU_ECC_RESET_ERROR_STATUS 333 /* -W-G */ +#define NV_CTRL_GPU_ECC_RESET_ERROR_STATUS_VOLATILE 0x00000001 +#define NV_CTRL_GPU_ECC_RESET_ERROR_STATUS_AGGREGATE 0x00000002 + +/* + * NV_CTRL_GPU_POWER_MIZER_MODE - Provides a hint to the driver + * as to how to manage the performance of the GPU. + * + * ADAPTIVE - adjust GPU clocks based on GPU + * utilization + * PREFER_MAXIMUM_PERFORMANCE - raise GPU clocks to favor + * maximum performance, to the extent + * that thermal and other constraints + * allow + */ +#define NV_CTRL_GPU_POWER_MIZER_MODE 334 /* RW-G */ +#define NV_CTRL_GPU_POWER_MIZER_MODE_ADAPTIVE 0 +#define NV_CTRL_GPU_POWER_MIZER_MODE_PREFER_MAXIMUM_PERFORMANCE 1 + +/* + * NV_CTRL_GVI_SYNC_OUTPUT_FORMAT - Returns the output sync signal + * from the GVI device. + */ + +#define NV_CTRL_GVI_SYNC_OUTPUT_FORMAT 335 /* R--I */ + +/* + * NV_CTRL_GVI_MAX_CHANNELS_PER_JACK - Returns the maximum + * supported number of (logical) channels within a single physical jack of + * a GVI device. For most SDI video formats, there is only one channel + * (channel 0). But for 3G video formats (as specified in SMPTE 425), + * as an example, there are two channels (channel 0 and channel 1) per + * physical jack. + */ + +#define NV_CTRL_GVI_MAX_CHANNELS_PER_JACK 336 /* R--I */ + +/* + * NV_CTRL_GVI_MAX_STREAMS - Returns the maximum number of streams + * that can be configured on the GVI device. + */ + +#define NV_CTRL_GVI_MAX_STREAMS 337 /* R--I */ + +/* + * NV_CTRL_GVI_NUM_CAPTURE_SURFACES - The GVI interface exposed through + * NV-CONTROL and the GLX_NV_video_input extension uses internal capture + * surfaces when frames are read from the GVI device. The + * NV_CTRL_GVI_NUM_CAPTURE_SURFACES can be used to query and assign the + * number of capture surfaces. This attribute is applied when + * glXBindVideoCaptureDeviceNV() is called by the application. + * + * A lower number of capture surfaces will mean less video memory is used, + * but can result in frames being dropped if the application cannot keep up + * with the capture device. A higher number will prevent frames from being + * dropped, making capture more reliable but will consume move video memory. + */ +#define NV_CTRL_GVI_NUM_CAPTURE_SURFACES 338 /* RW-I */ + +/* + * NV_CTRL_OVERSCAN_COMPENSATION - not supported + */ +#define NV_CTRL_OVERSCAN_COMPENSATION 339 /* RWDG */ + +/* + * NV_CTRL_GPU_PCIE_GENERATION - Reports the current PCIe generation. + */ +#define NV_CTRL_GPU_PCIE_GENERATION 341 /* R--GI */ +#define NV_CTRL_GPU_PCIE_GENERATION1 0x00000001 +#define NV_CTRL_GPU_PCIE_GENERATION2 0x00000002 +#define NV_CTRL_GPU_PCIE_GENERATION3 0x00000003 + +/* + * NV_CTRL_GVI_BOUND_GPU - Returns the NV_CTRL_TARGET_TYPE_GPU target_id of + * the GPU currently bound to the GVI device. Returns -1 if no GPU is + * currently bound to the GVI device. + */ +#define NV_CTRL_GVI_BOUND_GPU 342 /* R--I */ + +/* + * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT3 - this attribute is only + * intended to be used to query the ValidValues for + * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for VIDEO_FORMAT values between + * 64 and 95. See NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT for details. + */ + +#define NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT3 343 /* ---GI */ + +/* + * NV_CTRL_ACCELERATE_TRAPEZOIDS - Toggles RENDER Trapezoid acceleration + */ + +#define NV_CTRL_ACCELERATE_TRAPEZOIDS 344 /* RW- */ +#define NV_CTRL_ACCELERATE_TRAPEZOIDS_DISABLE 0 +#define NV_CTRL_ACCELERATE_TRAPEZOIDS_ENABLE 1 + +/* + * NV_CTRL_GPU_CORES - Returns number of GPU cores supported by the graphics + * pipeline. + */ + +#define NV_CTRL_GPU_CORES 345 /* R--G */ + +/* + * NV_CTRL_GPU_MEMORY_BUS_WIDTH - Returns memory bus bandwidth on the associated + * subdevice. + */ + +#define NV_CTRL_GPU_MEMORY_BUS_WIDTH 346 /* R--G */ + +/* + * NV_CTRL_GVI_TEST_MODE - This attribute controls the GVI test mode. When + * enabled, the GVI device will generate fake data as quickly as possible. All + * GVI settings are still valid when this is enabled (e.g., the requested video + * format is honored and sets the video size). + * This may be used to test the pipeline. + */ + +#define NV_CTRL_GVI_TEST_MODE 347 /* R--I */ +#define NV_CTRL_GVI_TEST_MODE_DISABLE 0 +#define NV_CTRL_GVI_TEST_MODE_ENABLE 1 + +/* + * NV_CTRL_COLOR_SPACE - This option sets color space of the video + * signal. + */ +#define NV_CTRL_COLOR_SPACE 348 /* RWDG */ +#define NV_CTRL_COLOR_SPACE_RGB 0 +#define NV_CTRL_COLOR_SPACE_YCbCr422 1 +#define NV_CTRL_COLOR_SPACE_YCbCr444 2 + +/* + * NV_CTRL_COLOR_RANGE - This option sets color range of the video + * signal. + */ +#define NV_CTRL_COLOR_RANGE 349 /* RWDG */ +#define NV_CTRL_COLOR_RANGE_FULL 0 +#define NV_CTRL_COLOR_RANGE_LIMITED 1 + +/* + * NV_CTRL_GPU_SCALING_DEFAULT_TARGET - not supported + * + * NV_CTRL_GPU_SCALING_DEFAULT_METHOD - not supported + */ +#define NV_CTRL_GPU_SCALING_DEFAULT_TARGET 350 /* R-DG */ +#define NV_CTRL_GPU_SCALING_DEFAULT_METHOD 351 /* R-DG */ + +/* + * NV_CTRL_DITHERING_MODE - Controls the dithering mode, when + * NV_CTRL_CURRENT_DITHERING is Enabled. + * + * AUTO: allow the driver to choose the dithering mode automatically. + * + * DYNAMIC_2X2: use a 2x2 matrix to dither from the GPU's pixel + * pipeline to the bit depth of the flat panel. The matrix values + * are changed from frame to frame. + * + * STATIC_2X2: use a 2x2 matrix to dither from the GPU's pixel + * pipeline to the bit depth of the flat panel. The matrix values + * do not change from frame to frame. + * + * TEMPORAL: use a pseudorandom value from a uniform distribution calculated at + * every pixel to achieve stochastic dithering. This method produces a better + * visual result than 2x2 matrix approaches. + */ +#define NV_CTRL_DITHERING_MODE 352 /* RWDG */ +#define NV_CTRL_DITHERING_MODE_AUTO 0 +#define NV_CTRL_DITHERING_MODE_DYNAMIC_2X2 1 +#define NV_CTRL_DITHERING_MODE_STATIC_2X2 2 +#define NV_CTRL_DITHERING_MODE_TEMPORAL 3 + +/* + * NV_CTRL_CURRENT_DITHERING - Returns the current dithering state. + */ +#define NV_CTRL_CURRENT_DITHERING 353 /* R-DG */ +#define NV_CTRL_CURRENT_DITHERING_DISABLED 0 +#define NV_CTRL_CURRENT_DITHERING_ENABLED 1 + +/* + * NV_CTRL_CURRENT_DITHERING_MODE - Returns the current dithering + * mode. + */ +#define NV_CTRL_CURRENT_DITHERING_MODE 354 /* R-DG */ +#define NV_CTRL_CURRENT_DITHERING_MODE_NONE 0 +#define NV_CTRL_CURRENT_DITHERING_MODE_DYNAMIC_2X2 1 +#define NV_CTRL_CURRENT_DITHERING_MODE_STATIC_2X2 2 +#define NV_CTRL_CURRENT_DITHERING_MODE_TEMPORAL 3 + +/* + * NV_CTRL_THERMAL_SENSOR_READING - Returns the thermal sensor's current + * reading. + */ +#define NV_CTRL_THERMAL_SENSOR_READING 355 /* R--S */ + +/* + * NV_CTRL_THERMAL_SENSOR_PROVIDER - Returns the hardware device that + * provides the thermal sensor. + */ +#define NV_CTRL_THERMAL_SENSOR_PROVIDER 356 /* R--S */ +#define NV_CTRL_THERMAL_SENSOR_PROVIDER_NONE 0 +#define NV_CTRL_THERMAL_SENSOR_PROVIDER_GPU_INTERNAL 1 +#define NV_CTRL_THERMAL_SENSOR_PROVIDER_ADM1032 2 +#define NV_CTRL_THERMAL_SENSOR_PROVIDER_ADT7461 3 +#define NV_CTRL_THERMAL_SENSOR_PROVIDER_MAX6649 4 +#define NV_CTRL_THERMAL_SENSOR_PROVIDER_MAX1617 5 +#define NV_CTRL_THERMAL_SENSOR_PROVIDER_LM99 6 +#define NV_CTRL_THERMAL_SENSOR_PROVIDER_LM89 7 +#define NV_CTRL_THERMAL_SENSOR_PROVIDER_LM64 8 +#define NV_CTRL_THERMAL_SENSOR_PROVIDER_G781 9 +#define NV_CTRL_THERMAL_SENSOR_PROVIDER_ADT7473 10 +#define NV_CTRL_THERMAL_SENSOR_PROVIDER_SBMAX6649 11 +#define NV_CTRL_THERMAL_SENSOR_PROVIDER_VBIOSEVT 12 +#define NV_CTRL_THERMAL_SENSOR_PROVIDER_OS 13 +#define NV_CTRL_THERMAL_SENSOR_PROVIDER_UNKNOWN 0xFFFFFFFF + +/* + * NV_CTRL_THERMAL_SENSOR_TARGET - Returns what hardware component + * the thermal sensor is measuring. + */ +#define NV_CTRL_THERMAL_SENSOR_TARGET 357 /* R--S */ +#define NV_CTRL_THERMAL_SENSOR_TARGET_NONE 0 +#define NV_CTRL_THERMAL_SENSOR_TARGET_GPU 1 +#define NV_CTRL_THERMAL_SENSOR_TARGET_MEMORY 2 +#define NV_CTRL_THERMAL_SENSOR_TARGET_POWER_SUPPLY 4 +#define NV_CTRL_THERMAL_SENSOR_TARGET_BOARD 8 +#define NV_CTRL_THERMAL_SENSOR_TARGET_UNKNOWN 0xFFFFFFFF + +/* + * NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR - when TRUE, OpenGL will + * draw information about the current MULTIGPU mode. + */ +#define NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR 358 /* RW-X */ +#define NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR_FALSE 0 +#define NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR_TRUE 1 + +/* + * NV_CTRL_GPU_CURRENT_PROCESSOR_CLOCK_FREQS - Returns GPU's processor + * clock freqs. + */ +#define NV_CTRL_GPU_CURRENT_PROCESSOR_CLOCK_FREQS 359 /* RW-G */ + +/* + * NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS - query the flags (various information + * for the specified NV_CTRL_GVIO_VIDEO_FORMAT_*. So that this can be + * queried with existing interfaces, the video format should be specified + * in the display_mask field; eg: + * + * XNVCTRLQueryTargetAttribute(dpy, + * NV_CTRL_TARGET_TYPE_GVI, + * gvi, + * NV_CTRL_GVIO_VIDEO_FORMAT_720P_60_00_SMPTE296, + * NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS, + * &flags); + * + * Note: The NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_1080P_NO_12BPC flag is set + * for those 1080P 3G modes (level A and B) that do not support + * 12 bits per component (when configuring a GVI stream.) + */ + +#define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS 360 /* R--I */ +#define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_NONE 0x00000000 +#define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_INTERLACED 0x00000001 +#define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_PROGRESSIVE 0x00000002 +#define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_PSF 0x00000004 +#define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_A 0x00000008 +#define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_B 0x00000010 +#define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G \ + ((NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_A) | (NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_B)) +#define NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_1080P_NO_12BPC 0x00000020 + +/* + * NV_CTRL_GPU_PCIE_MAX_LINK_SPEED - returns maximum PCIe link speed, + * in gigatransfers per second (GT/s). + */ + +#define NV_CTRL_GPU_PCIE_MAX_LINK_SPEED 361 /* R--GI */ + +/* + * NV_CTRL_3D_VISION_PRO_RESET_TRANSCEIVER_TO_FACTORY_SETTINGS - Resets the + * 3D Vision Pro transceiver to its factory settings. + */ +#define NV_CTRL_3D_VISION_PRO_RESET_TRANSCEIVER_TO_FACTORY_SETTINGS 363 /* -W-T */ + +/* + * NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL - Controls the channel that is + * currently used by the 3D Vision Pro transceiver. + */ +#define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL 364 /* RW-T */ + +/* + * NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE - Controls the mode in which the + * 3D Vision Pro transceiver operates. + * NV_CTRL_3D_VISION_PRO_TM_LOW_RANGE is bidirectional + * NV_CTRL_3D_VISION_PRO_TM_MEDIUM_RANGE is bidirectional + * NV_CTRL_3D_VISION_PRO_TM_HIGH_RANGE may be bidirectional just up to a + * given range, and unidirectional beyond it + * NV_CTRL_3D_VISION_PRO_TM_COUNT is the total number of + * 3D Vision Pro transceiver modes + */ +#define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE 365 /* RW-T */ +#define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_INVALID 0 +#define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_LOW_RANGE 1 +#define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_MEDIUM_RANGE 2 +#define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_HIGH_RANGE 3 +#define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_COUNT 4 + +/* + * NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES - controls whether updates to the color + * lookup table (LUT) are synchronous with respect to X rendering. For example, + * if an X client sends XStoreColors followed by XFillRectangle, the driver will + * guarantee that the FillRectangle request is not processed until after the + * updated LUT colors are actually visible on the screen if + * NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES is enabled. Otherwise, the rendering may + * occur first. + * + * This makes a difference for applications that use the LUT to animate, such as + * XPilot. If you experience flickering in applications that use LUT + * animations, try enabling this attribute. + * + * When synchronous updates are enabled, XStoreColors requests will be processed + * at your screen's refresh rate. + */ + +#define NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES 367 /* RWDG */ +#define NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES_DISABLE 0 +#define NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES_ENABLE 1 + +/* + * NV_CTRL_DITHERING_DEPTH - Controls the dithering depth when + * NV_CTRL_CURRENT_DITHERING is ENABLED. Some displays connected + * to the GPU via the DVI or LVDS interfaces cannot display the + * full color range of ten bits per channel, so the GPU will + * dither to either 6 or 8 bits per channel. + */ +#define NV_CTRL_DITHERING_DEPTH 368 /* RWDG */ +#define NV_CTRL_DITHERING_DEPTH_AUTO 0 +#define NV_CTRL_DITHERING_DEPTH_6_BITS 1 +#define NV_CTRL_DITHERING_DEPTH_8_BITS 2 + +/* + * NV_CTRL_CURRENT_DITHERING_DEPTH - Returns the current dithering + * depth value. + */ +#define NV_CTRL_CURRENT_DITHERING_DEPTH 369 /* R-DG */ +#define NV_CTRL_CURRENT_DITHERING_DEPTH_NONE 0 +#define NV_CTRL_CURRENT_DITHERING_DEPTH_6_BITS 1 +#define NV_CTRL_CURRENT_DITHERING_DEPTH_8_BITS 2 + +/* + * NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_FREQUENCY - Returns the + * frequency of the channel(in kHz) of the 3D Vision Pro transceiver. + * Use the display_mask parameter to specify the channel number. + */ +#define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_FREQUENCY 370 /* R--T */ + +/* + * NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_QUALITY - Returns the + * quality of the channel(in percentage) of the 3D Vision Pro transceiver. + * Use the display_mask parameter to specify the channel number. + */ +#define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_QUALITY 371 /* R--T */ + +/* + * NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_COUNT - Returns the number of + * channels on the 3D Vision Pro transceiver. + */ +#define NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_COUNT 372 /* R--T */ + +/* + * NV_CTRL_3D_VISION_PRO_PAIR_GLASSES - Puts the 3D Vision Pro + * transceiver into pairing mode to gather additional glasses. + * NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_STOP - stops any pairing + * NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_BEACON - starts continuous + * pairing via beacon mode + * Any other value, N - Puts the 3D Vision Pro transceiver into + * authenticated pairing mode for N seconds. + */ +#define NV_CTRL_3D_VISION_PRO_PAIR_GLASSES 373 /* -W-T */ +#define NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_STOP 0 +#define NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_BEACON 0xFFFFFFFF + +/* + * NV_CTRL_3D_VISION_PRO_UNPAIR_GLASSES - Tells a specific pair + * of glasses to unpair. The glasses will "forget" the address + * of the 3D Vision Pro transceiver to which they have been paired. + * To unpair all the currently paired glasses, specify + * the glasses id as 0. + */ +#define NV_CTRL_3D_VISION_PRO_UNPAIR_GLASSES 374 /* -W-T */ + +/* + * NV_CTRL_3D_VISION_PRO_DISCOVER_GLASSES - Tells the 3D Vision Pro + * transceiver about the glasses that have been paired using + * NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_BEACON. Unless this is done, + * the 3D Vision Pro transceiver will not know about glasses paired in + * beacon mode. + */ +#define NV_CTRL_3D_VISION_PRO_DISCOVER_GLASSES 375 /* -W-T */ + +/* + * NV_CTRL_3D_VISION_PRO_IDENTIFY_GLASSES - Causes glasses LEDs to + * flash for a short period of time. + */ +#define NV_CTRL_3D_VISION_PRO_IDENTIFY_GLASSES 376 /* -W-T */ + +/* + * NV_CTRL_3D_VISION_PRO_GLASSES_SYNC_CYCLE - Controls the + * sync cycle duration(in milliseconds) of the glasses. + * Use the display_mask parameter to specify the glasses id. + */ +#define NV_CTRL_3D_VISION_PRO_GLASSES_SYNC_CYCLE 378 /* RW-T */ + +/* + * NV_CTRL_3D_VISION_PRO_GLASSES_MISSED_SYNC_CYCLES - Returns the + * number of state sync cycles recently missed by the glasses. + * Use the display_mask parameter to specify the glasses id. + */ +#define NV_CTRL_3D_VISION_PRO_GLASSES_MISSED_SYNC_CYCLES 379 /* R--T */ + +/* + * NV_CTRL_3D_VISION_PRO_GLASSES_BATTERY_LEVEL - Returns the + * battery level(in percentage) of the glasses. + * Use the display_mask parameter to specify the glasses id. + */ +#define NV_CTRL_3D_VISION_PRO_GLASSES_BATTERY_LEVEL 380 /* R--T */ + +/* + * NV_CTRL_GVO_ANC_PARITY_COMPUTATION - Controls the SDI device's computation + * of the parity bit (bit 8) for ANC data words. + */ + +#define NV_CTRL_GVO_ANC_PARITY_COMPUTATION 381 /* RW--- */ +#define NV_CTRL_GVO_ANC_PARITY_COMPUTATION_AUTO 0 +#define NV_CTRL_GVO_ANC_PARITY_COMPUTATION_ON 1 +#define NV_CTRL_GVO_ANC_PARITY_COMPUTATION_OFF 2 + +/* + * NV_CTRL_3D_VISION_PRO_GLASSES_PAIR_EVENT - This attribute is sent + * as an event when glasses get paired in response to pair command + * from any of the clients. + */ +#define NV_CTRL_3D_VISION_PRO_GLASSES_PAIR_EVENT 382 /* ---T */ + +/* + * NV_CTRL_3D_VISION_PRO_GLASSES_UNPAIR_EVENT - This attribute is sent + * as an event when glasses get unpaired in response to unpair command + * from any of the clients. + */ +#define NV_CTRL_3D_VISION_PRO_GLASSES_UNPAIR_EVENT 383 /* ---T */ + +/* + * NV_CTRL_GPU_PCIE_CURRENT_LINK_WIDTH - returns the current + * PCIe link width, in number of lanes. + */ +#define NV_CTRL_GPU_PCIE_CURRENT_LINK_WIDTH 384 /* R--GI */ + +/* + * NV_CTRL_GPU_PCIE_CURRENT_LINK_SPEED - returns the current + * PCIe link speed, in megatransfers per second (GT/s). + */ +#define NV_CTRL_GPU_PCIE_CURRENT_LINK_SPEED 385 /* R--GI */ + +/* + * NV_CTRL_GVO_AUDIO_BLANKING - specifies whether the GVO device should delete + * audio ancillary data packets when frames are repeated. + * + * When a new frame is not ready in time, the current frame, including all + * ancillary data packets, is repeated. When this data includes audio packets, + * this can result in stutters or clicks. When this option is enabled, the GVO + * device will detect when frames are repeated, identify audio ancillary data + * packets, and mark them for deletion. + * + * This option is applied when the GVO device is bound. + */ +#define NV_CTRL_GVO_AUDIO_BLANKING 386 /* RW- */ +#define NV_CTRL_GVO_AUDIO_BLANKING_DISABLE 0 +#define NV_CTRL_GVO_AUDIO_BLANKING_ENABLE 1 + +/* + * NV_CTRL_CURRENT_METAMODE_ID - switch modes to the MetaMode with + * the specified ID. + */ +#define NV_CTRL_CURRENT_METAMODE_ID 387 /* RW- */ + +/* + * NV_CTRL_DISPLAY_ENABLED - Returns whether or not the display device + * is currently enabled. + */ +#define NV_CTRL_DISPLAY_ENABLED 388 /* R-D */ +#define NV_CTRL_DISPLAY_ENABLED_TRUE 1 +#define NV_CTRL_DISPLAY_ENABLED_FALSE 0 + +#define NV_CTRL_LAST_ATTRIBUTE NV_CTRL_DISPLAY_ENABLED + +/**************************************************************************/ + +/* + * String Attributes: + * + * String attributes can be queryied through the XNVCTRLQueryStringAttribute() + * and XNVCTRLQueryTargetStringAttribute() function calls. + * + * String attributes can be set through the XNVCTRLSetStringAttribute() + * function call. (There are currently no string attributes that can be + * set on non-X Screen targets.) + * + * Unless otherwise noted, all string attributes can be queried/set using an + * NV_CTRL_TARGET_TYPE_X_SCREEN target. Attributes that cannot take an + * NV_CTRL_TARGET_TYPE_X_SCREEN target also cannot be queried/set through + * XNVCTRLQueryStringAttribute()/XNVCTRLSetStringAttribute() (Since + * these assume an X Screen target). + */ + +/* + * NV_CTRL_STRING_PRODUCT_NAME - the GPU product name on which the + * specified X screen is running. + * + * This attribute may be queried through XNVCTRLQueryTargetStringAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_STRING_PRODUCT_NAME 0 /* R--G */ + +/* + * NV_CTRL_STRING_VBIOS_VERSION - the video bios version on the GPU on + * which the specified X screen is running. + */ + +#define NV_CTRL_STRING_VBIOS_VERSION 1 /* R--G */ + +/* + * NV_CTRL_STRING_NVIDIA_DRIVER_VERSION - string representation of the + * NVIDIA driver version number for the NVIDIA X driver in use. + */ + +#define NV_CTRL_STRING_NVIDIA_DRIVER_VERSION 3 /* R--G */ + +/* + * NV_CTRL_STRING_DISPLAY_DEVICE_NAME - name of the display device + * specified in the display_mask argument. + * + * This attribute may be queried through XNVCTRLQueryTargetStringAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_STRING_DISPLAY_DEVICE_NAME 4 /* R-DG */ + +/* + * NV_CTRL_STRING_TV_ENCODER_NAME - name of the TV encoder used by the + * specified display device; only valid if the display device is a TV. + */ + +#define NV_CTRL_STRING_TV_ENCODER_NAME 5 /* R-DG */ + +/* + * NV_CTRL_STRING_GVIO_FIRMWARE_VERSION - indicates the version of the + * Firmware on the GVIO device. + */ + +#define NV_CTRL_STRING_GVIO_FIRMWARE_VERSION 8 /* R--I */ + +/* + * The following is deprecated; use NV_CTRL_STRING_GVIO_FIRMWARE_VERSION, + * instead + */ +#define NV_CTRL_STRING_GVO_FIRMWARE_VERSION 8 /* R-- */ + +/* + * NV_CTRL_STRING_CURRENT_MODELINE - Return the ModeLine currently + * being used by the specified display device. + * + * This attribute may be queried through XNVCTRLQueryTargetStringAttribute() + * using an NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + * + * The ModeLine string may be prepended with a comma-separated list of + * "token=value" pairs, separated from the ModeLine string by "::". + * This "token=value" syntax is the same as that used in + * NV_CTRL_BINARY_DATA_MODELINES + */ + +#define NV_CTRL_STRING_CURRENT_MODELINE 9 /* R-DG */ + +/* + * NV_CTRL_STRING_ADD_MODELINE - Adds a ModeLine to the specified + * display device. The ModeLine is not added if validation fails. + * + * The ModeLine string should have the same syntax as a ModeLine in + * the X configuration file; e.g., + * + * "1600x1200" 229.5 1600 1664 1856 2160 1200 1201 1204 1250 +HSync +VSync + */ + +#define NV_CTRL_STRING_ADD_MODELINE 10 /* -WDG */ + +/* + * NV_CTRL_STRING_DELETE_MODELINE - Deletes an existing ModeLine + * from the specified display device. The currently selected + * ModeLine cannot be deleted. (This also means you cannot delete + * the last ModeLine.) + * + * The ModeLine string should have the same syntax as a ModeLine in + * the X configuration file; e.g., + * + * "1600x1200" 229.5 1600 1664 1856 2160 1200 1201 1204 1250 +HSync +VSync + */ + +#define NV_CTRL_STRING_DELETE_MODELINE 11 /* -WDG */ + +/* + * NV_CTRL_STRING_CURRENT_METAMODE - Returns the metamode currently + * being used by the specified X screen. The MetaMode string has the + * same syntax as the MetaMode X configuration option, as documented + * in the NVIDIA driver README. + * + * The returned string may be prepended with a comma-separated list of + * "token=value" pairs, separated from the MetaMode string by "::". + * This "token=value" syntax is the same as that used in + * NV_CTRL_BINARY_DATA_METAMODES. + */ + +#define NV_CTRL_STRING_CURRENT_METAMODE 12 /* RW-- */ +#define NV_CTRL_STRING_CURRENT_METAMODE_VERSION_1 NV_CTRL_STRING_CURRENT_METAMODE + +/* + * NV_CTRL_STRING_ADD_METAMODE - Adds a MetaMode to the specified + * X Screen. + * + * It is recommended to not use this attribute, but instead use + * NV_CTRL_STRING_OPERATION_ADD_METAMODE. + */ + +#define NV_CTRL_STRING_ADD_METAMODE 13 /* -W-- */ + +/* + * NV_CTRL_STRING_DELETE_METAMODE - Deletes an existing MetaMode from + * the specified X Screen. The currently selected MetaMode cannot be + * deleted. (This also means you cannot delete the last MetaMode). + * The MetaMode string should have the same syntax as the MetaMode X + * configuration option, as documented in the NVIDIA driver README. + */ + +#define NV_CTRL_STRING_DELETE_METAMODE 14 /* -WD-- */ + +/* + * NV_CTRL_STRING_VCSC_PRODUCT_NAME - Querys the product name of the + * VCSC device. + * + * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() + * using a NV_CTRL_TARGET_TYPE_VCSC target. + */ + +#define NV_CTRL_STRING_VCSC_PRODUCT_NAME 15 /* R---V */ + +/* + * NV_CTRL_STRING_VCSC_PRODUCT_ID - Querys the product ID of the VCSC device. + * + * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() + * using a NV_CTRL_TARGET_TYPE_VCSC target. + */ + +#define NV_CTRL_STRING_VCSC_PRODUCT_ID 16 /* R---V */ + +/* + * NV_CTRL_STRING_VCSC_SERIAL_NUMBER - Querys the unique serial number + * of the VCS device. + * + * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() + * using a NV_CTRL_TARGET_TYPE_VCSC target. + */ + +#define NV_CTRL_STRING_VCSC_SERIAL_NUMBER 17 /* R---V */ + +/* + * NV_CTRL_STRING_VCSC_BUILD_DATE - Querys the date of the VCS device. + * the returned string is in the following format: "Week.Year" + * + * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() + * using a NV_CTRL_TARGET_TYPE_VCSC target. + */ + +#define NV_CTRL_STRING_VCSC_BUILD_DATE 18 /* R---V */ + +/* + * NV_CTRL_STRING_VCSC_FIRMWARE_VERSION - Querys the firmware version + * of the VCS device. + * + * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() + * using a NV_CTRL_TARGET_TYPE_VCSC target. + */ + +#define NV_CTRL_STRING_VCSC_FIRMWARE_VERSION 19 /* R---V */ + +/* + * NV_CTRL_STRING_VCSC_FIRMWARE_REVISION - Querys the firmware revision + * of the VCS device. + * + * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() + * using a NV_CTRL_TARGET_TYPE_VCS target. + */ + +#define NV_CTRL_STRING_VCSC_FIRMWARE_REVISION 20 /* R---V */ + +/* + * NV_CTRL_STRING_VCSC_HARDWARE_VERSION - Querys the hardware version + * of the VCS device. + * + * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() + * using a NV_CTRL_TARGET_TYPE_VCSC target. + */ + +#define NV_CTRL_STRING_VCSC_HARDWARE_VERSION 21 /* R---V */ + +/* + * NV_CTRL_STRING_VCSC_HARDWARE_REVISION - Querys the hardware revision + * of the VCS device. + * + * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() + * using a NV_CTRL_TARGET_TYPE_VCSC target. + */ + +#define NV_CTRL_STRING_VCSC_HARDWARE_REVISION 22 /* R---V */ + +/* + * NV_CTRL_STRING_MOVE_METAMODE - Moves a MetaMode to the specified + * index location. The MetaMode must already exist in the X Screen's + * list of MetaModes (as returned by the NV_CTRL_BINARY_DATA_METAMODES + * attribute). If the index is larger than the number of MetaModes in + * the list, the MetaMode is moved to the end of the list. The + * MetaMode string should have the same syntax as the MetaMode X + * configuration option, as documented in the NVIDIA driver README. + + * The MetaMode string must be prepended with a comma-separated list + * of "token=value" pairs, separated from the MetaMode string by "::". + * Currently, the only valid token is "index", which indicates where + * in the MetaMode list the MetaMode should be moved to. + * + * Other tokens may be added in the future. + * + * E.g., + * "index=5 :: CRT-0: 1024x768 @1024x768 +0+0" + */ + +#define NV_CTRL_STRING_MOVE_METAMODE 23 /* -W-- */ + +/* + * NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES - returns the valid + * horizontal sync ranges used to perform mode validation for the + * specified display device. The ranges are in the same format as the + * "HorizSync" X config option: + * + * "horizsync-range may be a comma separated list of either discrete + * values or ranges of values. A range of values is two values + * separated by a dash." + * + * The values are in kHz. + * + * Additionally, the string may be prepended with a comma-separated + * list of "token=value" pairs, separated from the HorizSync string by + * "::". Valid tokens: + * + * Token Value + * "source" "edid" - HorizSync is from the display device's EDID + * "xconfig" - HorizSync is from the "HorizSync" entry in + * the Monitor section of the X config file + * "option" - HorizSync is from the "HorizSync" NVIDIA X + * config option + * "twinview" - HorizSync is from the "SecondMonitorHorizSync" + * NVIDIA X config option + * "builtin" - HorizSync is from NVIDIA X driver builtin + * default values + * + * Additional tokens and/or values may be added in the future. + * + * Example: "source=edid :: 30.000-62.000" + */ + +#define NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES 24 /* R-DG */ + +/* + * NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES - returns the valid + * vertical refresh ranges used to perform mode validation for the + * specified display device. The ranges are in the same format as the + * "VertRefresh" X config option: + * + * "vertrefresh-range may be a comma separated list of either discrete + * values or ranges of values. A range of values is two values + * separated by a dash." + * + * The values are in Hz. + * + * Additionally, the string may be prepended with a comma-separated + * list of "token=value" pairs, separated from the VertRefresh string by + * "::". Valid tokens: + * + * Token Value + * "source" "edid" - VertRefresh is from the display device's EDID + * "xconfig" - VertRefresh is from the "VertRefresh" entry in + * the Monitor section of the X config file + * "option" - VertRefresh is from the "VertRefresh" NVIDIA X + * config option + * "twinview" - VertRefresh is from the "SecondMonitorVertRefresh" + * NVIDIA X config option + * "builtin" - VertRefresh is from NVIDIA X driver builtin + * default values + * + * Additional tokens and/or values may be added in the future. + * + * Example: "source=edid :: 50.000-75.000" + */ + +#define NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES 25 /* R-DG */ + +/* + * NV_CTRL_STRING_XINERAMA_SCREEN_INFO - returns the physical X Screen's + * initial position and size (in absolute coordinates) within the Xinerama + * desktop as the "token=value" string: "x=#, y=#, width=#, height=#" + * + * Querying this attribute returns FALSE if NV_CTRL_XINERAMA is not + * NV_CTRL_XINERAMA_ON. + */ + +#define NV_CTRL_STRING_XINERAMA_SCREEN_INFO 26 /* R--- */ + +/* + * NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER - used to specify the + * order that display devices will be returned via Xinerama when + * nvidiaXineramaInfo is enabled. Follows the same syntax as the + * nvidiaXineramaInfoOrder X config option. + */ + +#define NV_CTRL_STRING_NVIDIA_XINERAMA_INFO_ORDER 27 /* RW-- */ + +#define NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER \ + NV_CTRL_STRING_NVIDIA_XINERAMA_INFO_ORDER /* for backwards compatibility: */ + +/* + * NV_CTRL_STRING_SLI_MODE - returns a string describing the current + * SLI mode, if any, or FALSE if SLI is not currently enabled. + * + * This string should be used for informational purposes only, and + * should not be used to distinguish between SLI modes, other than to + * recognize when SLI is disabled (FALSE is returned) or + * enabled (the returned string is non-NULL and describes the current + * SLI configuration). + */ + +#define NV_CTRL_STRING_SLI_MODE 28 /* R---*/ + +/* + * NV_CTRL_STRING_PERFORMANCE_MODES - returns a string with all the + * performance modes defined for this GPU along with their associated + * NV Clock and Memory Clock values. + * + * Each performance modes are returned as a comma-separated list of + * "token=value" pairs. Each set of performance mode tokens are separated + * by a ";". Valid tokens: + * + * Token Value + * "perf" integer - the Performance level + * "nvclock" integer - the GPU clocks (in MHz) for the perf level + * "memclock" integer - the memory clocks (in MHz) for the perf level + * + * + * Example: + * + * perf=0, nvclock=500, memclock=505 ; perf=1, nvclock=650, memclock=505 + * + * This attribute may be queried through XNVCTRLQueryTargetStringAttribute() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_STRING_PERFORMANCE_MODES 29 /* R--G */ + +/* + * NV_CTRL_STRING_VCSC_FAN_STATUS - returns a string with status of all the + * fans in the Visual Computing System, if such a query is supported. Fan + * information is reported along with its tachometer reading (in RPM) and a + * flag indicating whether the fan has failed or not. + * + * Valid tokens: + * + * Token Value + * "fan" integer - the Fan index + * "speed" integer - the tachometer reading of the fan in rpm + * "fail" integer - flag to indicate whether the fan has failed + * + * Example: + * + * fan=0, speed=694, fail=0 ; fan=1, speed=693, fail=0 + * + * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() + * using a NV_CTRL_TARGET_TYPE_VCSC target. + * + */ + +#define NV_CTRL_STRING_VCSC_FAN_STATUS 30 /* R---V */ + +/* + * NV_CTRL_STRING_VCSC_TEMPERATURES - returns a string with all Temperature + * readings in the Visual Computing System, if such a query is supported. + * Intake, Exhaust and Board Temperature values are reported in Celcius. + * + * Valid tokens: + * + * Token Value + * "intake" integer - the intake temperature for the VCS + * "exhaust" integer - the exhaust temperature for the VCS + * "board" integer - the board temperature of the VCS + * + * Example: + * + * intake=29, exhaust=46, board=41 + * + * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() + * using a NV_CTRL_TARGET_TYPE_VCSC target. + * + */ + +#define NV_CTRL_STRING_VCSC_TEMPERATURES 31 /* R---V */ + +/* + * NV_CTRL_STRING_VCSC_PSU_INFO - returns a string with all Power Supply Unit + * related readings in the Visual Computing System, if such a query is + * supported. Current in amperes, Power in watts, Voltage in volts and PSU + * state may be reported. Not all PSU types support all of these values, and + * therefore some readings may be unknown. + * + * Valid tokens: + * + * Token Value + * "current" integer - the current drawn in amperes by the VCS + * "power" integer - the power drawn in watts by the VCS + * "voltage" integer - the voltage reading of the VCS + * "state" integer - flag to indicate whether PSU is operating normally + * + * Example: + * + * current=10, power=15, voltage=unknown, state=normal + * + * This attribute must be queried through XNVCTRLQueryTargetStringAttribute() + * using a NV_CTRL_TARGET_TYPE_VCSC target. + * + */ + +#define NV_CTRL_STRING_VCSC_PSU_INFO 32 /* R---V */ + +/* + * NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME - query the name for the specified + * NV_CTRL_GVIO_VIDEO_FORMAT_*. So that this can be queried with existing + * interfaces, XNVCTRLQueryStringAttribute() should be used, and the video + * format specified in the display_mask field; eg: + * + * XNVCTRLQueryStringAttribute(dpy, + * screen, + * NV_CTRL_GVIO_VIDEO_FORMAT_720P_60_00_SMPTE296, + * NV_CTRL_GVIO_VIDEO_FORMAT_NAME, + * &name); + */ + +#define NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME 33 /* R--GI */ + +/* + * The following is deprecated; use NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME, + * instead + */ +#define NV_CTRL_STRING_GVO_VIDEO_FORMAT_NAME 33 /* R--- */ + +/* + * NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS - returns a string with the + * associated NV Clock, Memory Clock and Processor Clock values. + * + * Current valid tokens are "nvclock", "memclock", and "processorclock". + * Not all tokens will be reported on all GPUs, and additional tokens + * may be added in the future. + * + * Clock values are returned as a comma-separated list of + * "token=value" pairs. + * Valid tokens: + * + * Token Value + * "nvclock" integer - the GPU clocks (in MHz) for the current + * perf level + * "memclock" integer - the memory clocks (in MHz) for the current + * perf level + * "processorclock" integer - the processor clocks (in MHz) for the perf level + * + * + * Example: + * + * nvclock=459, memclock=400, processorclock=918 + * + * This attribute may be queried through XNVCTRLQueryTargetStringAttribute() + * using an NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS 34 /* RW-G */ + +/* + * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_HARDWARE_REVISION - Returns the + * hardware revision of the 3D Vision Pro transceiver. + */ +#define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_HARDWARE_REVISION 35 /* R--T */ + +/* + * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_A - Returns the + * firmware version of chip A of the 3D Vision Pro transceiver. + */ +#define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_A 36 /* R--T */ + +/* + * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_A - Returns the + * date of the firmware of chip A of the 3D Vision Pro transceiver. + */ +#define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_A 37 /* R--T */ + +/* + * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_B - Returns the + * firmware version of chip B of the 3D Vision Pro transceiver. + */ +#define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_B 38 /* R--T */ + +/* + * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_B - Returns the + * date of the firmware of chip B of the 3D Vision Pro transceiver. + */ +#define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_B 39 /* R--T */ + +/* + * NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_ADDRESS - Returns the RF address + * of the 3D Vision Pro transceiver. + */ +#define NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_ADDRESS 40 /* R--T */ + +/* + * NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_VERSION_A - Returns the + * firmware version of chip A of the glasses. + * Use the display_mask parameter to specify the glasses id. + */ +#define NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_VERSION_A 41 /* R--T */ + +/* + * NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_DATE_A - Returns the + * date of the firmware of chip A of the glasses. + * Use the display_mask parameter to specify the glasses id. + */ +#define NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_DATE_A 42 /* R--T */ + +/* + * NV_CTRL_STRING_3D_VISION_PRO_GLASSES_ADDRESS - Returns the RF address + * of the glasses. + * Use the display_mask parameter to specify the glasses id. + */ +#define NV_CTRL_STRING_3D_VISION_PRO_GLASSES_ADDRESS 43 /* R--T */ + +/* + * NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME - Controls the name the + * glasses should use. + * Use the display_mask parameter to specify the glasses id. + * Glasses' name should start and end with an alpha-numeric character. + */ +#define NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME 44 /* RW-T */ + +/* + * NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2 - Returns the metamode currently + * being used by the specified X screen. The MetaMode string has the same + * syntax as the MetaMode X configuration option, as documented in the NVIDIA + * driver README. Also, see NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 for more + * details on the base syntax. + * + * The returned string may also be prepended with a comma-separated list of + * "token=value" pairs, separated from the MetaMode string by "::". + */ +#define NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2 45 /* RW-- */ + +/* + * NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME - Returns a type name for the + * display device ("CRT", "DFP", or "TV"). However, note that the determination + * of the name is based on the protocol through which the X driver communicates + * to the display device. E.g., if the driver communicates using VGA ,then the + * basename is "CRT"; if the driver communicates using TMDS, LVDS, or DP, then + * the name is "DFP". + */ +#define NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME 46 /* R-D- */ + +/* + * NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID - Returns the type-based name + ID for + * the display device, e.g. "CRT-0", "DFP-1", "TV-2". If this device is a + * DisplayPort 1.2 device, then this name will also be prepended with the + * device's port address like so: "DFP-1.0.1.2.3". See + * NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME for more information about the + * construction of type-based names. + */ +#define NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID 47 /* R-D- */ + +/* + * NV_CTRL_STRING_DISPLAY_NAME_DP_GUID - Returns the GUID of the DisplayPort + * display device. e.g. "DP-GUID-f16a5bde-79f3-11e1-b2ae-8b5a8969ba9c" + * + * The display device must be a DisplayPort 1.2 device. + */ +#define NV_CTRL_STRING_DISPLAY_NAME_DP_GUID 48 /* R-D- */ + +/* + * NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH - Returns the SHA-1 hash of the + * display device's EDID in 8-4-4-4-12 UID format. e.g. + * "DPY-EDID-f16a5bde-79f3-11e1-b2ae-8b5a8969ba9c" + * + * The display device must have a valid EDID. + */ +#define NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH 49 /* R-D- */ + +/* + * NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX - Returns the current NV-CONTROL + * target ID (name) of the display device. e.g. "DPY-1", "DPY-4" + * + * This name for the display device is not guarenteed to be the same between + * different runs of the X server. + */ +#define NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX 50 /* R-D- */ + +/* + * NV_CTRL_STRING_DISPLAY_NAME_RANDR - Returns the RandR output name for the + * display device. e.g. "VGA-1", "DVI-I-0", "DVI-D-3", "LVDS-1", "DP-2", + * "HDMI-3", "eDP-6". This name should match If this device is a DisplayPort + * 1.2 device, then this name will also be prepended with the device's port + * address like so: "DVI-I-3.0.1.2.3" + */ +#define NV_CTRL_STRING_DISPLAY_NAME_RANDR 51 /* R-D- */ + +#define NV_CTRL_STRING_LAST_ATTRIBUTE NV_CTRL_STRING_DISPLAY_NAME_RANDR + +/**************************************************************************/ + +/* + * Binary Data Attributes: + * + * Binary data attributes can be queryied through the XNVCTRLQueryBinaryData() + * and XNVCTRLQueryTargetBinaryData() function calls. + * + * There are currently no binary data attributes that can be set. + * + * Unless otherwise noted, all Binary data attributes can be queried + * using an NV_CTRL_TARGET_TYPE_X_SCREEN target. Attributes that cannot take + * an NV_CTRL_TARGET_TYPE_X_SCREEN target also cannot be queried through + * XNVCTRLQueryBinaryData() (Since an X Screen target is assumed). + */ + +/* + * NV_CTRL_BINARY_DATA_EDID - Returns a display device's EDID information + * data. + * + * This attribute may be queried through XNVCTRLQueryTargetBinaryData() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_BINARY_DATA_EDID 0 /* R-DG */ + +/* + * NV_CTRL_BINARY_DATA_MODELINES - Returns a display device's supported + * ModeLines. ModeLines are returned in a buffer, separated by a single + * '\0' and terminated by two consecutive '\0' s like so: + * + * "ModeLine 1\0ModeLine 2\0ModeLine 3\0Last ModeLine\0\0" + * + * This attribute may be queried through XNVCTRLQueryTargetBinaryData() + * using a NV_CTRL_TARGET_TYPE_GPU or NV_CTRL_TARGET_TYPE_X_SCREEN target. + * + * Each ModeLine string may be prepended with a comma-separated list + * of "token=value" pairs, separated from the ModeLine string with a + * "::". Valid tokens: + * + * Token Value + * "source" "xserver" - the ModeLine is from the core X server + * "xconfig" - the ModeLine was specified in the X config file + * "builtin" - the NVIDIA driver provided this builtin ModeLine + * "vesa" - this is a VESA standard ModeLine + * "edid" - the ModeLine was in the display device's EDID + * "nv-control" - the ModeLine was specified via NV-CONTROL + * + * "xconfig-name" - for ModeLines that were specified in the X config + * file, this is the name the X config file + * gave for the ModeLine. + * + * Note that a ModeLine can have several sources; the "source" token + * can appear multiple times in the "token=value" pairs list. + * Additional source values may be specified in the future. + * + * Additional tokens may be added in the future, so it is recommended + * that any token parser processing the returned string from + * NV_CTRL_BINARY_DATA_MODELINES be implemented to gracefully ignore + * unrecognized tokens. + * + * E.g., + * + * "source=xserver, source=vesa, source=edid :: "1024x768_70" 75.0 1024 1048 1184 1328 768 771 + * 777 806 -HSync -VSync" + * "source=xconfig, xconfig-name=1600x1200_60.00 :: "1600x1200_60_0" 161.0 1600 1704 1880 2160 + * 1200 1201 1204 1242 -HSync +VSync" + */ + +#define NV_CTRL_BINARY_DATA_MODELINES 1 /* R-DG */ + +/* + * NV_CTRL_BINARY_DATA_METAMODES - Returns an X Screen's supported + * MetaModes. MetaModes are returned in a buffer separated by a + * single '\0' and terminated by two consecutive '\0' s like so: + * + * "MetaMode 1\0MetaMode 2\0MetaMode 3\0Last MetaMode\0\0" + * + * The MetaMode string should have the same syntax as the MetaMode X + * configuration option, as documented in the NVIDIA driver README. + + * Each MetaMode string may be prepended with a comma-separated list + * of "token=value" pairs, separated from the MetaMode string with + * "::". Currently, valid tokens are: + * + * Token Value + * "id" <number> - the id of this MetaMode; this is stored in + * the Vertical Refresh field, as viewed + * by the XRandR and XF86VidMode X * + * extensions. + * + * "switchable" "yes"/"no" - whether this MetaMode may be switched to via + * ctrl-alt-+/-; Implicit MetaModes (see + * the "IncludeImplicitMetaModes" X + * config option), for example, are not + * normally made available through + * ctrl-alt-+/-. + * + * "source" "xconfig" - the MetaMode was specified in the X + * config file. + * "implicit" - the MetaMode was implicitly added; see the + * "IncludeImplicitMetaModes" X config option + * for details. + * "nv-control" - the MetaMode was added via the NV-CONTROL X + * extension to the currently running X server. + * "RandR" - the MetaMode was modified in response to an + * RandR RRSetCrtcConfig request. + * + * Additional tokens may be added in the future, so it is recommended + * that any token parser processing the returned string from + * NV_CTRL_BINARY_DATA_METAMODES be implemented to gracefully ignore + * unrecognized tokens. + * + * E.g., + * + * "id=50, switchable=yes, source=xconfig :: CRT-0: 1024x768 @1024x768 +0+0" + */ + +#define NV_CTRL_BINARY_DATA_METAMODES 2 /* R-D- */ +#define NV_CTRL_BINARY_DATA_METAMODES_VERSION_1 NV_CTRL_BINARY_DATA_METAMODES + +/* + * NV_CTRL_BINARY_DATA_XSCREENS_USING_GPU - Returns the list of X + * screens currently driven by the given GPU. + * + * The format of the returned data is: + * + * 4 CARD32 number of screens + * 4 * n CARD32 screen indices + * + * This attribute can only be queried through XNVCTRLQueryTargetBinaryData() + * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be + * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN. + */ + +#define NV_CTRL_BINARY_DATA_XSCREENS_USING_GPU 3 /* R-DG */ + +/* + * NV_CTRL_BINARY_DATA_GPUS_USED_BY_XSCREEN - Returns the list of GPUs + * currently in use by the given X screen. + * + * The format of the returned data is: + * + * 4 CARD32 number of GPUs + * 4 * n CARD32 GPU indices + */ + +#define NV_CTRL_BINARY_DATA_GPUS_USED_BY_XSCREEN 4 /* R--- */ + +/* + * NV_CTRL_BINARY_DATA_GPUS_USING_FRAMELOCK - Returns the list of + * GPUs currently connected to the given frame lock board. + * + * The format of the returned data is: + * + * 4 CARD32 number of GPUs + * 4 * n CARD32 GPU indices + * + * This attribute can only be queried through XNVCTRLQueryTargetBinaryData() + * using a NV_CTRL_TARGET_TYPE_FRAMELOCK target. This attribute cannot be + * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN. + */ + +#define NV_CTRL_BINARY_DATA_GPUS_USING_FRAMELOCK 5 /* R-DF */ + +/* + * NV_CTRL_BINARY_DATA_DISPLAY_VIEWPORT - Returns the Display Device's + * viewport box into the given X Screen (in X Screen coordinates.) + * + * The format of the returned data is: + * + * 4 CARD32 Offset X + * 4 CARD32 Offset Y + * 4 CARD32 Width + * 4 CARD32 Height + */ + +#define NV_CTRL_BINARY_DATA_DISPLAY_VIEWPORT 6 /* R-DG */ + +/* + * NV_CTRL_BINARY_DATA_FRAMELOCKS_USED_BY_GPU - Returns the list of + * Framelock devices currently connected to the given GPU. + * + * The format of the returned data is: + * + * 4 CARD32 number of Framelocks + * 4 * n CARD32 Framelock indices + * + * This attribute can only be queried through XNVCTRLQueryTargetBinaryData() + * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be + * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN. + */ + +#define NV_CTRL_BINARY_DATA_FRAMELOCKS_USED_BY_GPU 7 /* R-DG */ + +/* + * NV_CTRL_BINARY_DATA_GPUS_USING_VCSC - Returns the list of + * GPU devices connected to the given VCS. + * + * The format of the returned data is: + * + * 4 CARD32 number of GPUs + * 4 * n CARD32 GPU indices + * + * This attribute can only be queried through XNVCTRLQueryTargetBinaryData() + * using a NV_CTRL_TARGET_TYPE_VCSC target. This attribute cannot be + * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN and cannot be queried using + * a NV_CTRL_TARGET_TYPE_X_GPU + */ + +#define NV_CTRL_BINARY_DATA_GPUS_USING_VCSC 8 /* R-DV */ + +/* + * NV_CTRL_BINARY_DATA_VCSCS_USED_BY_GPU - Returns the VCSC device + * that is controlling the given GPU. + * + * The format of the returned data is: + * + * 4 CARD32 number of VCS (always 1) + * 4 * n CARD32 VCS indices + * + * This attribute can only be queried through XNVCTRLQueryTargetBinaryData() + * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be + * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN + */ + +#define NV_CTRL_BINARY_DATA_VCSCS_USED_BY_GPU 9 /* R-DG */ + +/* + * NV_CTRL_BINARY_DATA_COOLERS_USED_BY_GPU - Returns the coolers that + * are cooling the given GPU. + * + * The format of the returned data is: + * + * 4 CARD32 number of COOLER + * 4 * n CARD32 COOLER indices + * + * This attribute can only be queried through XNVCTRLQueryTargetBinaryData() + * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be + * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN + */ + +#define NV_CTRL_BINARY_DATA_COOLERS_USED_BY_GPU 10 /* R-DG */ + +/* + * NV_CTRL_BINARY_DATA_GPUS_USED_BY_LOGICAL_XSCREEN - Returns the list of + * GPUs currently driving the given X screen. If Xinerama is enabled, this + * will return all GPUs that are driving any X screen. + * + * The format of the returned data is: + * + * 4 CARD32 number of GPUs + * 4 * n CARD32 GPU indices + */ + +#define NV_CTRL_BINARY_DATA_GPUS_USED_BY_LOGICAL_XSCREEN 11 /* R--- */ + +/* + * NV_CTRL_BINARY_DATA_THERMAL_SENSORS_USED_BY_GPU - Returns the sensors that + * are attached to the given GPU. + * + * The format of the returned data is: + * + * 4 CARD32 number of SENSOR + * 4 * n CARD32 SENSOR indices + * + * This attribute can only be queried through XNVCTRLQueryTargetBinaryData() + * using a NV_CTRL_TARGET_TYPE_GPU target. This attribute cannot be + * queried using a NV_CTRL_TARGET_TYPE_X_SCREEN + */ + +#define NV_CTRL_BINARY_DATA_THERMAL_SENSORS_USED_BY_GPU 12 /* R--G */ + +/* + * NV_CTRL_BINARY_DATA_GLASSES_PAIRED_TO_3D_VISION_PRO_TRANSCEIVER - Returns + * the id of the glasses that are currently paired to the given + * 3D Vision Pro transceiver. + * + * The format of the returned data is: + * + * 4 CARD32 number of glasses + * 4 * n CARD32 id of glasses + * + * This attribute can only be queried through XNVCTRLQueryTargetBinaryData() + * using a NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER target. + */ +#define NV_CTRL_BINARY_DATA_GLASSES_PAIRED_TO_3D_VISION_PRO_TRANSCEIVER 13 /* R--T */ + +/* + * NV_CTRL_BINARY_DATA_DISPLAY_TARGETS - Returns all the display devices + * currently connected to any GPU on the X server. + * + * The format of the returned data is: + * + * 4 CARD32 number of display devices + * 4 * n CARD32 display device indices + * + * This attribute can only be queried through XNVCTRLQueryTargetBinaryData(). + */ + +#define NV_CTRL_BINARY_DATA_DISPLAY_TARGETS 14 /* R--- */ + +/* + * NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU - Returns the list of + * display devices that are connected to the GPU target. + * + * The format of the returned data is: + * + * 4 CARD32 number of display devices + * 4 * n CARD32 display device indices + * + * This attribute can only be queried through XNVCTRLQueryTargetBinaryData() + * using a NV_CTRL_TARGET_TYPE_GPU target. + */ + +#define NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU 15 /* R--G */ + +/* + * NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 - Returns values similar to + * NV_CTRL_BINARY_DATA_METAMODES(_VERSION_1) but also returns extended syntax + * information to indicate a specific display device, as well as other per- + * display deviceflags as "token=value" pairs. For example: + * + * "DPY-1: 1280x1024 {Stereo=PassiveLeft}, + * DPY-2: 1280x1024 {Stereo=PassiveRight}," + * + * The display device names have the form "DPY-%d", where the integer + * part of the name is the NV-CONTROL target ID for that display device + * for this instance of the X server. Note that display device NV-CONTROL + * target IDs are not guaranteed to be the same from one run of the X + * server to the next. + */ + +#define NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 16 /* R-D- */ + +/* + * NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN - Returns the list of + * display devices that are currently scanning out the X screen target. + * + * The format of the returned data is: + * + * 4 CARD32 number of display devices + * 4 * n CARD32 display device indices + * + * This attribute can only be queried through XNVCTRLQueryTargetBinaryData() + * using a NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +#define NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN 17 /* R--- */ + +#define NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN + +/**************************************************************************/ + +/* + * String Operation Attributes: + * + * These attributes are used with the XNVCTRLStringOperation() + * function; a string is specified as input, and a string is returned + * as output. + * + * Unless otherwise noted, all attributes can be operated upon using + * an NV_CTRL_TARGET_TYPE_X_SCREEN target. + */ + +/* + * NV_CTRL_STRING_OPERATION_ADD_METAMODE - provide a MetaMode string + * as input, and returns a string containing comma-separated list of + * "token=value" pairs as output. Currently, the only output token is + * "id", which indicates the id that was assigned to the MetaMode. + * + * All ModeLines referenced in the MetaMode must already exist for + * each display device (as returned by the + * NV_CTRL_BINARY_DATA_MODELINES attribute). + * + * The MetaMode string should have the same syntax as the MetaMode X + * configuration option, as documented in the NVIDIA driver README. + * + * The input string can optionally be prepended with a string of + * comma-separated "token=value" pairs, separated from the MetaMode + * string by "::". Currently, the only valid token is "index" which + * indicates the insertion index for the MetaMode. + * + * E.g., + * + * Input: "index=5 :: 1600x1200+0+0, 1600x1200+1600+0" + * Output: "id=58" + * + * which causes the MetaMode to be inserted at position 5 in the + * MetaMode list (all entries after 5 will be shifted down one slot in + * the list), and the X server's containing mode stores 58 as the + * VRefresh, so that the MetaMode can be uniquely identifed through + * XRandR and XF86VidMode. + */ + +#define NV_CTRL_STRING_OPERATION_ADD_METAMODE 0 + +/* + * NV_CTRL_STRING_OPERATION_GTF_MODELINE - provide as input a string + * of comma-separated "token=value" pairs, and returns a ModeLine + * string, computed using the GTF formula using the parameters from + * the input string. Valid tokens for the input string are "width", + * "height", and "refreshrate". + * + * E.g., + * + * Input: "width=1600, height=1200, refreshrate=60" + * Output: "160.96 1600 1704 1880 2160 1200 1201 1204 1242 -HSync +VSync" + * + * This operation does not have any impact on any display device's + * modePool, and the ModeLine is not validated; it is simply intended + * for generating ModeLines. + */ + +#define NV_CTRL_STRING_OPERATION_GTF_MODELINE 1 + +/* + * NV_CTRL_STRING_OPERATION_CVT_MODELINE - provide as input a string + * of comma-separated "token=value" pairs, and returns a ModeLine + * string, computed using the CVT formula using the parameters from + * the input string. Valid tokens for the input string are "width", + * "height", "refreshrate", and "reduced-blanking". The + * "reduced-blanking" argument can be "0" or "1", to enable or disable + * use of reduced blanking for the CVT formula. + * + * E.g., + * + * Input: "width=1600, height=1200, refreshrate=60, reduced-blanking=1" + * Output: "130.25 1600 1648 1680 1760 1200 1203 1207 1235 +HSync -VSync" + * + * This operation does not have any impact on any display device's + * modePool, and the ModeLine is not validated; it is simply intended + * for generating ModeLines. + */ + +#define NV_CTRL_STRING_OPERATION_CVT_MODELINE 2 + +/* + * NV_CTRL_STRING_OPERATION_BUILD_MODEPOOL - build a ModePool for the + * specified display device on the specified target (either an X + * screen or a GPU). This is typically used to generate a ModePool + * for a display device on a GPU on which no X screens are present. + * + * Currently, a display device's ModePool is static for the life of + * the X server, so XNVCTRLStringOperation will return FALSE if + * requested to build a ModePool on a display device that already has + * a ModePool. + * + * The string input to BUILD_MODEPOOL may be NULL. If it is not NULL, + * then it is interpreted as a double-colon ("::") separated list + * of "option=value" pairs, where the options and the syntax of their + * values are the X configuration options that impact the behavior of + * modePool construction; namely: + * + * "ModeValidation" + * "HorizSync" + * "VertRefresh" + * "FlatPanelProperties" + * "TVStandard" + * "ExactModeTimingsDVI" + * "UseEdidFreqs" + * + * An example input string might look like: + * + * "ModeValidation=NoVesaModes :: HorizSync=50-110 :: VertRefresh=50-150" + * + * This request currently does not return a string. + */ + +#define NV_CTRL_STRING_OPERATION_BUILD_MODEPOOL 3 /* DG */ + +/* + * NV_CTRL_STRING_OPERATION_GVI_CONFIGURE_STREAMS - Configure the streams- + * to-jack+channel topology for a GVI (Graphics capture board). + * + * The string input to GVI_CONFIGURE_STREAMS may be NULL. If this is the + * case, then the current topology is returned. + * + * If the input string to GVI_CONFIGURE_STREAMS is not NULL, the string + * is interpreted as a semicolon (";") separated list of comma-separated + * lists of "option=value" pairs that define a stream's composition. The + * available options and their values are: + * + * "stream": Defines which stream this comma-separated list describes. + * Valid values are the integers between 0 and + * NV_CTRL_GVI_NUM_STREAMS-1 (inclusive). + * + * "linkN": Defines a jack+channel pair to use for the given link N. + * Valid options are the string "linkN", where N is an integer + * between 0 and NV_CTRL_GVI_MAX_LINKS_PER_STREAM-1 (inclusive). + * Valid values for these options are strings of the form + * "jackX" and/or "jackX.Y", where X is an integer between 0 and + * NV_CTRL_GVI_NUM_JACKS-1 (inclusive), and Y (optional) is an + * integer between 0 and NV_CTRL_GVI_MAX_CHANNELS_PER_JACK-1 + * (inclusive). + * + * An example input string might look like: + * + * "stream=0, link0=jack0, link1=jack1; stream=1, link0=jack2.1" + * + * This example specifies two streams, stream 0 and stream 1. Stream 0 + * is defined to capture link0 data from the first channel (channel 0) of + * BNC jack 0 and link1 data from the first channel of BNC jack 1. The + * second stream (Stream 1) is defined to capture link0 data from channel 1 + * (second channel) of BNC jack 2. + * + * This example shows a possible configuration for capturing 3G input: + * + * "stream=0, link0=jack0.0, link1=jack0.1" + * + * Applications should query the following attributes to determine + * possible combinations: + * + * NV_CTRL_GVI_MAX_STREAMS + * NV_CTRL_GVI_MAX_LINKS_PER_STREAM + * NV_CTRL_GVI_NUM_JACKS + * NV_CTRL_GVI_MAX_CHANNELS_PER_JACK + * + * Note: A jack+channel pair can only be tied to one link/stream. + * + * Upon successful configuration or querying of this attribute, a string + * representing the current topology for all known streams on the device + * will be returned. On failure, NULL is returned. + * + * Note: Setting this attribute may also result in the following + * NV-CONTROL attributes being reset on the GVI device (to ensure + * the configuration remains valid): + * NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT + * NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT + * NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING + */ + +#define NV_CTRL_STRING_OPERATION_GVI_CONFIGURE_STREAMS 4 /* RW-I */ + +#define NV_CTRL_STRING_OPERATION_LAST_ATTRIBUTE NV_CTRL_STRING_OPERATION_GVI_CONFIGURE_STREAMS + +/**************************************************************************/ + +/* + * CTRLAttributeValidValuesRec - + * + * structure and related defines used by + * XNVCTRLQueryValidAttributeValues() to describe the valid values of + * a particular attribute. The type field will be one of: + * + * ATTRIBUTE_TYPE_INTEGER : the attribute is an integer value; there + * is no fixed range of valid values. + * + * ATTRIBUTE_TYPE_BITMASK : the attribute is an integer value, + * interpretted as a bitmask. + * + * ATTRIBUTE_TYPE_BOOL : the attribute is a boolean, valid values are + * either 1 (on/true) or 0 (off/false). + * + * ATTRIBUTE_TYPE_RANGE : the attribute can have any integer value + * between NVCTRLAttributeValidValues.u.range.min and + * NVCTRLAttributeValidValues.u.range.max (inclusive). + * + * ATTRIBUTE_TYPE_INT_BITS : the attribute can only have certain + * integer values, indicated by which bits in + * NVCTRLAttributeValidValues.u.bits.ints are on (for example: if bit + * 0 is on, then 0 is a valid value; if bit 5 is on, then 5 is a valid + * value, etc). This is useful for attributes like NV_CTRL_FSAA_MODE, + * which can only have certain values, depending on GPU. + * + * ATTRIBUTE_TYPE_64BIT_INTEGER : the attribute is a 64 bit integer value; + * there is no fixed range of valid values. + * + * ATTRIBUTE_TYPE_STRING : the attribute is a string value; there is no fixed + * range of valid values. + * + * ATTRIBUTE_TYPE_BINARY_DATA : the attribute is binary data; there is + * no fixed range of valid values. + * + * ATTRIBUTE_TYPE_STRING_OPERATION : the attribute is a string; there is + * no fixed range of valid values. + * + * + * The permissions field of NVCTRLAttributeValidValuesRec is a bitmask + * that may contain: + * + * ATTRIBUTE_TYPE_READ - Attribute may be read (queried.) + * ATTRIBUTE_TYPE_WRITE - Attribute may be written to (set.) + * ATTRIBUTE_TYPE_DISPLAY - Attribute is valid for display target types + * (requires a display_mask if queried via + * a GPU or X screen.) + * ATTRIBUTE_TYPE_GPU - Attribute is valid for GPU target types. + * ATTRIBUTE_TYPE_FRAMELOCK - Attribute is valid for Frame Lock target types. + * ATTRIBUTE_TYPE_X_SCREEN - Attribute is valid for X Screen target types. + * ATTRIBUTE_TYPE_XINERAMA - Attribute will be made consistent for all + * X Screens when the Xinerama extension is enabled. + * ATTRIBUTE_TYPE_VCSC - Attribute is valid for Visual Computing System + * target types. + * ATTRIBUTE_TYPE_GVI - Attribute is valid for Graphics Video In target + * types. + * ATTRIBUTE_TYPE_COOLER - Attribute is valid for Cooler target types. + * ATTRIBUTE_TYPE_3D_VISION_PRO_TRANSCEIVER - Attribute is valid for 3D Vision + * Pro Transceiver target types. + * + * See 'Key to Integer Attribute "Permissions"' at the top of this + * file for a description of what these permission bits mean. + */ + +#define ATTRIBUTE_TYPE_UNKNOWN 0 +#define ATTRIBUTE_TYPE_INTEGER 1 +#define ATTRIBUTE_TYPE_BITMASK 2 +#define ATTRIBUTE_TYPE_BOOL 3 +#define ATTRIBUTE_TYPE_RANGE 4 +#define ATTRIBUTE_TYPE_INT_BITS 5 +#define ATTRIBUTE_TYPE_64BIT_INTEGER 6 +#define ATTRIBUTE_TYPE_STRING 7 +#define ATTRIBUTE_TYPE_BINARY_DATA 8 +#define ATTRIBUTE_TYPE_STRING_OPERATION 9 + +#define ATTRIBUTE_TYPE_READ 0x001 +#define ATTRIBUTE_TYPE_WRITE 0x002 +#define ATTRIBUTE_TYPE_DISPLAY 0x004 +#define ATTRIBUTE_TYPE_GPU 0x008 +#define ATTRIBUTE_TYPE_FRAMELOCK 0x010 +#define ATTRIBUTE_TYPE_X_SCREEN 0x020 +#define ATTRIBUTE_TYPE_XINERAMA 0x040 +#define ATTRIBUTE_TYPE_VCSC 0x080 +#define ATTRIBUTE_TYPE_GVI 0x100 +#define ATTRIBUTE_TYPE_COOLER 0x200 +#define ATTRIBUTE_TYPE_THERMAL_SENSOR 0x400 +#define ATTRIBUTE_TYPE_3D_VISION_PRO_TRANSCEIVER 0x800 + +#define ATTRIBUTE_TYPE_ALL_TARGETS \ + ((ATTRIBUTE_TYPE_DISPLAY) | (ATTRIBUTE_TYPE_GPU) | (ATTRIBUTE_TYPE_FRAMELOCK) | \ + (ATTRIBUTE_TYPE_X_SCREEN) | (ATTRIBUTE_TYPE_VCSC) | (ATTRIBUTE_TYPE_GVI) | \ + (ATTRIBUTE_TYPE_COOLER) | (ATTRIBUTE_TYPE_THERMAL_SENSOR) | \ + (ATTRIBUTE_TYPE_3D_VISION_PRO_TRANSCEIVER)) + +typedef struct _NVCTRLAttributeValidValues +{ + int type; + union + { + struct + { + int64_t min; + int64_t max; + } range; + struct + { + unsigned int ints; + } bits; + } u; + unsigned int permissions; +} NVCTRLAttributeValidValuesRec; + +typedef struct _NVCTRLAttributePermissions +{ + int type; + unsigned int permissions; +} NVCTRLAttributePermissionsRec; + +/**************************************************************************/ + +/* + * NV-CONTROL X event notification. + * + * To receive X event notifications dealing with NV-CONTROL, you should + * call XNVCtrlSelectNotify() with one of the following set as the type + * of event to receive (see NVCtrlLib.h for more information): + */ + +#define ATTRIBUTE_CHANGED_EVENT 0 +#define TARGET_ATTRIBUTE_CHANGED_EVENT 1 +#define TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT 2 +#define TARGET_STRING_ATTRIBUTE_CHANGED_EVENT 3 +#define TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT 4 + +#endif /* __NVCTRL_H */ diff --git a/gfx/angle/src/third_party/libXNVCtrl/NVCtrlLib.h b/gfx/angle/src/third_party/libXNVCtrl/NVCtrlLib.h new file mode 100755 index 000000000..1a5d5decf --- /dev/null +++ b/gfx/angle/src/third_party/libXNVCtrl/NVCtrlLib.h @@ -0,0 +1,707 @@ +/* + * Copyright (c) 2008 NVIDIA, Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef __NVCTRLLIB_H +#define __NVCTRLLIB_H + +#include "NVCtrl.h" + +#if defined __cplusplus +extern "C" { +#endif + +/* + * XNVCTRLQueryExtension - + * + * Returns True if the extension exists, returns False otherwise. + * event_basep and error_basep are the extension event and error + * bases. Currently, no extension specific errors or events are + * defined. + */ + +Bool XNVCTRLQueryExtension(Display *dpy, int *event_basep, int *error_basep); + +/* + * XNVCTRLQueryVersion - + * + * Returns True if the extension exists, returns False otherwise. + * major and minor are the extension's major and minor version + * numbers. + */ + +Bool XNVCTRLQueryVersion(Display *dpy, int *major, int *minor); + +/* + * XNVCTRLIsNvScreen + * + * Returns True is the specified screen is controlled by the NVIDIA + * driver. Returns False otherwise. + */ + +Bool XNVCTRLIsNvScreen(Display *dpy, int screen); + +/* + * XNVCTRLQueryTargetCount - + * + * Returns True if the target type exists. Returns False otherwise. + * If XNVCTRLQueryTargetCount returns True, value will contain the + * count of existing targets on the server of the specified target + * type. + * + * Please see "Attribute Targets" in NVCtrl.h for the list of valid + * target types. + * + * Possible errors: + * BadValue - The target doesn't exist. + */ + +Bool XNVCTRLQueryTargetCount(Display *dpy, int target_type, int *value); + +/* + * XNVCTRLSetAttribute - + * + * Sets the attribute to the given value. The attributes and their + * possible values are listed in NVCtrl.h. + * + * Not all attributes require the display_mask parameter; see + * NVCtrl.h for details. + * + * Calling this function is equivalent to calling XNVCTRLSetTargetAttribute() + * with the target_type set to NV_CTRL_TARGET_TYPE_X_SCREEN and + * target_id set to 'screen'. + * + * Possible errors: + * BadValue - The screen or attribute doesn't exist. + * BadMatch - The NVIDIA driver is not present on that screen. + */ + +void XNVCTRLSetAttribute(Display *dpy, + int screen, + unsigned int display_mask, + unsigned int attribute, + int value); + +/* + * XNVCTRLSetTargetAttribute - + * + * Sets the attribute to the given value. The attributes and their + * possible values are listed in NVCtrl.h. + * + * Not all attributes require the display_mask parameter; see + * NVCtrl.h for details. + * + * Possible errors: + * BadValue - The target or attribute doesn't exist. + * BadMatch - The NVIDIA driver is not present on that target. + */ + +void XNVCTRLSetTargetAttribute(Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + int value); + +/* + * XNVCTRLSetAttributeAndGetStatus - + * + * Same as XNVCTRLSetAttribute(). + * In addition, XNVCTRLSetAttributeAndGetStatus() returns + * True if the operation succeeds, False otherwise. + * + */ + +Bool XNVCTRLSetAttributeAndGetStatus(Display *dpy, + int screen, + unsigned int display_mask, + unsigned int attribute, + int value); + +/* + * XNVCTRLSetTargetAttributeAndGetStatus - + * + * Same as XNVCTRLSetTargetAttribute(). + * In addition, XNVCTRLSetTargetAttributeAndGetStatus() returns + * True if the operation succeeds, False otherwise. + * + */ + +Bool XNVCTRLSetTargetAttributeAndGetStatus(Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + int value); + +/* + * XNVCTRLQueryAttribute - + * + * Returns True if the attribute exists. Returns False otherwise. + * If XNVCTRLQueryAttribute returns True, value will contain the + * value of the specified attribute. + * + * Not all attributes require the display_mask parameter; see + * NVCtrl.h for details. + * + * Calling this function is equivalent to calling + * XNVCTRLQueryTargetAttribute() with the target_type set to + * NV_CTRL_TARGET_TYPE_X_SCREEN and target_id set to 'screen'. + * + * Possible errors: + * BadValue - The screen doesn't exist. + * BadMatch - The NVIDIA driver is not present on that screen. + */ + +Bool XNVCTRLQueryAttribute(Display *dpy, + int screen, + unsigned int display_mask, + unsigned int attribute, + int *value); + +/* + * XNVCTRLQueryTargetAttribute - + * + * Returns True if the attribute exists. Returns False otherwise. + * If XNVCTRLQueryTargetAttribute returns True, value will contain the + * value of the specified attribute. + * + * Not all attributes require the display_mask parameter; see + * NVCtrl.h for details. + * + * Possible errors: + * BadValue - The target doesn't exist. + * BadMatch - The NVIDIA driver does not control the target. + */ + +Bool XNVCTRLQueryTargetAttribute(Display *dpy, + int target_Type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + int *value); + +/* + * XNVCTRLQueryTargetAttribute64 - + * + * Returns True if the attribute exists. Returns False otherwise. + * If XNVCTRLQueryTargetAttribute returns True, value will contain the + * value of the specified attribute. + * + * Not all attributes require the display_mask parameter; see + * NVCtrl.h for details. + * + * Note: this function behaves like XNVCTRLQueryTargetAttribute(), + * but supports 64-bit integer attributes. + * + * Possible errors: + * BadValue - The target doesn't exist. + * BadMatch - The NVIDIA driver does not control the target. + */ + +Bool XNVCTRLQueryTargetAttribute64(Display *dpy, + int target_Type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + int64_t *value); + +/* + * XNVCTRLQueryStringAttribute - + * + * Returns True if the attribute exists. Returns False otherwise. + * If XNVCTRLQueryStringAttribute returns True, *ptr will point to an + * allocated string containing the string attribute requested. It is + * the caller's responsibility to free the string when done. + * + * Calling this function is equivalent to calling + * XNVCTRLQueryTargetStringAttribute() with the target_type set to + * NV_CTRL_TARGET_TYPE_X_SCREEN and target_id set to 'screen'. + * + * Possible errors: + * BadValue - The screen doesn't exist. + * BadMatch - The NVIDIA driver is not present on that screen. + * BadAlloc - Insufficient resources to fulfill the request. + */ + +Bool XNVCTRLQueryStringAttribute(Display *dpy, + int screen, + unsigned int display_mask, + unsigned int attribute, + char **ptr); + +/* + * XNVCTRLQueryTargetStringAttribute - + * + * Returns True if the attribute exists. Returns False otherwise. + * If XNVCTRLQueryTargetStringAttribute returns True, *ptr will point + * to an allocated string containing the string attribute requested. + * It is the caller's responsibility to free the string when done. + * + * Possible errors: + * BadValue - The target doesn't exist. + * BadMatch - The NVIDIA driver does not control the target. + * BadAlloc - Insufficient resources to fulfill the request. + */ + +Bool XNVCTRLQueryTargetStringAttribute(Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + char **ptr); + +/* + * XNVCTRLSetStringAttribute - + * + * Returns True if the operation succeded. Returns False otherwise. + * + * Possible X errors: + * BadValue - The screen doesn't exist. + * BadMatch - The NVIDIA driver is not present on that screen. + * BadAlloc - Insufficient resources to fulfill the request. + */ + +Bool XNVCTRLSetStringAttribute(Display *dpy, + int screen, + unsigned int display_mask, + unsigned int attribute, + char *ptr); + +/* + * XNVCTRLSetTargetStringAttribute - + * + * Returns True if the operation succeded. Returns False otherwise. + * + * Possible X errors: + * BadValue - The screen doesn't exist. + * BadMatch - The NVIDIA driver is not present on that screen. + * BadAlloc - Insufficient resources to fulfill the request. + */ + +Bool XNVCTRLSetTargetStringAttribute(Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + char *ptr); + +/* + * XNVCTRLQueryValidAttributeValues - + * + * Returns True if the attribute exists. Returns False otherwise. If + * XNVCTRLQueryValidAttributeValues returns True, values will indicate + * the valid values for the specified attribute; see the description + * of NVCTRLAttributeValidValues in NVCtrl.h. + * + * Calling this function is equivalent to calling + * XNVCTRLQueryValidTargetAttributeValues() with the target_type set to + * NV_CTRL_TARGET_TYPE_X_SCREEN and target_id set to 'screen'. + */ + +Bool XNVCTRLQueryValidAttributeValues(Display *dpy, + int screen, + unsigned int display_mask, + unsigned int attribute, + NVCTRLAttributeValidValuesRec *values); + +/* + * XNVCTRLQueryValidTargetAttributeValues - + * + * Returns True if the attribute exists. Returns False otherwise. If + * XNVCTRLQueryValidTargetAttributeValues returns True, values will indicate + * the valid values for the specified attribute. + */ + +Bool XNVCTRLQueryValidTargetAttributeValues(Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + NVCTRLAttributeValidValuesRec *values); + +/* + * XNVCTRLQueryValidTargetStringAttributeValues - + * + * Returns True if the attribute exists. Returns False otherwise. If + * XNVCTRLQueryValidTargetStringAttributeValues returns True, values will + * indicate the valid values for the specified attribute. + */ + +Bool XNVCTRLQueryValidTargetStringAttributeValues(Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + NVCTRLAttributeValidValuesRec *values); + +/* + * XNVCTRLQueryAttributePermissions - + * + * Returns True if the attribute exists. Returns False otherwise. If + * XNVCTRLQueryAttributePermissions returns True, permissions will + * indicate the permission flags for the attribute. + */ + +Bool XNVCTRLQueryAttributePermissions(Display *dpy, + unsigned int attribute, + NVCTRLAttributePermissionsRec *permissions); + +/* + * XNVCTRLQueryStringAttributePermissions - + * + * Returns True if the attribute exists. Returns False otherwise. If + * XNVCTRLQueryStringAttributePermissions returns True, permissions will + * indicate the permission flags for the attribute. + */ + +Bool XNVCTRLQueryStringAttributePermissions(Display *dpy, + unsigned int attribute, + NVCTRLAttributePermissionsRec *permissions); + +/* + * XNVCTRLQueryBinaryDataAttributePermissions - + * + * Returns True if the attribute exists. Returns False otherwise. If + * XNVCTRLQueryBinaryDataAttributePermissions returns True, permissions + * will indicate the permission flags for the attribute. + */ + +Bool XNVCTRLQueryBinaryDataAttributePermissions(Display *dpy, + unsigned int attribute, + NVCTRLAttributePermissionsRec *permissions); + +/* + * XNVCTRLQueryStringOperationAttributePermissions - + * + * Returns True if the attribute exists. Returns False otherwise. If + * XNVCTRLQueryStringOperationAttributePermissions returns True, + * permissions will indicate the permission flags for the attribute. + */ + +Bool XNVCTRLQueryStringOperationAttributePermissions(Display *dpy, + unsigned int attribute, + NVCTRLAttributePermissionsRec *permissions); + +/* + * XNVCTRLSetGvoColorConversion - + * + * Sets the color conversion matrix, offset, and scale that should be + * used for GVO (Graphic to Video Out). + * + * The Color Space Conversion data is ordered like this: + * + * colorMatrix[0][0] // r.Y + * colorMatrix[0][1] // g.Y + * colorMatrix[0][2] // b.Y + * + * colorMatrix[1][0] // r.Cr + * colorMatrix[1][1] // g.Cr + * colorMatrix[1][2] // b.Cr + * + * colorMatrix[2][0] // r.Cb + * colorMatrix[2][1] // g.Cb + * colorMatrix[2][2] // b.Cb + * + * colorOffset[0] // Y + * colorOffset[1] // Cr + * colorOffset[2] // Cb + * + * colorScale[0] // Y + * colorScale[1] // Cr + * colorScale[2] // Cb + * + * where the data is used according to the following formulae: + * + * Y = colorOffset[0] + colorScale[0] * + * (R * colorMatrix[0][0] + + * G * colorMatrix[0][1] + + * B * colorMatrix[0][2]); + * + * Cr = colorOffset[1] + colorScale[1] * + * (R * colorMatrix[1][0] + + * G * colorMatrix[1][1] + + * B * colorMatrix[1][2]); + * + * Cb = colorOffset[2] + colorScale[2] * + * (R * colorMatrix[2][0] + + * G * colorMatrix[2][1] + + * B * colorMatrix[2][2]); + * + * Possible errors: + * BadMatch - The NVIDIA driver is not present on that screen. + * BadImplementation - GVO is not available on that screen. + */ + +void XNVCTRLSetGvoColorConversion(Display *dpy, + int screen, + float colorMatrix[3][3], + float colorOffset[3], + float colorScale[3]); + +/* + * XNVCTRLQueryGvoColorConversion - + * + * Retrieves the color conversion matrix and color offset + * that are currently being used for GVO (Graphic to Video Out). + * + * The values are ordered within the arrays according to the comments + * for XNVCTRLSetGvoColorConversion(). + * + * Possible errors: + * BadMatch - The NVIDIA driver is not present on that screen. + * BadImplementation - GVO is not available on that screen. + */ + +Bool XNVCTRLQueryGvoColorConversion(Display *dpy, + int screen, + float colorMatrix[3][3], + float colorOffset[3], + float colorScale[3]); + +/* + * XNVCTRLQueryBinaryData - + * + * Returns True if the attribute exists. Returns False otherwise. + * If XNVCTRLQueryBinaryData returns True, *ptr will point to an + * allocated block of memory containing the binary data attribute + * requested. It is the caller's responsibility to free the data + * when done. len will list the length of the binary data. + * + * Calling this function is equivalent to calling + * XNVCTRLQueryTargetBinaryData() with the target_type set to + * NV_CTRL_TARGET_TYPE_X_SCREEN and target_id set to 'screen'. + * + * Possible errors: + * BadValue - The screen doesn't exist. + * BadMatch - The NVIDIA driver is not present on that screen. + * BadAlloc - Insufficient resources to fulfill the request. + */ + +Bool XNVCTRLQueryBinaryData(Display *dpy, + int screen, + unsigned int display_mask, + unsigned int attribute, + unsigned char **ptr, + int *len); + +/* + * XNVCTRLQueryTargetBinaryData - + * + * Returns True if the attribute exists. Returns False otherwise. + * If XNVCTRLQueryTargetBinaryData returns True, *ptr will point to an + * allocated block of memory containing the binary data attribute + * requested. It is the caller's responsibility to free the data + * when done. len will list the length of the binary data. + * + * Possible errors: + * BadValue - The target doesn't exist. + * BadMatch - The NVIDIA driver does not control the target. + * BadAlloc - Insufficient resources to fulfill the request. + */ + +Bool XNVCTRLQueryTargetBinaryData(Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + unsigned char **ptr, + int *len); + +/* + * XNVCTRLStringOperation - + * + * Takes a string as input and returns a Xmalloc'ed string as output. + * Returns True on success and False on failure. + */ + +Bool XNVCTRLStringOperation(Display *dpy, + int target_type, + int target_id, + unsigned int display_mask, + unsigned int attribute, + char *pIn, + char **ppOut); + +/* + * XNVCtrlSelectNotify - + * + * This enables/disables receiving of NV-CONTROL events. The type + * specifies the type of event to enable (currently, the only + * type that can be requested per-screen with XNVCtrlSelectNotify() + * is ATTRIBUTE_CHANGED_EVENT); onoff controls whether receiving this + * type of event should be enabled (True) or disabled (False). + * + * Returns True if successful, or False if the screen is not + * controlled by the NVIDIA driver. + */ + +Bool XNVCtrlSelectNotify(Display *dpy, int screen, int type, Bool onoff); + +/* + * XNVCtrlSelectTargetNotify - + * + * This enables/disables receiving of NV-CONTROL events that happen on + * the specified target. The notify_type specifies the type of event to + * enable (currently, the only type that can be requested per-target with + * XNVCtrlSelectTargetNotify() is TARGET_ATTRIBUTE_CHANGED_EVENT); onoff + * controls whether receiving this type of event should be enabled (True) + * or disabled (False). + * + * Returns True if successful, or False if the target is not + * controlled by the NVIDIA driver. + */ + +Bool XNVCtrlSelectTargetNotify(Display *dpy, + int target_type, + int target_id, + int notify_type, + Bool onoff); + +/* + * XNVCtrlEvent structure + */ + +typedef struct +{ + int type; + unsigned long serial; + Bool send_event; /* always FALSE, we don't allow send_events */ + Display *display; + Time time; + int screen; + unsigned int display_mask; + unsigned int attribute; + int value; +} XNVCtrlAttributeChangedEvent; + +typedef union +{ + int type; + XNVCtrlAttributeChangedEvent attribute_changed; + long pad[24]; +} XNVCtrlEvent; + +/* + * XNVCtrlEventTarget structure + */ + +typedef struct +{ + int type; + unsigned long serial; + Bool send_event; /* always FALSE, we don't allow send_events */ + Display *display; + Time time; + int target_type; + int target_id; + unsigned int display_mask; + unsigned int attribute; + int value; +} XNVCtrlAttributeChangedEventTarget; + +typedef union +{ + int type; + XNVCtrlAttributeChangedEventTarget attribute_changed; + long pad[24]; +} XNVCtrlEventTarget; + +/* + * XNVCtrlEventTargetAvailability structure + */ + +typedef struct +{ + int type; + unsigned long serial; + Bool send_event; /* always FALSE, we don't allow send_events */ + Display *display; + Time time; + int target_type; + int target_id; + unsigned int display_mask; + unsigned int attribute; + int value; + Bool availability; +} XNVCtrlAttributeChangedEventTargetAvailability; + +typedef union +{ + int type; + XNVCtrlAttributeChangedEventTargetAvailability attribute_changed; + long pad[24]; +} XNVCtrlEventTargetAvailability; + +/* + * XNVCtrlStringEventTarget structure + */ + +typedef struct +{ + int type; + unsigned long serial; + Bool send_event; /* always FALSE, we don't allow send_events */ + Display *display; + Time time; + int target_type; + int target_id; + unsigned int display_mask; + unsigned int attribute; +} XNVCtrlStringAttributeChangedEventTarget; + +typedef union +{ + int type; + XNVCtrlStringAttributeChangedEventTarget attribute_changed; + long pad[24]; +} XNVCtrlStringEventTarget; + +/* + * XNVCtrlBinaryEventTarget structure + */ + +typedef struct +{ + int type; + unsigned long serial; + Bool send_event; /* always FALSE, we don't allow send_events */ + Display *display; + Time time; + int target_type; + int target_id; + unsigned int display_mask; + unsigned int attribute; +} XNVCtrlBinaryAttributeChangedEventTarget; + +typedef union +{ + int type; + XNVCtrlBinaryAttributeChangedEventTarget attribute_changed; + long pad[24]; +} XNVCtrlBinaryEventTarget; + +#if defined __cplusplus +} /* extern "C" */ +#endif + +#endif /* __NVCTRLLIB_H */ diff --git a/gfx/angle/src/third_party/libXNVCtrl/README.angle b/gfx/angle/src/third_party/libXNVCtrl/README.angle new file mode 100755 index 000000000..22b9bd0aa --- /dev/null +++ b/gfx/angle/src/third_party/libXNVCtrl/README.angle @@ -0,0 +1,14 @@ +Name: NVidia Control X Extension Library +Short Name: libXNVCtrl +URL: http://cgit.freedesktop.org/~aplattner/nvidia-settings/ +Version: unknown +Date: 2008 +License: MIT +Security Critical: no + +Description: +This package provides access to NVidia Control X Extension. It is used to determine the version of the NVIDIA driver in use. + +The current version is pulled from nvidia-settings-302.17. + +Local Modifications: diff --git a/gfx/angle/src/third_party/libXNVCtrl/libXNVCtrl.gyp b/gfx/angle/src/third_party/libXNVCtrl/libXNVCtrl.gyp new file mode 100755 index 000000000..6f0ee2f97 --- /dev/null +++ b/gfx/angle/src/third_party/libXNVCtrl/libXNVCtrl.gyp @@ -0,0 +1,18 @@ +# Copyright (c) 2016 The ANGLE Project Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'targets': + [{ + 'target_name': 'libXNVCtrl', + 'type': 'static_library', + 'sources': + [ + 'NVCtrl.c', + 'NVCtrl.h', + 'NVCtrlLib.h', + 'nv_control.h', + ], + }], +} diff --git a/gfx/angle/src/third_party/libXNVCtrl/nv_control.h b/gfx/angle/src/third_party/libXNVCtrl/nv_control.h new file mode 100755 index 000000000..5023c9b58 --- /dev/null +++ b/gfx/angle/src/third_party/libXNVCtrl/nv_control.h @@ -0,0 +1,652 @@ +/* + * Copyright (c) 2008 NVIDIA, Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * + * NV-CONTROL Protocol Version History + * + * 1.0 - 1.5 NVIDIA Internal development versions + * 1.6 Initial public version + * 1.7 Added QueryBinaryData request + * 1.8 Added TargetTypes + * 1.9 Added QueryTargetCount request + * 1.10 Fixed target type/id byte ordering for compatibility with + * pre-1.8 NV-CONTROL clients + * 1.11 NVIDIA Internal development version + * 1.12 Added StringOperation request + * 1.13 NVIDIA Internal development version + * 1.14 Fixed an NV_CTRL_BINARY_DATA_MODELINES double scan modeline + * reporting bug (vsyncstart, vsyncend, and vtotal were incorrectly + * doubled) + * 1.15 Added AVAILABILITY_TARGET_ATTRIBUTE_CHANGED_EVENT + * 1.16 Added TARGET_STRING_ATTRIBUTE_CHANGED_EVENT + * 1.17 Added TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT + * 1.18 Updated QueryTargetCount to return a count of 0, rather than + * BadMatch, if an unknown TargetType is specified + * 1.19 Added TargetType support for SetAttributeAndGetStatus and + * SetStringAttribute requests + * 1.20 Added COOLER TargetType + * 1.21 Added initial 64-bit integer attribute support (read-only) + * 1.22 Added X_nvCtrlQueryValidStringAttributeValues to check + * string attribute permissions. + * 1.23 Added SENSOR TargetType + * 1.24 Fixed a bug where SLI_MOSAIC_MODE_AVAILABLE attribute would + * report false positives via the GPU and X screen target types + * 1.25 Added 3D_VISION_PRO_TRANSCEIVER TargetType + * 1.26 Added XNVCTRLQueryXXXAttributePermissions. + * 1.27 Added DISPLAY TargetType + * 1.28 Added NV_CTRL_CURRENT_METAMODE_ID: clients should use this + * attribute to switch MetaModes, rather than pass the MetaMode ID + * through the RRSetScreenConfig protocol request. + */ + +#ifndef __NVCONTROL_H +#define __NVCONTROL_H + +#define NV_CONTROL_ERRORS 0 +#define NV_CONTROL_EVENTS 5 +#define NV_CONTROL_NAME "NV-CONTROL" + +#define NV_CONTROL_MAJOR 1 +#define NV_CONTROL_MINOR 28 + +#define X_nvCtrlQueryExtension 0 +#define X_nvCtrlIsNv 1 +#define X_nvCtrlQueryAttribute 2 +#define X_nvCtrlSetAttribute 3 +#define X_nvCtrlQueryStringAttribute 4 +#define X_nvCtrlQueryValidAttributeValues 5 +#define X_nvCtrlSelectNotify 6 +#define X_nvCtrlSetGvoColorConversionDeprecated 7 +#define X_nvCtrlQueryGvoColorConversionDeprecated 8 +#define X_nvCtrlSetStringAttribute 9 +/* STUB X_nvCtrlQueryDDCCILutSize 10 */ +/* STUB X_nvCtrlQueryDDCCISinglePointLutOperation 11 */ +/* STUB X_nvCtrlSetDDCCISinglePointLutOperation 12 */ +/* STUB X_nvCtrlQueryDDCCIBlockLutOperation 13 */ +/* STUB X_nvCtrlSetDDCCIBlockLutOperation 14 */ +/* STUB X_nvCtrlSetDDCCIRemoteProcedureCall 15 */ +/* STUB X_nvCtrlQueryDDCCIDisplayControllerType 16 */ +/* STUB X_nvCtrlQueryDDCCICapabilities 17 */ +/* STUB X_nvCtrlQueryDDCCITimingReport 18 */ +#define X_nvCtrlSetAttributeAndGetStatus 19 +#define X_nvCtrlQueryBinaryData 20 +#define X_nvCtrlSetGvoColorConversion 21 +#define X_nvCtrlQueryGvoColorConversion 22 +#define X_nvCtrlSelectTargetNotify 23 +#define X_nvCtrlQueryTargetCount 24 +#define X_nvCtrlStringOperation 25 +#define X_nvCtrlQueryValidAttributeValues64 26 +#define X_nvCtrlQueryAttribute64 27 +#define X_nvCtrlQueryValidStringAttributeValues 28 +#define X_nvCtrlQueryAttributePermissions 29 +#define X_nvCtrlQueryStringAttributePermissions 30 +#define X_nvCtrlQueryBinaryDataAttributePermissions 31 +#define X_nvCtrlQueryStringOperationAttributePermissions 32 + +#define X_nvCtrlLastRequest (X_nvCtrlQueryStringOperationAttributePermissions + 1) + +/* Define 32 bit floats */ +typedef float FLOAT32; +#ifndef F32 +#define F32 +#endif + +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; +} xnvCtrlQueryExtensionReq; +#define sz_xnvCtrlQueryExtensionReq 4 + +typedef struct +{ + BYTE type; /* X_Reply */ + CARD8 padb1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD16 major B16; + CARD16 minor B16; + CARD32 padl4 B32; + CARD32 padl5 B32; + CARD32 padl6 B32; + CARD32 padl7 B32; + CARD32 padl8 B32; +} xnvCtrlQueryExtensionReply; +#define sz_xnvCtrlQueryExtensionReply 32 + +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD32 screen B32; +} xnvCtrlIsNvReq; +#define sz_xnvCtrlIsNvReq 8 + +typedef struct +{ + BYTE type; /* X_Reply */ + CARD8 padb1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 isnv B32; + CARD32 padl4 B32; + CARD32 padl5 B32; + CARD32 padl6 B32; + CARD32 padl7 B32; + CARD32 padl8 B32; +} xnvCtrlIsNvReply; +#define sz_xnvCtrlIsNvReply 32 + +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD32 target_type B32; +} xnvCtrlQueryTargetCountReq; +#define sz_xnvCtrlQueryTargetCountReq 8 + +typedef struct +{ + BYTE type; /* X_Reply */ + CARD8 padb1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 count B32; + CARD32 padl4 B32; + CARD32 padl5 B32; + CARD32 padl6 B32; + CARD32 padl7 B32; + CARD32 padl8 B32; +} xnvCtrlQueryTargetCountReply; +#define sz_xnvCtrlQueryTargetCountReply 32 + +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD16 target_id B16; /* X screen number or GPU number */ + CARD16 target_type B16; /* X screen or GPU */ + CARD32 display_mask B32; + CARD32 attribute B32; +} xnvCtrlQueryAttributeReq; +#define sz_xnvCtrlQueryAttributeReq 16 + +typedef struct +{ + BYTE type; + BYTE pad0; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 flags B32; + INT32 value B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; + CARD32 pad7 B32; +} xnvCtrlQueryAttributeReply; +#define sz_xnvCtrlQueryAttributeReply 32 + +typedef struct +{ + BYTE type; + BYTE pad0; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 flags B32; + CARD32 pad3 B32; + int64_t value_64; + CARD32 pad6 B32; + CARD32 pad7 B32; +} xnvCtrlQueryAttribute64Reply; +#define sz_xnvCtrlQueryAttribute64Reply 32 + +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD16 target_id B16; + CARD16 target_type B16; + CARD32 display_mask B32; + CARD32 attribute B32; + INT32 value B32; +} xnvCtrlSetAttributeReq; +#define sz_xnvCtrlSetAttributeReq 20 + +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD16 target_id B16; + CARD16 target_type B16; + CARD32 display_mask B32; + CARD32 attribute B32; + INT32 value B32; +} xnvCtrlSetAttributeAndGetStatusReq; +#define sz_xnvCtrlSetAttributeAndGetStatusReq 20 + +typedef struct +{ + BYTE type; + BYTE pad0; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 flags B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; + CARD32 pad7 B32; +} xnvCtrlSetAttributeAndGetStatusReply; +#define sz_xnvCtrlSetAttributeAndGetStatusReply 32 + +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD16 target_id B16; /* X screen number or GPU number */ + CARD16 target_type B16; /* X screen or GPU */ + CARD32 display_mask B32; + CARD32 attribute B32; +} xnvCtrlQueryStringAttributeReq; +#define sz_xnvCtrlQueryStringAttributeReq 16 + +typedef struct +{ + BYTE type; + BYTE pad0; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 flags B32; + CARD32 n B32; /* Length of string */ + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; + CARD32 pad7 B32; +} xnvCtrlQueryStringAttributeReply; +#define sz_xnvCtrlQueryStringAttributeReply 32 + +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD16 target_id B16; + CARD16 target_type B16; + CARD32 display_mask B32; + CARD32 attribute B32; + CARD32 num_bytes B32; +} xnvCtrlSetStringAttributeReq; +#define sz_xnvCtrlSetStringAttributeReq 20 + +typedef struct +{ + BYTE type; + BYTE pad0; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 flags B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; + CARD32 pad7 B32; +} xnvCtrlSetStringAttributeReply; +#define sz_xnvCtrlSetStringAttributeReply 32 + +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD16 target_id B16; /* X screen number or GPU number */ + CARD16 target_type B16; /* X screen or GPU */ + CARD32 display_mask B32; + CARD32 attribute B32; +} xnvCtrlQueryValidAttributeValuesReq; +#define sz_xnvCtrlQueryValidAttributeValuesReq 16 + +typedef struct +{ + BYTE type; + BYTE pad0; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 flags B32; + INT32 attr_type B32; + INT32 min B32; + INT32 max B32; + CARD32 bits B32; + CARD32 perms B32; +} xnvCtrlQueryValidAttributeValuesReply; +#define sz_xnvCtrlQueryValidAttributeValuesReply 32 + +typedef struct +{ + BYTE type; + BYTE pad0; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 flags B32; + INT32 attr_type B32; + int64_t min_64; + int64_t max_64; + CARD64 bits_64; + CARD32 perms B32; + CARD32 pad1 B32; +} xnvCtrlQueryValidAttributeValues64Reply; +#define sz_xnvCtrlQueryValidAttributeValues64Reply 48 +#define sz_xnvCtrlQueryValidAttributeValues64Reply_extra ((48 - 32) >> 2) + +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD32 attribute B32; +} xnvCtrlQueryAttributePermissionsReq; +#define sz_xnvCtrlQueryAttributePermissionsReq 8 + +typedef struct +{ + BYTE type; + BYTE pad0; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 flags B32; + INT32 attr_type B32; + CARD32 perms B32; + CARD32 pad5 B32; + CARD32 pad6 B32; + CARD32 pad7 B32; + CARD32 pad8 B32; +} xnvCtrlQueryAttributePermissionsReply; +#define sz_xnvCtrlQueryAttributePermissionsReply 32 + +/* Set GVO Color Conversion request (deprecated) */ +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD32 screen B32; + FLOAT32 row1_col1 F32; + FLOAT32 row1_col2 F32; + FLOAT32 row1_col3 F32; + FLOAT32 row1_col4 F32; + FLOAT32 row2_col1 F32; + FLOAT32 row2_col2 F32; + FLOAT32 row2_col3 F32; + FLOAT32 row2_col4 F32; + FLOAT32 row3_col1 F32; + FLOAT32 row3_col2 F32; + FLOAT32 row3_col3 F32; + FLOAT32 row3_col4 F32; +} xnvCtrlSetGvoColorConversionDeprecatedReq; +#define sz_xnvCtrlSetGvoColorConversionDeprecatedReq 56 + +/* Query GVO Color Conversion request (deprecated) */ +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD32 screen B32; +} xnvCtrlQueryGvoColorConversionDeprecatedReq; +#define sz_xnvCtrlQueryGvoColorConversionDeprecatedReq 8 + +/* Query GVO Color Conversion reply (deprecated) */ +typedef struct +{ + BYTE type; /* X_Reply */ + BYTE pad0; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; + CARD32 pad7 B32; + CARD32 pad8 B32; +} xnvCtrlQueryGvoColorConversionDeprecatedReply; +#define sz_xnvCtrlQueryGvoColorConversionDeprecatedReply 32 + +/* Set GVO Color Conversion request */ +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD32 screen B32; + + FLOAT32 cscMatrix_y_r F32; + FLOAT32 cscMatrix_y_g F32; + FLOAT32 cscMatrix_y_b F32; + + FLOAT32 cscMatrix_cr_r F32; + FLOAT32 cscMatrix_cr_g F32; + FLOAT32 cscMatrix_cr_b F32; + + FLOAT32 cscMatrix_cb_r F32; + FLOAT32 cscMatrix_cb_g F32; + FLOAT32 cscMatrix_cb_b F32; + + FLOAT32 cscOffset_y F32; + FLOAT32 cscOffset_cr F32; + FLOAT32 cscOffset_cb F32; + + FLOAT32 cscScale_y F32; + FLOAT32 cscScale_cr F32; + FLOAT32 cscScale_cb F32; + +} xnvCtrlSetGvoColorConversionReq; +#define sz_xnvCtrlSetGvoColorConversionReq 68 + +/* Query GVO Color Conversion request */ +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD32 screen B32; +} xnvCtrlQueryGvoColorConversionReq; +#define sz_xnvCtrlQueryGvoColorConversionReq 8 + +/* Query GVO Color Conversion reply */ +typedef struct +{ + BYTE type; /* X_Reply */ + BYTE pad0; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; + CARD32 pad7 B32; + CARD32 pad8 B32; +} xnvCtrlQueryGvoColorConversionReply; +#define sz_xnvCtrlQueryGvoColorConversionReply 32 + +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD16 target_id B16; /* X screen number or GPU number */ + CARD16 target_type B16; /* X screen or GPU */ + CARD32 display_mask B32; + CARD32 attribute B32; +} xnvCtrlQueryBinaryDataReq; +#define sz_xnvCtrlQueryBinaryDataReq 16 + +typedef struct +{ + BYTE type; + BYTE pad0; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 flags B32; + CARD32 n B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; + CARD32 pad7 B32; +} xnvCtrlQueryBinaryDataReply; +#define sz_xnvCtrlQueryBinaryDataReply 32 + +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD32 screen B32; + CARD16 notifyType B16; + CARD16 onoff B16; +} xnvCtrlSelectNotifyReq; +#define sz_xnvCtrlSelectNotifyReq 12 + +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD16 target_id B16; /* X screen number or GPU number */ + CARD16 target_type B16; /* X screen or GPU */ + CARD32 display_mask B32; + CARD32 attribute B32; + CARD32 num_bytes B32; /* Length of string */ +} xnvCtrlStringOperationReq; +#define sz_xnvCtrlStringOperationReq 20 + +typedef struct +{ + BYTE type; /* X_Reply */ + CARD8 padb1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 ret B32; + CARD32 num_bytes B32; /* Length of string */ + CARD32 padl4 B32; + CARD32 padl5 B32; + CARD32 padl6 B32; + CARD32 padl7 B32; +} xnvCtrlStringOperationReply; +#define sz_xnvCtrlStringOperationReply 32 + +typedef struct +{ + union + { + struct + { + BYTE type; + BYTE detail; + CARD16 sequenceNumber B16; + } u; + struct + { + BYTE type; + BYTE detail; + CARD16 sequenceNumber B16; + CARD32 time B32; + CARD32 screen B32; + CARD32 display_mask B32; + CARD32 attribute B32; + CARD32 value B32; + CARD32 pad0 B32; + CARD32 pad1 B32; + } attribute_changed; + } u; +} xnvctrlEvent; + +/* + * Leave target_type before target_id for the + * xnvCtrlSelectTargetNotifyReq and xnvctrlEventTarget + * structures, even though other request protocol structures + * store target_id in the bottom 16-bits of the second DWORD of the + * structures. The event-related structures were added in version + * 1.8, and so there is no prior version with which to maintain + * compatibility. + */ +typedef struct +{ + CARD8 reqType; + CARD8 nvReqType; + CARD16 length B16; + CARD16 target_type B16; /* Don't swap these */ + CARD16 target_id B16; + CARD16 notifyType B16; + CARD16 onoff B16; +} xnvCtrlSelectTargetNotifyReq; +#define sz_xnvCtrlSelectTargetNotifyReq 12 + +typedef struct +{ + union + { + struct + { + BYTE type; + BYTE detail; + CARD16 sequenceNumber B16; + } u; + struct + { + BYTE type; + BYTE detail; + CARD16 sequenceNumber B16; + CARD32 time B32; + CARD16 target_type B16; /* Don't swap these */ + CARD16 target_id B16; + CARD32 display_mask B32; + CARD32 attribute B32; + CARD32 value B32; + CARD32 pad0 B32; + CARD32 pad1 B32; + } attribute_changed; + struct + { + BYTE type; + BYTE detail; + CARD16 sequenceNumber B16; + CARD32 time B32; + CARD16 target_type B16; /* Don't swap these */ + CARD16 target_id B16; + CARD32 display_mask B32; + CARD32 attribute B32; + CARD32 value B32; + CARD8 availability; + CARD8 pad0; + CARD16 pad1 B16; + CARD32 pad2 B32; + } availability_changed; + } u; +} xnvctrlEventTarget; + +#endif /* __NVCONTROL_H */ |