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