mirror of https://github.com/GOSTSec/ccminer
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
11760 lines
564 KiB
11760 lines
564 KiB
#include"nvapi_lite_salstart.h" |
|
#include"nvapi_lite_common.h" |
|
#include"nvapi_lite_sli.h" |
|
#include"nvapi_lite_surround.h" |
|
#include"nvapi_lite_stereo.h" |
|
#include"nvapi_lite_d3dext.h" |
|
/************************************************************************************************************************************\ |
|
|* *| |
|
|* Copyright © 2012 NVIDIA Corporation. All rights reserved. *| |
|
|* *| |
|
|* NOTICE TO USER: *| |
|
|* *| |
|
|* This software is subject to NVIDIA ownership rights under U.S. and international Copyright laws. *| |
|
|* *| |
|
|* This software and the information contained herein are PROPRIETARY and CONFIDENTIAL to NVIDIA *| |
|
|* and are being provided solely under the terms and conditions of an NVIDIA software license agreement. *| |
|
|* Otherwise, you have no rights to use or access this software in any manner. *| |
|
|* *| |
|
|* If not covered by the applicable NVIDIA software license agreement: *| |
|
|* NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY PURPOSE. *| |
|
|* IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND. *| |
|
|* NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, *| |
|
|* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE. *| |
|
|* IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, *| |
|
|* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, *| |
|
|* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOURCE CODE. *| |
|
|* *| |
|
|* U.S. Government End Users. *| |
|
|* This software is a "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT 1995), *| |
|
|* consisting of "commercial computer software" and "commercial computer software documentation" *| |
|
|* as such terms are used in 48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government only as a commercial end item. *| |
|
|* Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), *| |
|
|* all U.S. Government End Users acquire the software with only those rights set forth herein. *| |
|
|* *| |
|
|* Any use of this software in individual and commercial software must include, *| |
|
|* in the user documentation and internal comments to the code, *| |
|
|* the above Disclaimer (as applicable) and U.S. Government End Users Notice. *| |
|
|* *| |
|
\************************************************************************************************************************************/ |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// Date: Jan 27, 2016 |
|
// File: nvapi.h |
|
// |
|
// NvAPI provides an interface to NVIDIA devices. This file contains the |
|
// interface constants, structure definitions and function prototypes. |
|
// |
|
// Target Profile: developer |
|
// Target Platform: windows |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
#ifndef _NVAPI_H |
|
#define _NVAPI_H |
|
|
|
#pragma pack(push,8) // Make sure we have consistent structure packings |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
// ==================================================== |
|
// Universal NvAPI Definitions |
|
// ==================================================== |
|
#ifndef _WIN32 |
|
#define __cdecl |
|
#endif |
|
|
|
|
|
|
|
//! @} |
|
|
|
//! \ingroup nvapistatus |
|
#define NVAPI_API_NOT_INTIALIZED NVAPI_API_NOT_INITIALIZED //!< Fix typo in error code |
|
|
|
//! \ingroup nvapistatus |
|
#define NVAPI_INVALID_USER_PRIVILEDGE NVAPI_INVALID_USER_PRIVILEGE //!< Fix typo in error code |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Initialize |
|
// |
|
//! This function initializes the NvAPI library (if not already initialized) but always increments the ref-counter. |
|
//! This must be called before calling other NvAPI_ functions. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \retval NVAPI_ERROR An error occurred during the initialization process (generic error) |
|
//! \retval NVAPI_LIBRARYNOTFOUND Failed to load the NVAPI support library |
|
//! \retval NVAPI_OK Initialized |
|
//! \sa nvapistatus |
|
//! \ingroup nvapifunctions |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Initialize(); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Unload |
|
// |
|
//! DESCRIPTION: Decrements the ref-counter and when it reaches ZERO, unloads NVAPI library. |
|
//! This must be called in pairs with NvAPI_Initialize. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! Note: By design, it is not mandatory to call NvAPI_Initialize before calling any NvAPI. |
|
//! When any NvAPI is called without first calling NvAPI_Initialize, the internal refcounter |
|
//! will be implicitly incremented. In such cases, calling NvAPI_Initialize from a different thread will |
|
//! result in incrementing the refcount again and the user has to call NvAPI_Unload twice to |
|
//! unload the library. However, note that the implicit increment of the refcounter happens only once. |
|
//! If the client wants unload functionality, it is recommended to always call NvAPI_Initialize and NvAPI_Unload in pairs. |
|
//! |
|
//! Unloading NvAPI library is not supported when the library is in a resource locked state. |
|
//! Some functions in the NvAPI library initiates an operation or allocates certain resources |
|
//! and there are corresponding functions available, to complete the operation or free the |
|
//! allocated resources. All such function pairs are designed to prevent unloading NvAPI library. |
|
//! |
|
//! For example, if NvAPI_Unload is called after NvAPI_XXX which locks a resource, it fails with |
|
//! NVAPI_ERROR. Developers need to call the corresponding NvAPI_YYY to unlock the resources, |
|
//! before calling NvAPI_Unload again. |
|
//! |
|
//! \retval ::NVAPI_ERROR One or more resources are locked and hence cannot unload NVAPI library |
|
//! \retval ::NVAPI_OK NVAPI library unloaded |
|
//! |
|
//! \ingroup nvapifunctions |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Unload(); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetErrorMessage |
|
// |
|
//! This function converts an NvAPI error code into a null terminated string. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \param nr The error code to convert |
|
//! \param szDesc The string corresponding to the error code |
|
//! |
|
//! \return NULL terminated string (always, never NULL) |
|
//! \ingroup nvapifunctions |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GetErrorMessage(NvAPI_Status nr,NvAPI_ShortString szDesc); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetInterfaceVersionString |
|
// |
|
//! This function returns a string describing the version of the NvAPI library. |
|
//! The contents of the string are human readable. Do not assume a fixed |
|
//! format. |
|
//! |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \param szDesc User readable string giving NvAPI version information |
|
//! |
|
//! \return See \ref nvapistatus for the list of possible return values. |
|
//! \ingroup nvapifunctions |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GetInterfaceVersionString(NvAPI_ShortString szDesc); |
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
// All display port related data types definition starts |
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
// This category is intentionally added before the #ifdef. The #endif should also be in the same scope |
|
#ifndef DISPLAYPORT_STRUCTS_DEFINED |
|
#define DISPLAYPORT_STRUCTS_DEFINED |
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NV_DISPLAY_PORT_INFO. |
|
typedef enum _NV_DP_LINK_RATE |
|
{ |
|
NV_DP_1_62GBPS = 6, |
|
NV_DP_2_70GBPS = 0xA, |
|
NV_DP_5_40GBPS = 0x14, |
|
NV_DP_8_10GBPS = 0x1E |
|
} NV_DP_LINK_RATE; |
|
|
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NV_DISPLAY_PORT_INFO. |
|
typedef enum _NV_DP_LANE_COUNT |
|
{ |
|
NV_DP_1_LANE = 1, |
|
NV_DP_2_LANE = 2, |
|
NV_DP_4_LANE = 4, |
|
} NV_DP_LANE_COUNT; |
|
|
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NV_DISPLAY_PORT_INFO. |
|
typedef enum _NV_DP_COLOR_FORMAT |
|
{ |
|
NV_DP_COLOR_FORMAT_RGB = 0, |
|
NV_DP_COLOR_FORMAT_YCbCr422, |
|
NV_DP_COLOR_FORMAT_YCbCr444, |
|
} NV_DP_COLOR_FORMAT; |
|
|
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NV_DISPLAY_PORT_INFO. |
|
typedef enum _NV_DP_COLORIMETRY |
|
{ |
|
NV_DP_COLORIMETRY_RGB = 0, |
|
NV_DP_COLORIMETRY_YCbCr_ITU601, |
|
NV_DP_COLORIMETRY_YCbCr_ITU709, |
|
} NV_DP_COLORIMETRY; |
|
|
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NV_DISPLAY_PORT_INFO. |
|
typedef enum _NV_DP_DYNAMIC_RANGE |
|
{ |
|
NV_DP_DYNAMIC_RANGE_VESA = 0, |
|
NV_DP_DYNAMIC_RANGE_CEA, |
|
} NV_DP_DYNAMIC_RANGE; |
|
|
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NV_DISPLAY_PORT_INFO. |
|
typedef enum _NV_DP_BPC |
|
{ |
|
NV_DP_BPC_DEFAULT = 0, |
|
NV_DP_BPC_6, |
|
NV_DP_BPC_8, |
|
NV_DP_BPC_10, |
|
NV_DP_BPC_12, |
|
NV_DP_BPC_16, |
|
} NV_DP_BPC; |
|
|
|
#endif //#ifndef DISPLAYPORT_STRUCTS_DEFINED |
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
// All display port related data types definitions end |
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetEDID |
|
// |
|
//! \fn NvAPI_GPU_GetEDID(NvPhysicalGpuHandle hPhysicalGpu, NvU32 displayOutputId, NV_EDID *pEDID) |
|
//! This function returns the EDID data for the specified GPU handle and connection bit mask. |
|
//! displayOutputId should have exactly 1 bit set to indicate a single display. See \ref handles. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 85 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT pEDID is NULL; displayOutputId has 0 or > 1 bits set |
|
//! \retval NVAPI_OK *pEDID contains valid data. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle. |
|
//! \retval NVAPI_DATA_NOT_FOUND The requested display does not contain an EDID. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
|
|
//! \ingroup gpu |
|
//! @{ |
|
|
|
#define NV_EDID_V1_DATA_SIZE 256 |
|
|
|
#define NV_EDID_DATA_SIZE NV_EDID_V1_DATA_SIZE |
|
|
|
typedef struct |
|
{ |
|
NvU32 version; //structure version |
|
NvU8 EDID_Data[NV_EDID_DATA_SIZE]; |
|
} NV_EDID_V1; |
|
|
|
//! Used in NvAPI_GPU_GetEDID() |
|
typedef struct |
|
{ |
|
NvU32 version; //!< Structure version |
|
NvU8 EDID_Data[NV_EDID_DATA_SIZE]; |
|
NvU32 sizeofEDID; |
|
} NV_EDID_V2; |
|
|
|
//! Used in NvAPI_GPU_GetEDID() |
|
typedef struct |
|
{ |
|
NvU32 version; //!< Structure version |
|
NvU8 EDID_Data[NV_EDID_DATA_SIZE]; |
|
NvU32 sizeofEDID; |
|
NvU32 edidId; //!< ID which always returned in a monotonically increasing counter. |
|
//!< Across a split-EDID read we need to verify that all calls returned the same edidId. |
|
//!< This counter is incremented if we get the updated EDID. |
|
NvU32 offset; //!< Which 256-byte page of the EDID we want to read. Start at 0. |
|
//!< If the read succeeds with edidSize > NV_EDID_DATA_SIZE, |
|
//!< call back again with offset+256 until we have read the entire buffer |
|
} NV_EDID_V3; |
|
|
|
typedef NV_EDID_V3 NV_EDID; |
|
|
|
#define NV_EDID_VER1 MAKE_NVAPI_VERSION(NV_EDID_V1,1) |
|
#define NV_EDID_VER2 MAKE_NVAPI_VERSION(NV_EDID_V2,2) |
|
#define NV_EDID_VER3 MAKE_NVAPI_VERSION(NV_EDID_V3,3) |
|
#define NV_EDID_VER NV_EDID_VER3 |
|
|
|
//! @} |
|
|
|
//! \ingroup gpu |
|
NVAPI_INTERFACE NvAPI_GPU_GetEDID(NvPhysicalGpuHandle hPhysicalGpu, NvU32 displayOutputId, NV_EDID *pEDID); |
|
|
|
//! \ingroup gpu |
|
//! Used in NV_GPU_CONNECTOR_DATA |
|
typedef enum _NV_GPU_CONNECTOR_TYPE |
|
{ |
|
NVAPI_GPU_CONNECTOR_VGA_15_PIN = 0x00000000, |
|
NVAPI_GPU_CONNECTOR_TV_COMPOSITE = 0x00000010, |
|
NVAPI_GPU_CONNECTOR_TV_SVIDEO = 0x00000011, |
|
NVAPI_GPU_CONNECTOR_TV_HDTV_COMPONENT = 0x00000013, |
|
NVAPI_GPU_CONNECTOR_TV_SCART = 0x00000014, |
|
NVAPI_GPU_CONNECTOR_TV_COMPOSITE_SCART_ON_EIAJ4120 = 0x00000016, |
|
NVAPI_GPU_CONNECTOR_TV_HDTV_EIAJ4120 = 0x00000017, |
|
NVAPI_GPU_CONNECTOR_PC_POD_HDTV_YPRPB = 0x00000018, |
|
NVAPI_GPU_CONNECTOR_PC_POD_SVIDEO = 0x00000019, |
|
NVAPI_GPU_CONNECTOR_PC_POD_COMPOSITE = 0x0000001A, |
|
NVAPI_GPU_CONNECTOR_DVI_I_TV_SVIDEO = 0x00000020, |
|
NVAPI_GPU_CONNECTOR_DVI_I_TV_COMPOSITE = 0x00000021, |
|
NVAPI_GPU_CONNECTOR_DVI_I = 0x00000030, |
|
NVAPI_GPU_CONNECTOR_DVI_D = 0x00000031, |
|
NVAPI_GPU_CONNECTOR_ADC = 0x00000032, |
|
NVAPI_GPU_CONNECTOR_LFH_DVI_I_1 = 0x00000038, |
|
NVAPI_GPU_CONNECTOR_LFH_DVI_I_2 = 0x00000039, |
|
NVAPI_GPU_CONNECTOR_SPWG = 0x00000040, |
|
NVAPI_GPU_CONNECTOR_OEM = 0x00000041, |
|
NVAPI_GPU_CONNECTOR_DISPLAYPORT_EXTERNAL = 0x00000046, |
|
NVAPI_GPU_CONNECTOR_DISPLAYPORT_INTERNAL = 0x00000047, |
|
NVAPI_GPU_CONNECTOR_DISPLAYPORT_MINI_EXT = 0x00000048, |
|
NVAPI_GPU_CONNECTOR_HDMI_A = 0x00000061, |
|
NVAPI_GPU_CONNECTOR_HDMI_C_MINI = 0x00000063, |
|
NVAPI_GPU_CONNECTOR_LFH_DISPLAYPORT_1 = 0x00000064, |
|
NVAPI_GPU_CONNECTOR_LFH_DISPLAYPORT_2 = 0x00000065, |
|
NVAPI_GPU_CONNECTOR_VIRTUAL_WFD = 0x00000070, |
|
NVAPI_GPU_CONNECTOR_UNKNOWN = 0xFFFFFFFF, |
|
} NV_GPU_CONNECTOR_TYPE; |
|
|
|
//////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// NvAPI_TVOutput Information |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup tvapi |
|
//! Used in NV_DISPLAY_TV_OUTPUT_INFO |
|
typedef enum _NV_DISPLAY_TV_FORMAT |
|
{ |
|
NV_DISPLAY_TV_FORMAT_NONE = 0, |
|
NV_DISPLAY_TV_FORMAT_SD_NTSCM = 0x00000001, |
|
NV_DISPLAY_TV_FORMAT_SD_NTSCJ = 0x00000002, |
|
NV_DISPLAY_TV_FORMAT_SD_PALM = 0x00000004, |
|
NV_DISPLAY_TV_FORMAT_SD_PALBDGH = 0x00000008, |
|
NV_DISPLAY_TV_FORMAT_SD_PALN = 0x00000010, |
|
NV_DISPLAY_TV_FORMAT_SD_PALNC = 0x00000020, |
|
NV_DISPLAY_TV_FORMAT_SD_576i = 0x00000100, |
|
NV_DISPLAY_TV_FORMAT_SD_480i = 0x00000200, |
|
NV_DISPLAY_TV_FORMAT_ED_480p = 0x00000400, |
|
NV_DISPLAY_TV_FORMAT_ED_576p = 0x00000800, |
|
NV_DISPLAY_TV_FORMAT_HD_720p = 0x00001000, |
|
NV_DISPLAY_TV_FORMAT_HD_1080i = 0x00002000, |
|
NV_DISPLAY_TV_FORMAT_HD_1080p = 0x00004000, |
|
NV_DISPLAY_TV_FORMAT_HD_720p50 = 0x00008000, |
|
NV_DISPLAY_TV_FORMAT_HD_1080p24 = 0x00010000, |
|
NV_DISPLAY_TV_FORMAT_HD_1080i50 = 0x00020000, |
|
NV_DISPLAY_TV_FORMAT_HD_1080p50 = 0x00040000, |
|
NV_DISPLAY_TV_FORMAT_UHD_4Kp30 = 0x00080000, |
|
NV_DISPLAY_TV_FORMAT_UHD_4Kp30_3840 = NV_DISPLAY_TV_FORMAT_UHD_4Kp30, |
|
NV_DISPLAY_TV_FORMAT_UHD_4Kp25 = 0x00100000, |
|
NV_DISPLAY_TV_FORMAT_UHD_4Kp25_3840 = NV_DISPLAY_TV_FORMAT_UHD_4Kp25, |
|
NV_DISPLAY_TV_FORMAT_UHD_4Kp24 = 0x00200000, |
|
NV_DISPLAY_TV_FORMAT_UHD_4Kp24_3840 = NV_DISPLAY_TV_FORMAT_UHD_4Kp24, |
|
NV_DISPLAY_TV_FORMAT_UHD_4Kp24_SMPTE = 0x00400000, |
|
NV_DISPLAY_TV_FORMAT_UHD_4Kp50_3840 = 0x00800000, |
|
NV_DISPLAY_TV_FORMAT_UHD_4Kp60_3840 = 0x00900000, |
|
NV_DISPLAY_TV_FORMAT_UHD_4Kp30_4096 = 0x00A00000, |
|
NV_DISPLAY_TV_FORMAT_UHD_4Kp25_4096 = 0x00B00000, |
|
NV_DISPLAY_TV_FORMAT_UHD_4Kp24_4096 = 0x00C00000, |
|
NV_DISPLAY_TV_FORMAT_UHD_4Kp50_4096 = 0x00D00000, |
|
NV_DISPLAY_TV_FORMAT_UHD_4Kp60_4096 = 0x00E00000, |
|
|
|
NV_DISPLAY_TV_FORMAT_SD_OTHER = 0x01000000, |
|
NV_DISPLAY_TV_FORMAT_ED_OTHER = 0x02000000, |
|
NV_DISPLAY_TV_FORMAT_HD_OTHER = 0x04000000, |
|
|
|
NV_DISPLAY_TV_FORMAT_ANY = 0x80000000, |
|
|
|
} NV_DISPLAY_TV_FORMAT; |
|
|
|
|
|
//! \ingroup dispcontrol |
|
//! @{ |
|
#define NVAPI_MAX_VIEW_TARGET 2 |
|
#define NVAPI_ADVANCED_MAX_VIEW_TARGET 4 |
|
|
|
#ifndef _NV_TARGET_VIEW_MODE_ |
|
#define _NV_TARGET_VIEW_MODE_ |
|
|
|
//! Used in NvAPI_SetView(). |
|
typedef enum _NV_TARGET_VIEW_MODE |
|
{ |
|
NV_VIEW_MODE_STANDARD = 0, |
|
NV_VIEW_MODE_CLONE = 1, |
|
NV_VIEW_MODE_HSPAN = 2, |
|
NV_VIEW_MODE_VSPAN = 3, |
|
NV_VIEW_MODE_DUALVIEW = 4, |
|
NV_VIEW_MODE_MULTIVIEW = 5, |
|
} NV_TARGET_VIEW_MODE; |
|
#endif |
|
|
|
//! @} |
|
|
|
|
|
// Following definitions are used in NvAPI_SetViewEx. |
|
|
|
//! Scaling modes - used in NvAPI_SetViewEx(). |
|
//! \ingroup dispcontrol |
|
typedef enum _NV_SCALING |
|
{ |
|
NV_SCALING_DEFAULT = 0, //!< No change |
|
|
|
// New Scaling Declarations |
|
NV_SCALING_GPU_SCALING_TO_CLOSEST = 1, //!< Balanced - Full Screen |
|
NV_SCALING_GPU_SCALING_TO_NATIVE = 2, //!< Force GPU - Full Screen |
|
NV_SCALING_GPU_SCANOUT_TO_NATIVE = 3, //!< Force GPU - Centered\No Scaling |
|
NV_SCALING_GPU_SCALING_TO_ASPECT_SCANOUT_TO_NATIVE = 5, //!< Force GPU - Aspect Ratio |
|
NV_SCALING_GPU_SCALING_TO_ASPECT_SCANOUT_TO_CLOSEST = 6, //!< Balanced - Aspect Ratio |
|
NV_SCALING_GPU_SCANOUT_TO_CLOSEST = 7, //!< Balanced - Centered\No Scaling |
|
|
|
// Legacy Declarations |
|
NV_SCALING_MONITOR_SCALING = NV_SCALING_GPU_SCALING_TO_CLOSEST, |
|
NV_SCALING_ADAPTER_SCALING = NV_SCALING_GPU_SCALING_TO_NATIVE, |
|
NV_SCALING_CENTERED = NV_SCALING_GPU_SCANOUT_TO_NATIVE, |
|
NV_SCALING_ASPECT_SCALING = NV_SCALING_GPU_SCALING_TO_ASPECT_SCANOUT_TO_NATIVE, |
|
|
|
NV_SCALING_CUSTOMIZED = 255 //!< For future use |
|
} NV_SCALING; |
|
|
|
//! Rotate modes- used in NvAPI_SetViewEx(). |
|
//! \ingroup dispcontrol |
|
typedef enum _NV_ROTATE |
|
{ |
|
NV_ROTATE_0 = 0, |
|
NV_ROTATE_90 = 1, |
|
NV_ROTATE_180 = 2, |
|
NV_ROTATE_270 = 3, |
|
NV_ROTATE_IGNORED = 4, |
|
} NV_ROTATE; |
|
|
|
//! Color formats- used in NvAPI_SetViewEx(). |
|
//! \ingroup dispcontrol |
|
#define NVFORMAT_MAKEFOURCC(ch0, ch1, ch2, ch3) \ |
|
((NvU32)(NvU8)(ch0) | ((NvU32)(NvU8)(ch1) << 8) | \ |
|
((NvU32)(NvU8)(ch2) << 16) | ((NvU32)(NvU8)(ch3) << 24 )) |
|
|
|
|
|
|
|
//! Color formats- used in NvAPI_SetViewEx(). |
|
//! \ingroup dispcontrol |
|
typedef enum _NV_FORMAT |
|
{ |
|
NV_FORMAT_UNKNOWN = 0, //!< unknown. Driver will choose one as following value. |
|
NV_FORMAT_P8 = 41, //!< for 8bpp mode |
|
NV_FORMAT_R5G6B5 = 23, //!< for 16bpp mode |
|
NV_FORMAT_A8R8G8B8 = 21, //!< for 32bpp mode |
|
NV_FORMAT_A16B16G16R16F = 113, //!< for 64bpp(floating point) mode. |
|
|
|
} NV_FORMAT; |
|
|
|
// TV standard |
|
|
|
typedef struct |
|
{ |
|
float x; //!< x-coordinate of the viewport top-left point |
|
float y; //!< y-coordinate of the viewport top-left point |
|
float w; //!< Width of the viewport |
|
float h; //!< Height of the viewport |
|
} NV_VIEWPORTF; |
|
|
|
|
|
|
|
//! \ingroup dispcontrol |
|
//! The timing override is not supported yet; must be set to _AUTO. \n |
|
|
|
|
|
typedef enum _NV_TIMING_OVERRIDE |
|
{ |
|
NV_TIMING_OVERRIDE_CURRENT = 0, //!< get the current timing |
|
NV_TIMING_OVERRIDE_AUTO, //!< the timing the driver will use based the current policy |
|
NV_TIMING_OVERRIDE_EDID, //!< EDID timing |
|
NV_TIMING_OVERRIDE_DMT, //!< VESA DMT timing |
|
NV_TIMING_OVERRIDE_DMT_RB, //!< VESA DMT timing with reduced blanking |
|
NV_TIMING_OVERRIDE_CVT, //!< VESA CVT timing |
|
NV_TIMING_OVERRIDE_CVT_RB, //!< VESA CVT timing with reduced blanking |
|
NV_TIMING_OVERRIDE_GTF, //!< VESA GTF timing |
|
NV_TIMING_OVERRIDE_EIA861, //!< EIA 861x pre-defined timing |
|
NV_TIMING_OVERRIDE_ANALOG_TV, //!< analog SD/HDTV timing |
|
NV_TIMING_OVERRIDE_CUST, //!< NV custom timings |
|
NV_TIMING_OVERRIDE_NV_PREDEFINED, //!< NV pre-defined timing (basically the PsF timings) |
|
NV_TIMING_OVERRIDE_NV_PSF = NV_TIMING_OVERRIDE_NV_PREDEFINED, |
|
NV_TIMING_OVERRIDE_NV_ASPR, |
|
NV_TIMING_OVERRIDE_SDI, //!< Override for SDI timing |
|
|
|
NV_TIMING_OVRRIDE_MAX, |
|
}NV_TIMING_OVERRIDE; |
|
|
|
|
|
#ifndef NV_TIMING_STRUCTS_DEFINED |
|
#define NV_TIMING_STRUCTS_DEFINED |
|
|
|
//*********************** |
|
// The Timing Structure |
|
//*********************** |
|
// |
|
//! \ingroup dispcontrol |
|
//! NVIDIA-specific timing extras \n |
|
//! Used in NV_TIMING. |
|
typedef struct tagNV_TIMINGEXT |
|
{ |
|
NvU32 flag; //!< Reserved for NVIDIA hardware-based enhancement, such as double-scan. |
|
NvU16 rr; //!< Logical refresh rate to present |
|
NvU32 rrx1k; //!< Physical vertical refresh rate in 0.001Hz |
|
NvU32 aspect; //!< Display aspect ratio Hi(aspect):horizontal-aspect, Low(aspect):vertical-aspect |
|
NvU16 rep; //!< Bit-wise pixel repetition factor: 0x1:no pixel repetition; 0x2:each pixel repeats twice horizontally,.. |
|
NvU32 status; //!< Timing standard |
|
NvU8 name[40]; //!< Timing name |
|
}NV_TIMINGEXT; |
|
|
|
|
|
|
|
//! \ingroup dispcontrol |
|
//!The very basic timing structure based on the VESA standard: |
|
//! \code |
|
//! |<----------------------------htotal--------------------------->| |
|
//! ---------"active" video-------->|<-------blanking------>|<----- |
|
//! |<-------hvisible-------->|<-hb->|<-hfp->|<-hsw->|<-hbp->|<-hb->| |
|
//! --------- -+-------------------------+ | | | | | |
|
//! A A | | | | | | | |
|
//! : : | | | | | | | |
|
//! : : | | | | | | | |
|
//! :vertical| addressable video | | | | | | |
|
//! : visible| | | | | | | |
|
//! : : | | | | | | | |
|
//! : : | | | | | | | |
|
//! vertical V | | | | | | | |
|
//! total --+-------------------------+ | | | | | |
|
//! : vb border | | | | | |
|
//! : -----------------------------------+ | | | | |
|
//! : vfp front porch | | | | |
|
//! : -------------------------------------------+ | | | |
|
//! : vsw sync width | | | |
|
//! : ---------------------------------------------------+ | | |
|
//! : vbp back porch | | |
|
//! : -----------------------------------------------------------+ | |
|
//! V vb border | |
|
//! ---------------------------------------------------------------------------+ |
|
//! \endcode |
|
typedef struct _NV_TIMING |
|
{ |
|
// VESA scan out timing parameters: |
|
NvU16 HVisible; //!< horizontal visible |
|
NvU16 HBorder; //!< horizontal border |
|
NvU16 HFrontPorch; //!< horizontal front porch |
|
NvU16 HSyncWidth; //!< horizontal sync width |
|
NvU16 HTotal; //!< horizontal total |
|
NvU8 HSyncPol; //!< horizontal sync polarity: 1-negative, 0-positive |
|
|
|
NvU16 VVisible; //!< vertical visible |
|
NvU16 VBorder; //!< vertical border |
|
NvU16 VFrontPorch; //!< vertical front porch |
|
NvU16 VSyncWidth; //!< vertical sync width |
|
NvU16 VTotal; //!< vertical total |
|
NvU8 VSyncPol; //!< vertical sync polarity: 1-negative, 0-positive |
|
|
|
NvU16 interlaced; //!< 1-interlaced, 0-progressive |
|
NvU32 pclk; //!< pixel clock in 10 kHz |
|
|
|
//other timing related extras |
|
NV_TIMINGEXT etc; |
|
}NV_TIMING; |
|
#endif //NV_TIMING_STRUCTS_DEFINED |
|
|
|
|
|
//! \addtogroup dispcontrol |
|
//! Timing-related constants |
|
//! @{ |
|
#define NV_TIMING_H_SYNC_POSITIVE 0 |
|
#define NV_TIMING_H_SYNC_NEGATIVE 1 |
|
#define NV_TIMING_H_SYNC_DEFAULT NV_TIMING_H_SYNC_NEGATIVE |
|
// |
|
#define NV_TIMING_V_SYNC_POSITIVE 0 |
|
#define NV_TIMING_V_SYNC_NEGATIVE 1 |
|
#define NV_TIMING_V_SYNC_DEFAULT NV_TIMING_V_SYNC_POSITIVE |
|
// |
|
#define NV_TIMING_PROGRESSIVE 0 |
|
#define NV_TIMING_INTERLACED 1 |
|
#define NV_TIMING_INTERLACED_EXTRA_VBLANK_ON_FIELD2 1 |
|
#define NV_TIMING_INTERLACED_NO_EXTRA_VBLANK_ON_FIELD2 2 |
|
//! @} |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_SetView |
|
// |
|
//! \fn NvAPI_SetView(NvDisplayHandle hNvDisplay, NV_VIEW_TARGET_INFO *pTargetInfo, NV_TARGET_VIEW_MODE targetView) |
|
//! This function lets the caller modify the target display arrangement of the selected source display handle in any nView mode. |
|
//! It can also modify or extend the source display in Dualview mode. |
|
//! \note Maps the selected source to the associated target Ids. |
|
//! \note Display PATH with this API is limited to single GPU. DUALVIEW across GPUs cannot be enabled with this API. |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_DISP_SetDisplayConfig. |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 90 |
|
//! |
|
//! \param [in] hNvDisplay NVIDIA Display selection. #NVAPI_DEFAULT_HANDLE is not allowed, it has to be a handle enumerated with NvAPI_EnumNVidiaDisplayHandle(). |
|
//! \param [in] pTargetInfo Pointer to array of NV_VIEW_TARGET_INFO, specifying device properties in this view. |
|
//! The first device entry in the array is the physical primary. |
|
//! The device entry with the lowest source id is the desktop primary. |
|
//! \param [in] targetCount Count of target devices specified in pTargetInfo. |
|
//! \param [in] targetView Target view selected from NV_TARGET_VIEW_MODE. |
|
//! |
|
//! \retval NVAPI_OK Completed request |
|
//! \retval NVAPI_ERROR Miscellaneous error occurred |
|
//! \retval NVAPI_INVALID_ARGUMENT Invalid input parameter. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NvAPI_SetView() and NvAPI_GetView() |
|
typedef struct |
|
{ |
|
NvU32 version; //!< (IN) structure version |
|
NvU32 count; //!< (IN) target count |
|
struct |
|
{ |
|
NvU32 deviceMask; //!< (IN/OUT) Device mask |
|
NvU32 sourceId; //!< (IN/OUT) Source ID - values will be based on the number of heads exposed per GPU. |
|
NvU32 bPrimary:1; //!< (OUT) Indicates if this is the GPU's primary view target. This is not the desktop GDI primary. |
|
//!< NvAPI_SetView automatically selects the first target in NV_VIEW_TARGET_INFO index 0 as the GPU's primary view. |
|
NvU32 bInterlaced:1; //!< (IN/OUT) Indicates if the timing being used on this monitor is interlaced. |
|
NvU32 bGDIPrimary:1; //!< (IN/OUT) Indicates if this is the desktop GDI primary. |
|
NvU32 bForceModeSet:1;//!< (IN) Used only on Win7 and higher during a call to NvAPI_SetView(). Turns off optimization & forces OS to set supplied mode. |
|
} target[NVAPI_MAX_VIEW_TARGET]; |
|
} NV_VIEW_TARGET_INFO; |
|
|
|
//! \ingroup dispcontrol |
|
#define NV_VIEW_TARGET_INFO_VER MAKE_NVAPI_VERSION(NV_VIEW_TARGET_INFO,2) |
|
|
|
|
|
//! \ingroup dispcontrol |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_DISP_SetDisplayConfig.") |
|
NVAPI_INTERFACE NvAPI_SetView(NvDisplayHandle hNvDisplay, NV_VIEW_TARGET_INFO *pTargetInfo, NV_TARGET_VIEW_MODE targetView); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_SetViewEx |
|
// |
|
//! \fn NvAPI_SetViewEx(NvDisplayHandle hNvDisplay, NV_DISPLAY_PATH_INFO *pPathInfo, NV_TARGET_VIEW_MODE displayView) |
|
//! This function lets caller to modify the display arrangement for selected source display handle in any of the nview modes. |
|
//! It also allows to modify or extend the source display in dualview mode. |
|
//! \note Maps the selected source to the associated target Ids. |
|
//! \note Display PATH with this API is limited to single GPU. DUALVIEW across GPUs cannot be enabled with this API. |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_DISP_SetDisplayConfig. |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 95 |
|
//! |
|
//! \param [in] hNvDisplay NVIDIA Display selection. #NVAPI_DEFAULT_HANDLE is not allowed, it has to be a handle enumerated with |
|
//! NvAPI_EnumNVidiaDisplayHandle(). |
|
//! \param [in] pPathInfo Pointer to array of NV_VIEW_PATH_INFO, specifying device properties in this view. |
|
//! The first device entry in the array is the physical primary. |
|
//! The device entry with the lowest source id is the desktop primary. |
|
//! \param [in] pathCount Count of paths specified in pPathInfo. |
|
//! \param [in] displayView Display view selected from NV_TARGET_VIEW_MODE. |
|
//! |
|
//! \retval NVAPI_OK Completed request |
|
//! \retval NVAPI_ERROR Miscellaneous error occurred |
|
//! \retval NVAPI_INVALID_ARGUMENT Invalid input parameter. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup dispcontrol |
|
#define NVAPI_MAX_DISPLAY_PATH NVAPI_MAX_VIEW_TARGET |
|
|
|
//! \ingroup dispcontrol |
|
#define NVAPI_ADVANCED_MAX_DISPLAY_PATH NVAPI_ADVANCED_MAX_VIEW_TARGET |
|
|
|
|
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NV_DISPLAY_PATH_INFO. |
|
typedef struct |
|
{ |
|
NvU32 deviceMask; //!< (IN) Device mask |
|
NvU32 sourceId; //!< (IN) Values will be based on the number of heads exposed per GPU(0, 1?) |
|
NvU32 bPrimary:1; //!< (IN/OUT) Indicates if this is the GPU's primary view target. This is not the desktop GDI primary. |
|
//!< NvAPI_SetViewEx() automatically selects the first target in NV_DISPLAY_PATH_INFO index 0 as the GPU's primary view. |
|
NV_GPU_CONNECTOR_TYPE connector; //!< (IN) Specify connector type. For TV only. |
|
|
|
// source mode information |
|
NvU32 width; //!< (IN) Width of the mode |
|
NvU32 height; //!< (IN) Height of the mode |
|
NvU32 depth; //!< (IN) Depth of the mode |
|
NV_FORMAT colorFormat; //!< Color format if it needs to be specified. Not used now. |
|
|
|
//rotation setting of the mode |
|
NV_ROTATE rotation; //!< (IN) Rotation setting. |
|
|
|
// the scaling mode |
|
NV_SCALING scaling; //!< (IN) Scaling setting |
|
|
|
// Timing info |
|
NvU32 refreshRate; //!< (IN) Refresh rate of the mode |
|
NvU32 interlaced:1; //!< (IN) Interlaced mode flag |
|
|
|
NV_DISPLAY_TV_FORMAT tvFormat; //!< (IN) To choose the last TV format set this value to NV_DISPLAY_TV_FORMAT_NONE |
|
|
|
// Windows desktop position |
|
NvU32 posx; //!< (IN/OUT) X-offset of this display on the Windows desktop |
|
NvU32 posy; //!< (IN/OUT) Y-offset of this display on the Windows desktop |
|
NvU32 bGDIPrimary:1; //!< (IN/OUT) Indicates if this is the desktop GDI primary. |
|
|
|
NvU32 bForceModeSet:1;//!< (IN) Used only on Win7 and higher during a call to NvAPI_SetViewEx(). Turns off optimization & forces OS to set supplied mode. |
|
NvU32 bFocusDisplay:1;//!< (IN) If set, this display path should have the focus after the GPU topology change |
|
NvU32 gpuId:24; //!< (IN) the physical display/target Gpu id which is the owner of the scan out (for SLI multimon, display from the slave Gpu) |
|
|
|
} NV_DISPLAY_PATH; |
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NvAPI_SetViewEx() and NvAPI_GetViewEx(). |
|
typedef struct |
|
{ |
|
NvU32 version; //!< (IN) Structure version |
|
NvU32 count; //!< (IN) Path count |
|
NV_DISPLAY_PATH path[NVAPI_MAX_DISPLAY_PATH]; |
|
} NV_DISPLAY_PATH_INFO_V3; |
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NvAPI_SetViewEx() and NvAPI_GetViewEx(). |
|
typedef struct |
|
{ |
|
NvU32 version; //!< (IN) Structure version |
|
NvU32 count; //!< (IN) Path count |
|
NV_DISPLAY_PATH path[NVAPI_ADVANCED_MAX_DISPLAY_PATH]; |
|
} NV_DISPLAY_PATH_INFO; |
|
|
|
//! \addtogroup dispcontrol |
|
//! Macro for constructing the version fields of NV_DISPLAY_PATH_INFO |
|
//! @{ |
|
#define NV_DISPLAY_PATH_INFO_VER NV_DISPLAY_PATH_INFO_VER4 |
|
#define NV_DISPLAY_PATH_INFO_VER4 MAKE_NVAPI_VERSION(NV_DISPLAY_PATH_INFO,4) |
|
#define NV_DISPLAY_PATH_INFO_VER3 MAKE_NVAPI_VERSION(NV_DISPLAY_PATH_INFO,3) |
|
#define NV_DISPLAY_PATH_INFO_VER2 MAKE_NVAPI_VERSION(NV_DISPLAY_PATH_INFO,2) |
|
#define NV_DISPLAY_PATH_INFO_VER1 MAKE_NVAPI_VERSION(NV_DISPLAY_PATH_INFO,1) |
|
//! @} |
|
|
|
|
|
//! \ingroup dispcontrol |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_DISP_SetDisplayConfig.") |
|
NVAPI_INTERFACE NvAPI_SetViewEx(NvDisplayHandle hNvDisplay, NV_DISPLAY_PATH_INFO *pPathInfo, NV_TARGET_VIEW_MODE displayView); |
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// SetDisplayConfig/GetDisplayConfig |
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! \ingroup dispcontrol |
|
|
|
typedef struct _NV_POSITION |
|
{ |
|
NvS32 x; |
|
NvS32 y; |
|
} NV_POSITION; |
|
|
|
//! \ingroup dispcontrol |
|
typedef struct _NV_RESOLUTION |
|
{ |
|
NvU32 width; |
|
NvU32 height; |
|
NvU32 colorDepth; |
|
} NV_RESOLUTION; |
|
|
|
//! \ingroup dispcontrol |
|
typedef struct _NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO_V1 |
|
{ |
|
NvU32 version; |
|
|
|
// Rotation and Scaling |
|
NV_ROTATE rotation; //!< (IN) rotation setting. |
|
NV_SCALING scaling; //!< (IN) scaling setting. |
|
|
|
// Refresh Rate |
|
NvU32 refreshRate1K; //!< (IN) Non-interlaced Refresh Rate of the mode, multiplied by 1000, 0 = ignored |
|
//!< This is the value which driver reports to the OS. |
|
// Flags |
|
NvU32 interlaced:1; //!< (IN) Interlaced mode flag, ignored if refreshRate == 0 |
|
NvU32 primary:1; //!< (IN) Declares primary display in clone configuration. This is *NOT* GDI Primary. |
|
//!< Only one target can be primary per source. If no primary is specified, the first |
|
//!< target will automatically be primary. |
|
#ifdef NV_PAN_AND_SCAN_DEFINED |
|
NvU32 isPanAndScanTarget:1; //!< Whether on this target Pan and Scan is enabled or has to be enabled. Valid only |
|
//!< when the target is part of clone topology. |
|
#else |
|
NvU32 reservedBit1:1; |
|
#endif |
|
NvU32 disableVirtualModeSupport:1; |
|
NvU32 isPreferredUnscaledTarget:1; |
|
NvU32 reserved:27; |
|
// TV format information |
|
NV_GPU_CONNECTOR_TYPE connector; //!< Specify connector type. For TV only, ignored if tvFormat == NV_DISPLAY_TV_FORMAT_NONE |
|
NV_DISPLAY_TV_FORMAT tvFormat; //!< (IN) to choose the last TV format set this value to NV_DISPLAY_TV_FORMAT_NONE |
|
//!< In case of NvAPI_DISP_GetDisplayConfig(), this field will indicate the currently applied TV format; |
|
//!< if no TV format is applied, this field will have NV_DISPLAY_TV_FORMAT_NONE value. |
|
//!< In case of NvAPI_DISP_SetDisplayConfig(), this field should only be set in case of TVs; |
|
//!< for other displays this field will be ignored and resolution & refresh rate specified in input will be used to apply the TV format. |
|
|
|
// Backend (raster) timing standard |
|
NV_TIMING_OVERRIDE timingOverride; //!< Ignored if timingOverride == NV_TIMING_OVERRIDE_CURRENT |
|
NV_TIMING timing; //!< Scan out timing, valid only if timingOverride == NV_TIMING_OVERRIDE_CUST |
|
//!< The value NV_TIMING::NV_TIMINGEXT::rrx1k is obtained from the EDID. The driver may |
|
//!< tweak this value for HDTV, stereo, etc., before reporting it to the OS. |
|
} NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO_V1; |
|
|
|
//! \ingroup dispcontrol |
|
typedef NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO_V1 NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO; |
|
|
|
//! \ingroup dispcontrol |
|
#define NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO_VER1 MAKE_NVAPI_VERSION(NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO_V1,1) |
|
|
|
//! \ingroup dispcontrol |
|
#define NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO_VER NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO_VER1 |
|
|
|
//! \ingroup dispcontrol |
|
typedef struct _NV_DISPLAYCONFIG_PATH_TARGET_INFO_V1 |
|
{ |
|
NvU32 displayId; //!< Display ID |
|
NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO* details; //!< May be NULL if no advanced settings are required. NULL for Non-NVIDIA Display. |
|
} NV_DISPLAYCONFIG_PATH_TARGET_INFO_V1; |
|
|
|
//! \ingroup dispcontrol |
|
typedef struct _NV_DISPLAYCONFIG_PATH_TARGET_INFO_V2 |
|
{ |
|
NvU32 displayId; //!< Display ID |
|
NV_DISPLAYCONFIG_PATH_ADVANCED_TARGET_INFO* details; //!< May be NULL if no advanced settings are required |
|
NvU32 targetId; //!< Windows CCD target ID. Must be present only for non-NVIDIA adapter, for NVIDIA adapter this parameter is ignored. |
|
} NV_DISPLAYCONFIG_PATH_TARGET_INFO_V2; |
|
|
|
|
|
//! \ingroup dispcontrol |
|
//! As version is not defined for this structure, we will be using version of NV_DISPLAYCONFIG_PATH_INFO |
|
typedef NV_DISPLAYCONFIG_PATH_TARGET_INFO_V2 NV_DISPLAYCONFIG_PATH_TARGET_INFO; |
|
|
|
|
|
//! \ingroup dispcontrol |
|
typedef enum _NV_DISPLAYCONFIG_SPANNING_ORIENTATION |
|
{ |
|
NV_DISPLAYCONFIG_SPAN_NONE = 0, |
|
NV_DISPLAYCONFIG_SPAN_HORIZONTAL = 1, |
|
NV_DISPLAYCONFIG_SPAN_VERTICAL = 2, |
|
} NV_DISPLAYCONFIG_SPANNING_ORIENTATION; |
|
|
|
//! \ingroup dispcontrol |
|
typedef struct _NV_DISPLAYCONFIG_SOURCE_MODE_INFO_V1 |
|
{ |
|
NV_RESOLUTION resolution; |
|
NV_FORMAT colorFormat; //!< Ignored at present, must be NV_FORMAT_UNKNOWN (0) |
|
NV_POSITION position; //!< Is all positions are 0 or invalid, displays will be automatically |
|
//!< positioned from left to right with GDI Primary at 0,0, and all |
|
//!< other displays in the order of the path array. |
|
NV_DISPLAYCONFIG_SPANNING_ORIENTATION spanningOrientation; //!< Spanning is only supported on XP |
|
NvU32 bGDIPrimary : 1; |
|
NvU32 bSLIFocus : 1; |
|
NvU32 reserved : 30; //!< Must be 0 |
|
} NV_DISPLAYCONFIG_SOURCE_MODE_INFO_V1; |
|
|
|
|
|
|
|
//! \ingroup dispcontrol |
|
typedef struct _NV_DISPLAYCONFIG_PATH_INFO_V1 |
|
{ |
|
NvU32 version; |
|
NvU32 reserved_sourceId; //!< This field is reserved. There is ongoing debate if we need this field. |
|
//!< Identifies sourceIds used by Windows. If all sourceIds are 0, |
|
//!< these will be computed automatically. |
|
NvU32 targetInfoCount; //!< Number of elements in targetInfo array |
|
NV_DISPLAYCONFIG_PATH_TARGET_INFO_V1* targetInfo; |
|
NV_DISPLAYCONFIG_SOURCE_MODE_INFO_V1* sourceModeInfo; //!< May be NULL if mode info is not important |
|
} NV_DISPLAYCONFIG_PATH_INFO_V1; |
|
|
|
//! \ingroup dispcontrol |
|
//! This define is temporary and must be removed once DVS failure is fixed. |
|
#define _NV_DISPLAYCONFIG_PATH_INFO_V2 _NV_DISPLAYCONFIG_PATH_INFO |
|
|
|
//! \ingroup dispcontrol |
|
typedef struct _NV_DISPLAYCONFIG_PATH_INFO_V2 |
|
{ |
|
NvU32 version; |
|
union { |
|
NvU32 sourceId; //!< Identifies sourceId used by Windows CCD. This can be optionally set. |
|
NvU32 reserved_sourceId; //!< Only for compatibility |
|
}; |
|
|
|
NvU32 targetInfoCount; //!< Number of elements in targetInfo array |
|
NV_DISPLAYCONFIG_PATH_TARGET_INFO_V2* targetInfo; |
|
NV_DISPLAYCONFIG_SOURCE_MODE_INFO_V1* sourceModeInfo; //!< May be NULL if mode info is not important |
|
NvU32 IsNonNVIDIAAdapter : 1; //!< True for non-NVIDIA adapter. |
|
NvU32 reserved : 31; //!< Must be 0 |
|
void *pOSAdapterID; //!< Used by Non-NVIDIA adapter for pointer to OS Adapter of LUID |
|
//!< type, type casted to void *. |
|
} NV_DISPLAYCONFIG_PATH_INFO_V2; |
|
|
|
//! \ingroup dispcontrol |
|
#define NV_DISPLAYCONFIG_PATH_INFO_VER1 MAKE_NVAPI_VERSION(NV_DISPLAYCONFIG_PATH_INFO_V1,1) |
|
|
|
//! \ingroup dispcontrol |
|
#define NV_DISPLAYCONFIG_PATH_INFO_VER2 MAKE_NVAPI_VERSION(NV_DISPLAYCONFIG_PATH_INFO_V2,2) |
|
|
|
#ifndef NV_DISPLAYCONFIG_PATH_INFO_VER |
|
|
|
typedef NV_DISPLAYCONFIG_PATH_INFO_V2 NV_DISPLAYCONFIG_PATH_INFO; |
|
|
|
#define NV_DISPLAYCONFIG_PATH_INFO_VER NV_DISPLAYCONFIG_PATH_INFO_VER2 |
|
|
|
typedef NV_DISPLAYCONFIG_SOURCE_MODE_INFO_V1 NV_DISPLAYCONFIG_SOURCE_MODE_INFO; |
|
|
|
#endif |
|
|
|
|
|
//! \ingroup dispcontrol |
|
typedef enum _NV_DISPLAYCONFIG_FLAGS |
|
{ |
|
NV_DISPLAYCONFIG_VALIDATE_ONLY = 0x00000001, |
|
NV_DISPLAYCONFIG_SAVE_TO_PERSISTENCE = 0x00000002, |
|
NV_DISPLAYCONFIG_DRIVER_RELOAD_ALLOWED = 0x00000004, //!< Driver reload is permitted if necessary |
|
NV_DISPLAYCONFIG_FORCE_MODE_ENUMERATION = 0x00000008, //!< Refresh OS mode list. |
|
} NV_DISPLAYCONFIG_FLAGS; |
|
|
|
|
|
#define NVAPI_UNICODE_STRING_MAX 2048 |
|
#define NVAPI_BINARY_DATA_MAX 4096 |
|
|
|
typedef NvU16 NvAPI_UnicodeString[NVAPI_UNICODE_STRING_MAX]; |
|
typedef const NvU16 *NvAPI_LPCWSTR; |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetDisplayDriverVersion |
|
//! \fn NvAPI_GetDisplayDriverVersion(NvDisplayHandle hNvDisplay, NV_DISPLAY_DRIVER_VERSION *pVersion) |
|
//! This function returns a struct that describes aspects of the display driver |
|
//! build. |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_SYS_GetDriverAndBranchVersion. |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \param [in] hNvDisplay NVIDIA display handle. |
|
//! \param [out] pVersion Pointer to NV_DISPLAY_DRIVER_VERSION struc |
|
//! |
|
//! \retval NVAPI_ERROR |
|
//! \retval NVAPI_OK |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup driverapi |
|
//! Used in NvAPI_GetDisplayDriverVersion() |
|
typedef struct |
|
{ |
|
NvU32 version; // Structure version |
|
NvU32 drvVersion; |
|
NvU32 bldChangeListNum; |
|
NvAPI_ShortString szBuildBranchString; |
|
NvAPI_ShortString szAdapterString; |
|
} NV_DISPLAY_DRIVER_VERSION; |
|
|
|
//! \ingroup driverapi |
|
#define NV_DISPLAY_DRIVER_VERSION_VER MAKE_NVAPI_VERSION(NV_DISPLAY_DRIVER_VERSION,1) |
|
|
|
|
|
//! \ingroup driverapi |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_SYS_GetDriverAndBranchVersion.") |
|
NVAPI_INTERFACE NvAPI_GetDisplayDriverVersion(NvDisplayHandle hNvDisplay, NV_DISPLAY_DRIVER_VERSION *pVersion); |
|
|
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_OGL_ExpertModeSet[Get] |
|
// |
|
//! \name NvAPI_OGL_ExpertModeSet[Get] Functions |
|
//@{ |
|
//! This function configures OpenGL Expert Mode, an API usage feedback and |
|
//! advice reporting mechanism. The effects of this call are |
|
//! applied only to the current context, and are reset to the |
|
//! defaults when the context is destroyed. |
|
//! |
|
//! \note This feature is valid at runtime only when GLExpert |
|
//! functionality has been built into the OpenGL driver |
|
//! installed on the system. All Windows Vista OpenGL |
|
//! drivers provided by NVIDIA have this instrumentation |
|
//! included by default. Windows XP, however, requires a |
|
//! special display driver available with the NVIDIA |
|
//! PerfSDK found at developer.nvidia.com. |
|
//! |
|
//! \note These functions are valid only for the current OpenGL |
|
//! context. Calling these functions prior to creating a |
|
//! context and calling MakeCurrent with it will result |
|
//! in errors and undefined behavior. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \param expertDetailMask Mask made up of NVAPI_OGLEXPERT_DETAIL bits, |
|
//! this parameter specifies the detail level in |
|
//! the feedback stream. |
|
//! |
|
//! \param expertReportMask Mask made up of NVAPI_OGLEXPERT_REPORT bits, |
|
//! this parameter specifies the areas of |
|
//! functional interest. |
|
//! |
|
//! \param expertOutputMask Mask made up of NVAPI_OGLEXPERT_OUTPUT bits, |
|
//! this parameter specifies the feedback output |
|
//! location. |
|
//! |
|
//! \param expertCallback Used in conjunction with OUTPUT_TO_CALLBACK, |
|
//! this is a simple callback function the user |
|
//! may use to obtain the feedback stream. The |
|
//! function will be called once per fully |
|
//! qualified feedback stream extry. |
|
//! |
|
//! \retval NVAPI_API_NOT_INTIALIZED NVAPI not initialized |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU found |
|
//! \retval NVAPI_OPENGL_CONTEXT_NOT_CURRENT No NVIDIA OpenGL context |
|
//! which supports GLExpert |
|
//! has been made current |
|
//! \retval NVAPI_ERROR OpenGL driver failed to load properly |
|
//! \retval NVAPI_OK Success |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \addtogroup oglapi |
|
//! @{ |
|
#define NVAPI_OGLEXPERT_DETAIL_NONE 0x00000000 |
|
#define NVAPI_OGLEXPERT_DETAIL_ERROR 0x00000001 |
|
#define NVAPI_OGLEXPERT_DETAIL_SWFALLBACK 0x00000002 |
|
#define NVAPI_OGLEXPERT_DETAIL_BASIC_INFO 0x00000004 |
|
#define NVAPI_OGLEXPERT_DETAIL_DETAILED_INFO 0x00000008 |
|
#define NVAPI_OGLEXPERT_DETAIL_PERFORMANCE_WARNING 0x00000010 |
|
#define NVAPI_OGLEXPERT_DETAIL_QUALITY_WARNING 0x00000020 |
|
#define NVAPI_OGLEXPERT_DETAIL_USAGE_WARNING 0x00000040 |
|
#define NVAPI_OGLEXPERT_DETAIL_ALL 0xFFFFFFFF |
|
|
|
#define NVAPI_OGLEXPERT_REPORT_NONE 0x00000000 |
|
#define NVAPI_OGLEXPERT_REPORT_ERROR 0x00000001 |
|
#define NVAPI_OGLEXPERT_REPORT_SWFALLBACK 0x00000002 |
|
#define NVAPI_OGLEXPERT_REPORT_PIPELINE_VERTEX 0x00000004 |
|
#define NVAPI_OGLEXPERT_REPORT_PIPELINE_GEOMETRY 0x00000008 |
|
#define NVAPI_OGLEXPERT_REPORT_PIPELINE_XFB 0x00000010 |
|
#define NVAPI_OGLEXPERT_REPORT_PIPELINE_RASTER 0x00000020 |
|
#define NVAPI_OGLEXPERT_REPORT_PIPELINE_FRAGMENT 0x00000040 |
|
#define NVAPI_OGLEXPERT_REPORT_PIPELINE_ROP 0x00000080 |
|
#define NVAPI_OGLEXPERT_REPORT_PIPELINE_FRAMEBUFFER 0x00000100 |
|
#define NVAPI_OGLEXPERT_REPORT_PIPELINE_PIXEL 0x00000200 |
|
#define NVAPI_OGLEXPERT_REPORT_PIPELINE_TEXTURE 0x00000400 |
|
#define NVAPI_OGLEXPERT_REPORT_OBJECT_BUFFEROBJECT 0x00000800 |
|
#define NVAPI_OGLEXPERT_REPORT_OBJECT_TEXTURE 0x00001000 |
|
#define NVAPI_OGLEXPERT_REPORT_OBJECT_PROGRAM 0x00002000 |
|
#define NVAPI_OGLEXPERT_REPORT_OBJECT_FBO 0x00004000 |
|
#define NVAPI_OGLEXPERT_REPORT_FEATURE_SLI 0x00008000 |
|
#define NVAPI_OGLEXPERT_REPORT_ALL 0xFFFFFFFF |
|
|
|
|
|
#define NVAPI_OGLEXPERT_OUTPUT_TO_NONE 0x00000000 |
|
#define NVAPI_OGLEXPERT_OUTPUT_TO_CONSOLE 0x00000001 |
|
#define NVAPI_OGLEXPERT_OUTPUT_TO_DEBUGGER 0x00000004 |
|
#define NVAPI_OGLEXPERT_OUTPUT_TO_CALLBACK 0x00000008 |
|
#define NVAPI_OGLEXPERT_OUTPUT_TO_ALL 0xFFFFFFFF |
|
|
|
//! @} |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION TYPE: NVAPI_OGLEXPERT_CALLBACK |
|
// |
|
//! DESCRIPTION: Used in conjunction with OUTPUT_TO_CALLBACK, this is a simple |
|
//! callback function the user may use to obtain the feedback |
|
//! stream. The function will be called once per fully qualified |
|
//! feedback stream entry. |
|
//! |
|
//! \param categoryId Contains the bit from the NVAPI_OGLEXPERT_REPORT |
|
//! mask that corresponds to the current message |
|
//! \param messageId Unique ID for the current message |
|
//! \param detailLevel Contains the bit from the NVAPI_OGLEXPERT_DETAIL |
|
//! mask that corresponds to the current message |
|
//! \param objectId Unique ID of the object that corresponds to the |
|
//! current message |
|
//! \param messageStr Text string from the current message |
|
//! |
|
//! \ingroup oglapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
typedef void (* NVAPI_OGLEXPERT_CALLBACK) (unsigned int categoryId, unsigned int messageId, unsigned int detailLevel, int objectId, const char *messageStr); |
|
|
|
|
|
|
|
//! \ingroup oglapi |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
NVAPI_INTERFACE NvAPI_OGL_ExpertModeSet(NvU32 expertDetailLevel, |
|
NvU32 expertReportMask, |
|
NvU32 expertOutputMask, |
|
NVAPI_OGLEXPERT_CALLBACK expertCallback); |
|
|
|
//! \addtogroup oglapi |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
NVAPI_INTERFACE NvAPI_OGL_ExpertModeGet(NvU32 *pExpertDetailLevel, |
|
NvU32 *pExpertReportMask, |
|
NvU32 *pExpertOutputMask, |
|
NVAPI_OGLEXPERT_CALLBACK *pExpertCallback); |
|
|
|
//@} |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
//! \name NvAPI_OGL_ExpertModeDefaultsSet[Get] Functions |
|
//! |
|
//@{ |
|
//! This function configures OpenGL Expert Mode global defaults. These settings |
|
//! apply to any OpenGL application which starts up after these |
|
//! values are applied (i.e. these settings *do not* apply to |
|
//! currently running applications). |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \param expertDetailLevel Value which specifies the detail level in |
|
//! the feedback stream. This is a mask made up |
|
//! of NVAPI_OGLEXPERT_LEVEL bits. |
|
//! |
|
//! \param expertReportMask Mask made up of NVAPI_OGLEXPERT_REPORT bits, |
|
//! this parameter specifies the areas of |
|
//! functional interest. |
|
//! |
|
//! \param expertOutputMask Mask made up of NVAPI_OGLEXPERT_OUTPUT bits, |
|
//! this parameter specifies the feedback output |
|
//! location. Note that using OUTPUT_TO_CALLBACK |
|
//! here is meaningless and has no effect, but |
|
//! using it will not cause an error. |
|
//! |
|
//! \return ::NVAPI_ERROR or ::NVAPI_OK |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup oglapi |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
NVAPI_INTERFACE NvAPI_OGL_ExpertModeDefaultsSet(NvU32 expertDetailLevel, |
|
NvU32 expertReportMask, |
|
NvU32 expertOutputMask); |
|
|
|
//! \addtogroup oglapi |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
NVAPI_INTERFACE NvAPI_OGL_ExpertModeDefaultsGet(NvU32 *pExpertDetailLevel, |
|
NvU32 *pExpertReportMask, |
|
NvU32 *pExpertOutputMask); |
|
//@} |
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_EnumTCCPhysicalGPUs |
|
// |
|
//! This function returns an array of physical GPU handles that are in TCC Mode. |
|
//! Each handle represents a physical GPU present in the system in TCC Mode. |
|
//! That GPU may not be visible to the OS directly. |
|
//! |
|
//! The array nvGPUHandle will be filled with physical GPU handle values. The returned |
|
//! gpuCount determines how many entries in the array are valid. |
|
//! |
|
//! NOTE: Handles enumerated by this API are only valid for NvAPIs that are tagged as TCC_SUPPORTED |
|
//! If handle is passed to any other API, it will fail with NVAPI_INVALID_HANDLE |
|
//! |
|
//! For WDDM GPU handles please use NvAPI_EnumPhysicalGPUs() |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher, Mac OS X |
|
//! |
|
//! |
|
//! |
|
//! \param [out] nvGPUHandle Physical GPU array that will contain all TCC Physical GPUs |
|
//! \param [out] pGpuCount count represent the number of valid entries in nvGPUHandle |
|
//! |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT nvGPUHandle or pGpuCount is NULL |
|
//! \retval NVAPI_OK One or more handles were returned |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_EnumTCCPhysicalGPUs( NvPhysicalGpuHandle nvGPUHandle[NVAPI_MAX_PHYSICAL_GPUS], NvU32 *pGpuCount); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_EnumLogicalGPUs |
|
// |
|
//! This function returns an array of logical GPU handles. |
|
//! |
|
//! Each handle represents one or more GPUs acting in concert as a single graphics device. |
|
//! |
|
//! At least one GPU must be present in the system and running an NVIDIA display driver. |
|
//! |
|
//! The array nvGPUHandle will be filled with logical GPU handle values. The returned |
|
//! gpuCount determines how many entries in the array are valid. |
|
//! |
|
//! \note All logical GPUs handles get invalidated on a GPU topology change, so the calling |
|
//! application is required to renum the logical GPU handles to get latest physical handle |
|
//! mapping after every GPU topology change activated by a call to NvAPI_SetGpuTopologies(). |
|
//! |
|
//! To detect if SLI rendering is enabled, use NvAPI_D3D_GetCurrentSLIState(). |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT nvGPUHandle or pGpuCount is NULL |
|
//! \retval NVAPI_OK One or more handles were returned |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_EnumLogicalGPUs(NvLogicalGpuHandle nvGPUHandle[NVAPI_MAX_LOGICAL_GPUS], NvU32 *pGpuCount); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetPhysicalGPUsFromDisplay |
|
// |
|
//! This function returns an array of physical GPU handles associated with the specified display. |
|
//! |
|
//! At least one GPU must be present in the system and running an NVIDIA display driver. |
|
//! |
|
//! The array nvGPUHandle will be filled with physical GPU handle values. The returned |
|
//! gpuCount determines how many entries in the array are valid. |
|
//! |
|
//! If the display corresponds to more than one physical GPU, the first GPU returned |
|
//! is the one with the attached active output. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hNvDisp is not valid; nvGPUHandle or pGpuCount is NULL |
|
//! \retval NVAPI_OK One or more handles were returned |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND no NVIDIA GPU driving a display was found |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GetPhysicalGPUsFromDisplay(NvDisplayHandle hNvDisp, NvPhysicalGpuHandle nvGPUHandle[NVAPI_MAX_PHYSICAL_GPUS], NvU32 *pGpuCount); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetPhysicalGPUFromUnAttachedDisplay |
|
// |
|
//! This function returns a physical GPU handle associated with the specified unattached display. |
|
//! The source GPU is a physical render GPU which renders the frame buffer but may or may not drive the scan out. |
|
//! |
|
//! At least one GPU must be present in the system and running an NVIDIA display driver. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hNvUnAttachedDisp is not valid or pPhysicalGpu is NULL. |
|
//! \retval NVAPI_OK One or more handles were returned |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GetPhysicalGPUFromUnAttachedDisplay(NvUnAttachedDisplayHandle hNvUnAttachedDisp, NvPhysicalGpuHandle *pPhysicalGpu); |
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetLogicalGPUFromDisplay |
|
// |
|
//! This function returns the logical GPU handle associated with the specified display. |
|
//! At least one GPU must be present in the system and running an NVIDIA display driver. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hNvDisp is not valid; pLogicalGPU is NULL |
|
//! \retval NVAPI_OK One or more handles were returned |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GetLogicalGPUFromDisplay(NvDisplayHandle hNvDisp, NvLogicalGpuHandle *pLogicalGPU); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetLogicalGPUFromPhysicalGPU |
|
// |
|
//! This function returns the logical GPU handle associated with specified physical GPU handle. |
|
//! At least one GPU must be present in the system and running an NVIDIA display driver. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGPU is not valid; pLogicalGPU is NULL |
|
//! \retval NVAPI_OK One or more handles were returned |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GetLogicalGPUFromPhysicalGPU(NvPhysicalGpuHandle hPhysicalGPU, NvLogicalGpuHandle *pLogicalGPU); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetPhysicalGPUsFromLogicalGPU |
|
// |
|
//! This function returns the physical GPU handles associated with the specified logical GPU handle. |
|
//! At least one GPU must be present in the system and running an NVIDIA display driver. |
|
//! |
|
//! The array hPhysicalGPU will be filled with physical GPU handle values. The returned |
|
//! gpuCount determines how many entries in the array are valid. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hLogicalGPU is not valid; hPhysicalGPU is NULL |
|
//! \retval NVAPI_OK One or more handles were returned |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \retval NVAPI_EXPECTED_LOGICAL_GPU_HANDLE hLogicalGPU was not a logical GPU handle |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GetPhysicalGPUsFromLogicalGPU(NvLogicalGpuHandle hLogicalGPU,NvPhysicalGpuHandle hPhysicalGPU[NVAPI_MAX_PHYSICAL_GPUS], NvU32 *pGpuCount); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetGpuCoreCount |
|
// |
|
//! DESCRIPTION: Retrieves the total number of cores defined for a GPU. |
|
//! Returns 0 on architectures that don't define GPU cores. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \retval ::NVAPI_INVALID_ARGUMENT pCount is NULL |
|
//! \retval ::NVAPI_OK *pCount is set |
|
//! \retval ::NVAPI_NVIDIA_DEVICE_NOT_FOUND no NVIDIA GPU driving a display was found |
|
//! \retval ::NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle |
|
//! \retval ::NVAPI_NOT_SUPPORTED API call is not supported on current architecture |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetGpuCoreCount(NvPhysicalGpuHandle hPhysicalGpu,NvU32 *pCount); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetAllOutputs |
|
// |
|
//! This function returns set of all GPU-output identifiers as a bitmask. |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_GPU_GetAllDisplayIds. |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 85 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu or pOutputsMask is NULL. |
|
//! \retval NVAPI_OK *pOutputsMask contains a set of GPU-output identifiers. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle. |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_GPU_GetAllDisplayIds.") |
|
NVAPI_INTERFACE NvAPI_GPU_GetAllOutputs(NvPhysicalGpuHandle hPhysicalGpu,NvU32 *pOutputsMask); |
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetConnectedOutputs |
|
// |
|
//! This function is the same as NvAPI_GPU_GetAllOutputs() but returns only the set of GPU output |
|
//! identifiers that are connected to display devices. |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_GPU_GetConnectedDisplayIds. |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu or pOutputsMask is NULL. |
|
//! \retval NVAPI_OK *pOutputsMask contains a set of GPU-output identifiers. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle. |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_GPU_GetConnectedDisplayIds.") |
|
NVAPI_INTERFACE NvAPI_GPU_GetConnectedOutputs(NvPhysicalGpuHandle hPhysicalGpu, NvU32 *pOutputsMask); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetConnectedSLIOutputs |
|
// |
|
//! DESCRIPTION: This function is the same as NvAPI_GPU_GetConnectedOutputs() but returns only the set of GPU-output |
|
//! identifiers that can be selected in an SLI configuration. |
|
//! NOTE: This function matches NvAPI_GPU_GetConnectedOutputs() |
|
//! - On systems which are not SLI capable. |
|
//! - If the queried GPU is not part of a valid SLI group. |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_GPU_GetConnectedDisplayIds. |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 170 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu or pOutputsMask is NULL |
|
//! \retval NVAPI_OK *pOutputsMask contains a set of GPU-output identifiers |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE: hPhysicalGpu was not a physical GPU handle |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_GPU_GetConnectedDisplayIds.") |
|
NVAPI_INTERFACE NvAPI_GPU_GetConnectedSLIOutputs(NvPhysicalGpuHandle hPhysicalGpu, NvU32 *pOutputsMask); |
|
|
|
|
|
|
|
|
|
//! \ingroup gpu |
|
typedef enum |
|
{ |
|
NV_MONITOR_CONN_TYPE_UNINITIALIZED = 0, |
|
NV_MONITOR_CONN_TYPE_VGA, |
|
NV_MONITOR_CONN_TYPE_COMPONENT, |
|
NV_MONITOR_CONN_TYPE_SVIDEO, |
|
NV_MONITOR_CONN_TYPE_HDMI, |
|
NV_MONITOR_CONN_TYPE_DVI, |
|
NV_MONITOR_CONN_TYPE_LVDS, |
|
NV_MONITOR_CONN_TYPE_DP, |
|
NV_MONITOR_CONN_TYPE_COMPOSITE, |
|
NV_MONITOR_CONN_TYPE_UNKNOWN = -1 |
|
} NV_MONITOR_CONN_TYPE; |
|
|
|
|
|
//! \addtogroup gpu |
|
//! @{ |
|
#define NV_GPU_CONNECTED_IDS_FLAG_UNCACHED NV_BIT(0) //!< Get uncached connected devices |
|
#define NV_GPU_CONNECTED_IDS_FLAG_SLI NV_BIT(1) //!< Get devices such that those can be selected in an SLI configuration |
|
#define NV_GPU_CONNECTED_IDS_FLAG_LIDSTATE NV_BIT(2) //!< Get devices such that to reflect the Lid State |
|
#define NV_GPU_CONNECTED_IDS_FLAG_FAKE NV_BIT(3) //!< Get devices that includes the fake connected monitors |
|
#define NV_GPU_CONNECTED_IDS_FLAG_EXCLUDE_MST NV_BIT(4) //!< Excludes devices that are part of the multi stream topology. |
|
|
|
//! @} |
|
|
|
//! \ingroup gpu |
|
typedef struct _NV_GPU_DISPLAYIDS |
|
{ |
|
NvU32 version; |
|
NV_MONITOR_CONN_TYPE connectorType; //!< out: vga, tv, dvi, hdmi and dp. This is reserved for future use and clients should not rely on this information. Instead get the |
|
//!< GPU connector type from NvAPI_GPU_GetConnectorInfo/NvAPI_GPU_GetConnectorInfoEx |
|
NvU32 displayId; //!< this is a unique identifier for each device |
|
NvU32 isDynamic:1; //!< if bit is set then this display is part of MST topology and it's a dynamic |
|
NvU32 isMultiStreamRootNode:1; //!< if bit is set then this displayID belongs to a multi stream enabled connector(root node). Note that when multi stream is enabled and |
|
//!< a single multi stream capable monitor is connected to it, the monitor will share the display id with the RootNode. |
|
//!< When there is more than one monitor connected in a multi stream topology, then the root node will have a separate displayId. |
|
NvU32 isActive:1; //!< if bit is set then this display is being actively driven |
|
NvU32 isCluster:1; //!< if bit is set then this display is the representative display |
|
NvU32 isOSVisible:1; //!< if bit is set, then this display is reported to the OS |
|
NvU32 isWFD:1; //!< if bit is set, then this display is wireless |
|
NvU32 isConnected:1; //!< if bit is set, then this display is connected |
|
NvU32 reservedInternal:10; //!< Do not use |
|
NvU32 isPhysicallyConnected:1; //!< if bit is set, then this display is a phycially connected display; Valid only when isConnected bit is set |
|
NvU32 reserved: 14; //!< must be zero |
|
} NV_GPU_DISPLAYIDS; |
|
|
|
//! \ingroup gpu |
|
//! Macro for constructing the version field of ::_NV_GPU_DISPLAYIDS |
|
#define NV_GPU_DISPLAYIDS_VER1 MAKE_NVAPI_VERSION(NV_GPU_DISPLAYIDS,1) |
|
#define NV_GPU_DISPLAYIDS_VER2 MAKE_NVAPI_VERSION(NV_GPU_DISPLAYIDS,3) |
|
|
|
#define NV_GPU_DISPLAYIDS_VER NV_GPU_DISPLAYIDS_VER2 |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetConnectedDisplayIds |
|
// |
|
//! \code |
|
//! DESCRIPTION: Due to space limitation NvAPI_GPU_GetConnectedOutputs can return maximum 32 devices, but |
|
//! this is no longer true for DPMST. NvAPI_GPU_GetConnectedDisplayIds will return all |
|
//! the connected display devices in the form of displayIds for the associated hPhysicalGpu. |
|
//! This function can accept set of flags to request cached, uncached, sli and lid to get the connected devices. |
|
//! Default value for flags will be cached . |
|
//! HOW TO USE: 1) for each PhysicalGpu, make a call to get the number of connected displayId's |
|
//! using NvAPI_GPU_GetConnectedDisplayIds by passing the pDisplayIds as NULL |
|
//! On call success: |
|
//! 2) Allocate memory based on pDisplayIdCount then make a call NvAPI_GPU_GetConnectedDisplayIds to populate DisplayIds |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! PARAMETERS: hPhysicalGpu (IN) - GPU selection |
|
//! flags (IN) - One or more defines from NV_GPU_CONNECTED_IDS_FLAG_* as valid flags. |
|
//! pDisplayIds (IN/OUT) - Pointer to an NV_GPU_DISPLAYIDS struct, each entry represents a one displayID and its attributes |
|
//! pDisplayIdCount(OUT)- Number of displayId's. |
|
//! |
|
//! RETURN STATUS: NVAPI_INVALID_ARGUMENT: hPhysicalGpu or pDisplayIds or pDisplayIdCount is NULL |
|
//! NVAPI_OK: *pDisplayIds contains a set of GPU-output identifiers |
|
//! NVAPI_NVIDIA_DEVICE_NOT_FOUND: no NVIDIA GPU driving a display was found |
|
//! NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE: hPhysicalGpu was not a physical GPU handle |
|
//! \endcode |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetConnectedDisplayIds(__in NvPhysicalGpuHandle hPhysicalGpu, __inout_ecount_part_opt(*pDisplayIdCount, *pDisplayIdCount) NV_GPU_DISPLAYIDS* pDisplayIds, __inout NvU32* pDisplayIdCount, __in NvU32 flags); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetAllDisplayIds |
|
// |
|
//! DESCRIPTION: This API returns display IDs for all possible outputs on the GPU. |
|
//! For DPMST connector, it will return display IDs for all the video sinks in the topology. \n |
|
//! HOW TO USE: 1. The first call should be made to get the all display ID count. To get the display ID count, send in \n |
|
//! a) hPhysicalGpu - a valid GPU handle(enumerated using NvAPI_EnumPhysicalGPUs()) as input, \n |
|
//! b) pDisplayIds - NULL, as we just want to get the display ID count. \n |
|
//! c) pDisplayIdCount - a valid pointer to NvU32, whose value is set to ZERO. \n |
|
//! If all parameters are correct and this call is successful, this call will return the display ID's count. \n |
|
//! 2. To get the display ID array, make the second call to NvAPI_GPU_GetAllDisplayIds() with \n |
|
//! a) hPhysicalGpu - should be same value which was sent in first call, \n |
|
//! b) pDisplayIds - pointer to the display ID array allocated by caller based on display ID count, \n |
|
//! eg. malloc(sizeof(NV_GPU_DISPLAYIDS) * pDisplayIdCount). \n |
|
//! c) pDisplayIdCount - a valid pointer to NvU32. This indicates for how many display IDs \n |
|
//! the memory is allocated(pDisplayIds) by the caller. \n |
|
//! If all parameters are correct and this call is successful, this call will return the display ID array and actual |
|
//! display ID count (which was obtained in the first call to NvAPI_GPU_GetAllDisplayIds). If the input display ID count is |
|
//! less than the actual display ID count, it will overwrite the input and give the pDisplayIdCount as actual count and the |
|
//! API will return NVAPI_INSUFFICIENT_BUFFER. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hPhysicalGpu GPU selection. |
|
//! \param [in,out] DisplayIds Pointer to an array of NV_GPU_DISPLAYIDS structures, each entry represents one displayID |
|
//! and its attributes. |
|
//! \param [in,out] pDisplayIdCount As input, this parameter indicates the number of display's id's for which caller has |
|
//! allocated the memory. As output, it will return the actual number of display IDs. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! |
|
//! \retval NVAPI_INSUFFICIENT_BUFFER When the input buffer(pDisplayIds) is less than the actual number of display IDs, this API |
|
//! will return NVAPI_INSUFFICIENT_BUFFER. |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetAllDisplayIds(__in NvPhysicalGpuHandle hPhysicalGpu, __inout_ecount_part_opt(*pDisplayIdCount, *pDisplayIdCount) NV_GPU_DISPLAYIDS* pDisplayIds, __inout NvU32* pDisplayIdCount); |
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetConnectedOutputsWithLidState |
|
// |
|
//! This function is similar to NvAPI_GPU_GetConnectedOutputs(), and returns the connected display identifiers that are connected |
|
//! as an output mask but unlike NvAPI_GPU_GetConnectedOutputs() this API "always" reflects the Lid State in the output mask. |
|
//! Thus if you expect the LID close state to be available in the connection mask use this API. |
|
//! - If LID is closed then this API will remove the LID panel from the connected display identifiers. |
|
//! - If LID is open then this API will reflect the LID panel in the connected display identifiers. |
|
//! |
|
//! \note This API should be used on notebook systems and on systems where the LID state is required in the connection |
|
//! output mask. On desktop systems the returned identifiers will match NvAPI_GPU_GetConnectedOutputs(). |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_GPU_GetConnectedDisplayIds. |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 95 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu or pOutputsMask is NULL |
|
//! \retval NVAPI_OK *pOutputsMask contains a set of GPU-output identifiers |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_GPU_GetConnectedDisplayIds.") |
|
NVAPI_INTERFACE NvAPI_GPU_GetConnectedOutputsWithLidState(NvPhysicalGpuHandle hPhysicalGpu, NvU32 *pOutputsMask); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetConnectedSLIOutputsWithLidState |
|
// |
|
//! DESCRIPTION: This function is the same as NvAPI_GPU_GetConnectedOutputsWithLidState() but returns only the set |
|
//! of GPU-output identifiers that can be selected in an SLI configuration. With SLI disabled, |
|
//! this function matches NvAPI_GPU_GetConnectedOutputsWithLidState(). |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_GPU_GetConnectedDisplayIds. |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 170 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu or pOutputsMask is NULL |
|
//! \retval NVAPI_OK *pOutputsMask contains a set of GPU-output identifiers |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_GPU_GetConnectedDisplayIds.") |
|
NVAPI_INTERFACE NvAPI_GPU_GetConnectedSLIOutputsWithLidState(NvPhysicalGpuHandle hPhysicalGpu, NvU32 *pOutputsMask); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetSystemType |
|
// |
|
//! \fn NvAPI_GPU_GetSystemType(NvPhysicalGpuHandle hPhysicalGpu, NV_SYSTEM_TYPE *pSystemType) |
|
//! This function identifies whether the GPU is a notebook GPU or a desktop GPU. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 95 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu or pOutputsMask is NULL |
|
//! \retval NVAPI_OK *pSystemType contains the GPU system type |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE: hPhysicalGpu was not a physical GPU handle |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup gpu |
|
//! Used in NvAPI_GPU_GetSystemType() |
|
typedef enum |
|
{ |
|
NV_SYSTEM_TYPE_UNKNOWN = 0, |
|
NV_SYSTEM_TYPE_LAPTOP = 1, |
|
NV_SYSTEM_TYPE_DESKTOP = 2, |
|
|
|
} NV_SYSTEM_TYPE; |
|
|
|
|
|
|
|
//! \ingroup gpu |
|
NVAPI_INTERFACE NvAPI_GPU_GetSystemType(NvPhysicalGpuHandle hPhysicalGpu, NV_SYSTEM_TYPE *pSystemType); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetActiveOutputs |
|
// |
|
//! This function is the same as NvAPI_GPU_GetAllOutputs but returns only the set of GPU output |
|
//! identifiers that are actively driving display devices. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 85 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu or pOutputsMask is NULL. |
|
//! \retval NVAPI_OK *pOutputsMask contains a set of GPU-output identifiers. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle. |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetActiveOutputs(NvPhysicalGpuHandle hPhysicalGpu, NvU32 *pOutputsMask); |
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_SetEDID |
|
// |
|
//! Thus function sets the EDID data for the specified GPU handle and connection bit mask. |
|
//! User can either send (Gpu handle & output id) or only display Id in variable displayOutputId parameter & hPhysicalGpu parameter can be default handle (0). |
|
//! \note The EDID will be cached across the boot session and will be enumerated to the OS in this call. |
|
//! To remove the EDID set sizeofEDID to zero. |
|
//! OS and NVAPI connection status APIs will reflect the newly set or removed EDID dynamically. |
|
//! |
|
//! This feature will NOT be supported on the following boards: |
|
//! - GeForce |
|
//! - Quadro VX |
|
//! - Tesla |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 100 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT pEDID is NULL; displayOutputId has 0 or > 1 bits set |
|
//! \retval NVAPI_OK *pEDID data was applied to the requested displayOutputId. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE: hPhysicalGpu was not a physical GPU handle. |
|
//! \retval NVAPI_NOT_SUPPORTED For the above mentioned GPUs |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_SetEDID(NvPhysicalGpuHandle hPhysicalGpu, NvU32 displayOutputId, NV_EDID *pEDID); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetOutputType |
|
// |
|
//! \fn NvAPI_GPU_GetOutputType(NvPhysicalGpuHandle hPhysicalGpu, NvU32 outputId, NV_GPU_OUTPUT_TYPE *pOutputType) |
|
//! This function returns the output type for a specific physical GPU handle and outputId (exactly 1 bit set - see \ref handles). |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \Version Earliest supported ForceWare version: 82.61 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu, outputId, or pOutputsMask is NULL; or outputId has > 1 bit set |
|
//! \retval NVAPI_OK *pOutputType contains a NvGpuOutputType value |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup gpu |
|
//! used in NvAPI_GPU_GetOutputType() |
|
typedef enum _NV_GPU_OUTPUT_TYPE |
|
{ |
|
NVAPI_GPU_OUTPUT_UNKNOWN = 0, |
|
NVAPI_GPU_OUTPUT_CRT = 1, //!< CRT display device |
|
NVAPI_GPU_OUTPUT_DFP = 2, //!< Digital Flat Panel display device |
|
NVAPI_GPU_OUTPUT_TV = 3, //!< TV display device |
|
} NV_GPU_OUTPUT_TYPE; |
|
|
|
|
|
|
|
|
|
//! \ingroup gpu |
|
NVAPI_INTERFACE NvAPI_GPU_GetOutputType(NvPhysicalGpuHandle hPhysicalGpu, NvU32 outputId, NV_GPU_OUTPUT_TYPE *pOutputType); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_ValidateOutputCombination |
|
// |
|
//! This function determines if a set of GPU outputs can be active |
|
//! simultaneously. While a GPU may have <n> outputs, typically they cannot |
|
//! all be active at the same time due to internal resource sharing. |
|
//! |
|
//! Given a physical GPU handle and a mask of candidate outputs, this call |
|
//! will return NVAPI_OK if all of the specified outputs can be driven |
|
//! simultaneously. It will return NVAPI_INVALID_COMBINATION if they cannot. |
|
//! |
|
//! Use NvAPI_GPU_GetAllOutputs() to determine which outputs are candidates. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 85 |
|
//! |
|
//! \retval NVAPI_OK Combination of outputs in outputsMask are valid (can be active simultaneously). |
|
//! \retval NVAPI_INVALID_COMBINATION Combination of outputs in outputsMask are NOT valid. |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu or outputsMask does not have at least 2 bits set. |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_ValidateOutputCombination(NvPhysicalGpuHandle hPhysicalGpu, NvU32 outputsMask); |
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetFullName |
|
// |
|
//! This function retrieves the full GPU name as an ASCII string - for example, "Quadro FX 1400". |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \since Release: 90 |
|
//! |
|
//! \return NVAPI_ERROR or NVAPI_OK |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetFullName(NvPhysicalGpuHandle hPhysicalGpu, NvAPI_ShortString szName); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetPCIIdentifiers |
|
// |
|
//! This function returns the PCI identifiers associated with this GPU. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \since Release: 90 |
|
//! |
|
//! \param DeviceId The internal PCI device identifier for the GPU. |
|
//! \param SubSystemId The internal PCI subsystem identifier for the GPU. |
|
//! \param RevisionId The internal PCI device-specific revision identifier for the GPU. |
|
//! \param ExtDeviceId The external PCI device identifier for the GPU. |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu or an argument is NULL |
|
//! \retval NVAPI_OK Arguments are populated with PCI identifiers |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetPCIIdentifiers(NvPhysicalGpuHandle hPhysicalGpu,NvU32 *pDeviceId,NvU32 *pSubSystemId,NvU32 *pRevisionId,NvU32 *pExtDeviceId); |
|
|
|
|
|
|
|
|
|
//! \ingroup gpu |
|
//! Used in NvAPI_GPU_GetGPUType(). |
|
typedef enum _NV_GPU_TYPE |
|
{ |
|
NV_SYSTEM_TYPE_GPU_UNKNOWN = 0, |
|
NV_SYSTEM_TYPE_IGPU = 1, //!< Integrated GPU |
|
NV_SYSTEM_TYPE_DGPU = 2, //!< Discrete GPU |
|
} NV_GPU_TYPE; |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetGPUType |
|
// |
|
//! DESCRIPTION: This function returns the GPU type (integrated or discrete). |
|
//! See ::NV_GPU_TYPE. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \since Release: 173 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu |
|
//! \retval NVAPI_OK *pGpuType contains the GPU type |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE: hPhysicalGpu was not a physical GPU handle |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetGPUType(__in NvPhysicalGpuHandle hPhysicalGpu, __inout NV_GPU_TYPE *pGpuType); |
|
|
|
|
|
|
|
|
|
//! \ingroup gpu |
|
//! Used in NvAPI_GPU_GetBusType() |
|
typedef enum _NV_GPU_BUS_TYPE |
|
{ |
|
NVAPI_GPU_BUS_TYPE_UNDEFINED = 0, |
|
NVAPI_GPU_BUS_TYPE_PCI = 1, |
|
NVAPI_GPU_BUS_TYPE_AGP = 2, |
|
NVAPI_GPU_BUS_TYPE_PCI_EXPRESS = 3, |
|
NVAPI_GPU_BUS_TYPE_FPCI = 4, |
|
NVAPI_GPU_BUS_TYPE_AXI = 5, |
|
} NV_GPU_BUS_TYPE; |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetBusType |
|
// |
|
//! This function returns the type of bus associated with this GPU. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \since Release: 90 |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu or pBusType is NULL. |
|
//! \retval NVAPI_OK *pBusType contains bus identifier. |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetBusType(NvPhysicalGpuHandle hPhysicalGpu,NV_GPU_BUS_TYPE *pBusType); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetBusId |
|
// |
|
//! DESCRIPTION: Returns the ID of the bus associated with this GPU. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \since Release: 167 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu or pBusId is NULL. |
|
//! \retval NVAPI_OK *pBusId contains the bus ID. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle. |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetBusId(NvPhysicalGpuHandle hPhysicalGpu, NvU32 *pBusId); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetBusSlotId |
|
// |
|
//! DESCRIPTION: Returns the ID of the bus slot associated with this GPU. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \since Release: 167 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu or pBusSlotId is NULL. |
|
//! \retval NVAPI_OK *pBusSlotId contains the bus slot ID. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle. |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetBusSlotId(NvPhysicalGpuHandle hPhysicalGpu, NvU32 *pBusSlotId); |
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetIRQ |
|
// |
|
//! This function returns the interrupt number associated with this GPU. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \since Release: 90 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu or pIRQ is NULL. |
|
//! \retval NVAPI_OK *pIRQ contains interrupt number. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle. |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetIRQ(NvPhysicalGpuHandle hPhysicalGpu,NvU32 *pIRQ); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetVbiosRevision |
|
// |
|
//! This function returns the revision of the video BIOS associated with this GPU. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \since Release: 90 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu or pBiosRevision is NULL. |
|
//! \retval NVAPI_OK *pBiosRevision contains revision number. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle. |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetVbiosRevision(NvPhysicalGpuHandle hPhysicalGpu,NvU32 *pBiosRevision); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetVbiosOEMRevision |
|
// |
|
//! This function returns the OEM revision of the video BIOS associated with this GPU. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 90 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu or pBiosRevision is NULL |
|
//! \retval NVAPI_OK *pBiosRevision contains revision number |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetVbiosOEMRevision(NvPhysicalGpuHandle hPhysicalGpu,NvU32 *pBiosRevision); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetVbiosVersionString |
|
// |
|
//! This function returns the full video BIOS version string in the form of xx.xx.xx.xx.yy where |
|
//! - xx numbers come from NvAPI_GPU_GetVbiosRevision() and |
|
//! - yy comes from NvAPI_GPU_GetVbiosOEMRevision(). |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \since Release: 90 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hPhysicalGpu is NULL. |
|
//! \retval NVAPI_OK szBiosRevision contains version string. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle. |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetVbiosVersionString(NvPhysicalGpuHandle hPhysicalGpu,NvAPI_ShortString szBiosRevision); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetAGPAperture |
|
// |
|
//! This function returns the AGP aperture in megabytes. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \since Release: 90 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT pSize is NULL. |
|
//! \retval NVAPI_OK Call successful. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle. |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetAGPAperture(NvPhysicalGpuHandle hPhysicalGpu,NvU32 *pSize); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetCurrentAGPRate |
|
// |
|
//! This function returns the current AGP Rate (0 = AGP not present, 1 = 1x, 2 = 2x, etc.). |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \since Release: 90 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT pRate is NULL. |
|
//! \retval NVAPI_OK Call successful. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle. |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetCurrentAGPRate(NvPhysicalGpuHandle hPhysicalGpu,NvU32 *pRate); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetCurrentPCIEDownstreamWidth |
|
// |
|
//! This function returns the number of PCIE lanes being used for the PCIE interface |
|
//! downstream from the GPU. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \since Release: 90 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT pWidth is NULL. |
|
//! \retval NVAPI_OK Call successful. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle. |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetCurrentPCIEDownstreamWidth(NvPhysicalGpuHandle hPhysicalGpu,NvU32 *pWidth); |
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetPhysicalFrameBufferSize |
|
// |
|
//! This function returns the physical size of framebuffer in KB. This does NOT include any |
|
//! system RAM that may be dedicated for use by the GPU. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \since Release: 90 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT pSize is NULL |
|
//! \retval NVAPI_OK Call successful |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetPhysicalFrameBufferSize(NvPhysicalGpuHandle hPhysicalGpu,NvU32 *pSize); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetVirtualFrameBufferSize |
|
// |
|
//! This function returns the virtual size of framebuffer in KB. This includes the physical RAM plus any |
|
//! system RAM that has been dedicated for use by the GPU. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \since Release: 90 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT pSize is NULL. |
|
//! \retval NVAPI_OK Call successful. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu was not a physical GPU handle. |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetVirtualFrameBufferSize(NvPhysicalGpuHandle hPhysicalGpu,NvU32 *pSize); |
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetQuadroStatus |
|
// |
|
//! This function retrieves the Quadro status for the GPU (1 if Quadro, 0 if GeForce) |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \return NVAPI_ERROR or NVAPI_OK |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetQuadroStatus(NvPhysicalGpuHandle hPhysicalGpu, NvU32 *pStatus); |
|
|
|
|
|
|
|
|
|
//! \ingroup gpu |
|
typedef struct _NV_BOARD_INFO |
|
{ |
|
NvU32 version; //!< structure version |
|
NvU8 BoardNum[16]; //!< Board Serial Number |
|
|
|
}NV_BOARD_INFO_V1; |
|
|
|
#define NV_BOARD_INFO_VER1 MAKE_NVAPI_VERSION(NV_BOARD_INFO_V1,1) |
|
#ifndef NV_BOARD_INFO_VER |
|
//! \ingroup gpu |
|
typedef NV_BOARD_INFO_V1 NV_BOARD_INFO; |
|
//! \ingroup gpu |
|
//! \ingroup gpu |
|
#define NV_BOARD_INFO_VER NV_BOARD_INFO_VER1 |
|
#endif |
|
|
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetBoardInfo |
|
// |
|
//! DESCRIPTION: This API Retrieves the Board information (a unique GPU Board Serial Number) stored in the InfoROM. |
|
//! |
|
//! \param [in] hPhysicalGpu Physical GPU Handle. |
|
//! \param [in,out] NV_BOARD_INFO Board Information. |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \retval ::NVAPI_OK completed request |
|
//! \retval ::NVAPI_ERROR miscellaneous error occurred |
|
//! \retval ::NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE handle passed is not a physical GPU handle |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI not initialized |
|
//! \retval ::NVAPI_INVALID_POINTER pBoardInfo is NULL |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION the version of the INFO struct is not supported |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetBoardInfo(NvPhysicalGpuHandle hPhysicalGpu, NV_BOARD_INFO *pBoardInfo); |
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// GPU Clock Control |
|
// |
|
// These APIs allow the user to get and set individual clock domains |
|
// on a per-GPU basis. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
|
|
//! \ingroup gpuclock |
|
//! @{ |
|
#define NVAPI_MAX_GPU_CLOCKS 32 |
|
#define NVAPI_MAX_GPU_PUBLIC_CLOCKS 32 |
|
#define NVAPI_MAX_GPU_PERF_CLOCKS 32 |
|
#define NVAPI_MAX_GPU_PERF_VOLTAGES 16 |
|
#define NVAPI_MAX_GPU_PERF_PSTATES 16 |
|
//! @} |
|
|
|
//! \ingroup gpuclock |
|
typedef enum _NV_GPU_PUBLIC_CLOCK_ID |
|
{ |
|
NVAPI_GPU_PUBLIC_CLOCK_GRAPHICS = 0, |
|
NVAPI_GPU_PUBLIC_CLOCK_MEMORY = 4, |
|
NVAPI_GPU_PUBLIC_CLOCK_PROCESSOR = 7, |
|
NVAPI_GPU_PUBLIC_CLOCK_VIDEO = 8, |
|
NVAPI_GPU_PUBLIC_CLOCK_UNDEFINED = NVAPI_MAX_GPU_PUBLIC_CLOCKS, |
|
} NV_GPU_PUBLIC_CLOCK_ID; |
|
|
|
|
|
//! \ingroup gpuclock |
|
typedef enum _NV_GPU_PERF_VOLTAGE_INFO_DOMAIN_ID |
|
{ |
|
NVAPI_GPU_PERF_VOLTAGE_INFO_DOMAIN_CORE = 0, |
|
NVAPI_GPU_PERF_VOLTAGE_INFO_DOMAIN_UNDEFINED = NVAPI_MAX_GPU_PERF_VOLTAGES, |
|
} NV_GPU_PERF_VOLTAGE_INFO_DOMAIN_ID; |
|
|
|
|
|
|
|
//! \ingroup gpuclock |
|
//! Used in NvAPI_GPU_GetAllClockFrequencies() |
|
typedef struct |
|
{ |
|
NvU32 version; //!< Structure version |
|
NvU32 reserved; //!< These bits are reserved for future use. |
|
struct |
|
{ |
|
NvU32 bIsPresent:1; //!< Set if this domain is present on this GPU |
|
NvU32 reserved:31; //!< These bits are reserved for future use. |
|
NvU32 frequency; //!< Clock frequency (kHz) |
|
}domain[NVAPI_MAX_GPU_PUBLIC_CLOCKS]; |
|
} NV_GPU_CLOCK_FREQUENCIES_V1; |
|
|
|
//! \ingroup gpuclock |
|
//! Used in NvAPI_GPU_GetAllClockFrequencies() |
|
typedef enum |
|
{ |
|
NV_GPU_CLOCK_FREQUENCIES_CURRENT_FREQ = 0, |
|
NV_GPU_CLOCK_FREQUENCIES_BASE_CLOCK = 1, |
|
NV_GPU_CLOCK_FREQUENCIES_BOOST_CLOCK = 2, |
|
NV_GPU_CLOCK_FREQUENCIES_CLOCK_TYPE_NUM = 3 |
|
} NV_GPU_CLOCK_FREQUENCIES_CLOCK_TYPE; |
|
|
|
//! \ingroup gpuclock |
|
//! Used in NvAPI_GPU_GetAllClockFrequencies() |
|
typedef struct |
|
{ |
|
NvU32 version; //!< Structure version |
|
NvU32 ClockType:2; //!< One of NV_GPU_CLOCK_FREQUENCIES_CLOCK_TYPE. Used to specify the type of clock to be returned. |
|
NvU32 reserved:22; //!< These bits are reserved for future use. Must be set to 0. |
|
NvU32 reserved1:8; //!< These bits are reserved. |
|
struct |
|
{ |
|
NvU32 bIsPresent:1; //!< Set if this domain is present on this GPU |
|
NvU32 reserved:31; //!< These bits are reserved for future use. |
|
NvU32 frequency; //!< Clock frequency (kHz) |
|
}domain[NVAPI_MAX_GPU_PUBLIC_CLOCKS]; |
|
} NV_GPU_CLOCK_FREQUENCIES_V2; |
|
|
|
//! \ingroup gpuclock |
|
//! Used in NvAPI_GPU_GetAllClockFrequencies() |
|
typedef NV_GPU_CLOCK_FREQUENCIES_V2 NV_GPU_CLOCK_FREQUENCIES; |
|
|
|
//! \addtogroup gpuclock |
|
//! @{ |
|
#define NV_GPU_CLOCK_FREQUENCIES_VER_1 MAKE_NVAPI_VERSION(NV_GPU_CLOCK_FREQUENCIES_V1,1) |
|
#define NV_GPU_CLOCK_FREQUENCIES_VER_2 MAKE_NVAPI_VERSION(NV_GPU_CLOCK_FREQUENCIES_V2,2) |
|
#define NV_GPU_CLOCK_FREQUENCIES_VER_3 MAKE_NVAPI_VERSION(NV_GPU_CLOCK_FREQUENCIES_V2,3) |
|
#define NV_GPU_CLOCK_FREQUENCIES_VER NV_GPU_CLOCK_FREQUENCIES_VER_3 |
|
//! @} |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetAllClockFrequencies |
|
// |
|
//! This function retrieves the NV_GPU_CLOCK_FREQUENCIES structure for the specified physical GPU. |
|
//! |
|
//! For each clock domain: |
|
//! - bIsPresent is set for each domain that is present on the GPU |
|
//! - frequency is the domain's clock freq in kHz |
|
//! |
|
//! Each domain's info is indexed in the array. For example: |
|
//! clkFreqs.domain[NVAPI_GPU_PUBLIC_CLOCK_MEMORY] holds the info for the MEMORY domain. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 295 |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, |
|
//! they are listed below. |
|
//! \retval NVAPI_INVALID_ARGUMENT pClkFreqs is NULL. |
|
//! \ingroup gpuclock |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetAllClockFrequencies(__in NvPhysicalGpuHandle hPhysicalGPU, __inout NV_GPU_CLOCK_FREQUENCIES *pClkFreqs); |
|
|
|
|
|
//! \addtogroup gpupstate |
|
//! @{ |
|
|
|
typedef enum _NV_GPU_PERF_PSTATE_ID |
|
{ |
|
NVAPI_GPU_PERF_PSTATE_P0 = 0, |
|
NVAPI_GPU_PERF_PSTATE_P1, |
|
NVAPI_GPU_PERF_PSTATE_P2, |
|
NVAPI_GPU_PERF_PSTATE_P3, |
|
NVAPI_GPU_PERF_PSTATE_P4, |
|
NVAPI_GPU_PERF_PSTATE_P5, |
|
NVAPI_GPU_PERF_PSTATE_P6, |
|
NVAPI_GPU_PERF_PSTATE_P7, |
|
NVAPI_GPU_PERF_PSTATE_P8, |
|
NVAPI_GPU_PERF_PSTATE_P9, |
|
NVAPI_GPU_PERF_PSTATE_P10, |
|
NVAPI_GPU_PERF_PSTATE_P11, |
|
NVAPI_GPU_PERF_PSTATE_P12, |
|
NVAPI_GPU_PERF_PSTATE_P13, |
|
NVAPI_GPU_PERF_PSTATE_P14, |
|
NVAPI_GPU_PERF_PSTATE_P15, |
|
NVAPI_GPU_PERF_PSTATE_UNDEFINED = NVAPI_MAX_GPU_PERF_PSTATES, |
|
NVAPI_GPU_PERF_PSTATE_ALL, |
|
|
|
} NV_GPU_PERF_PSTATE_ID; |
|
|
|
//! @} |
|
|
|
|
|
|
|
//! \ingroup gpupstate |
|
//! Used in NvAPI_GPU_GetPstatesInfoEx() |
|
typedef struct |
|
{ |
|
NvU32 version; |
|
NvU32 flags; //!< - bit 0 indicates if perfmon is enabled or not |
|
//!< - bit 1 indicates if dynamic Pstate is capable or not |
|
//!< - bit 2 indicates if dynamic Pstate is enable or not |
|
//!< - all other bits must be set to 0 |
|
NvU32 numPstates; //!< The number of available p-states |
|
NvU32 numClocks; //!< The number of clock domains supported by each P-State |
|
struct |
|
{ |
|
NV_GPU_PERF_PSTATE_ID pstateId; //!< ID of the p-state. |
|
NvU32 flags; //!< - bit 0 indicates if the PCIE limit is GEN1 or GEN2 |
|
//!< - bit 1 indicates if the Pstate is overclocked or not |
|
//!< - bit 2 indicates if the Pstate is overclockable or not |
|
//!< - all other bits must be set to 0 |
|
struct |
|
{ |
|
NV_GPU_PUBLIC_CLOCK_ID domainId; //!< ID of the clock domain |
|
NvU32 flags; //!< Reserved. Must be set to 0 |
|
NvU32 freq; //!< Clock frequency in kHz |
|
|
|
} clocks[NVAPI_MAX_GPU_PERF_CLOCKS]; |
|
} pstates[NVAPI_MAX_GPU_PERF_PSTATES]; |
|
|
|
} NV_GPU_PERF_PSTATES_INFO_V1; |
|
|
|
|
|
//! \ingroup gpupstate |
|
typedef struct |
|
{ |
|
NvU32 version; |
|
NvU32 flags; //!< - bit 0 indicates if perfmon is enabled or not |
|
//!< - bit 1 indicates if dynamic Pstate is capable or not |
|
//!< - bit 2 indicates if dynamic Pstate is enable or not |
|
//!< - all other bits must be set to 0 |
|
NvU32 numPstates; //!< The number of available p-states |
|
NvU32 numClocks; //!< The number of clock domains supported by each P-State |
|
NvU32 numVoltages; |
|
struct |
|
{ |
|
NV_GPU_PERF_PSTATE_ID pstateId; //!< ID of the p-state. |
|
NvU32 flags; //!< - bit 0 indicates if the PCIE limit is GEN1 or GEN2 |
|
//!< - bit 1 indicates if the Pstate is overclocked or not |
|
//!< - bit 2 indicates if the Pstate is overclockable or not |
|
//!< - all other bits must be set to 0 |
|
struct |
|
{ |
|
NV_GPU_PUBLIC_CLOCK_ID domainId; |
|
NvU32 flags; //!< bit 0 indicates if this clock is overclockable |
|
//!< all other bits must be set to 0 |
|
NvU32 freq; |
|
|
|
} clocks[NVAPI_MAX_GPU_PERF_CLOCKS]; |
|
struct |
|
{ |
|
NV_GPU_PERF_VOLTAGE_INFO_DOMAIN_ID domainId; //!< ID of the voltage domain, containing flags and mvolt info |
|
NvU32 flags; //!< Reserved for future use. Must be set to 0 |
|
NvU32 mvolt; //!< Voltage in mV |
|
|
|
} voltages[NVAPI_MAX_GPU_PERF_VOLTAGES]; |
|
|
|
} pstates[NVAPI_MAX_GPU_PERF_PSTATES]; //!< Valid index range is 0 to numVoltages-1 |
|
|
|
} NV_GPU_PERF_PSTATES_INFO_V2; |
|
|
|
//! \ingroup gpupstate |
|
typedef NV_GPU_PERF_PSTATES_INFO_V2 NV_GPU_PERF_PSTATES_INFO; |
|
|
|
|
|
//! \ingroup gpupstate |
|
//! @{ |
|
|
|
//! Macro for constructing the version field of NV_GPU_PERF_PSTATES_INFO_V1 |
|
#define NV_GPU_PERF_PSTATES_INFO_VER1 MAKE_NVAPI_VERSION(NV_GPU_PERF_PSTATES_INFO_V1,1) |
|
|
|
//! Macro for constructing the version field of NV_GPU_PERF_PSTATES_INFO_V2 |
|
#define NV_GPU_PERF_PSTATES_INFO_VER2 MAKE_NVAPI_VERSION(NV_GPU_PERF_PSTATES_INFO_V2,2) |
|
|
|
//! Macro for constructing the version field of NV_GPU_PERF_PSTATES_INFO_V2 |
|
#define NV_GPU_PERF_PSTATES_INFO_VER3 MAKE_NVAPI_VERSION(NV_GPU_PERF_PSTATES_INFO_V2,3) |
|
|
|
//! Macro for constructing the version field of NV_GPU_PERF_PSTATES_INFO |
|
#define NV_GPU_PERF_PSTATES_INFO_VER NV_GPU_PERF_PSTATES_INFO_VER3 |
|
|
|
//! @} |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetPstatesInfoEx |
|
// |
|
//! DESCRIPTION: This API retrieves all performance states (P-States) information. This is the same as |
|
//! NvAPI_GPU_GetPstatesInfo(), but supports an input flag for various options. |
|
//! |
|
//! P-States are GPU active/executing performance capability and power consumption states. |
|
//! |
|
//! P-States ranges from P0 to P15, with P0 being the highest performance/power state, and |
|
//! P15 being the lowest performance/power state. Each P-State, if available, maps to a |
|
//! performance level. Not all P-States are available on a given system. The definitions |
|
//! of each P-State are currently as follows: \n |
|
//! - P0/P1 - Maximum 3D performance |
|
//! - P2/P3 - Balanced 3D performance-power |
|
//! - P8 - Basic HD video playback |
|
//! - P10 - DVD playback |
|
//! - P12 - Minimum idle power consumption |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 304. Instead, use NvAPI_GPU_GetPstates20. |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \param [in] hPhysicalGPU GPU selection. |
|
//! \param [out] pPerfPstatesInfo P-States information retrieved, as detailed below: \n |
|
//! - flags is reserved for future use. |
|
//! - numPstates is the number of available P-States |
|
//! - numClocks is the number of clock domains supported by each P-State |
|
//! - pstates has valid index range from 0 to numPstates - 1 |
|
//! - pstates[i].pstateId is the ID of the P-State, |
|
//! containing the following info: |
|
//! - pstates[i].flags containing the following info: |
|
//! - bit 0 indicates if the PCIE limit is GEN1 or GEN2 |
|
//! - bit 1 indicates if the Pstate is overclocked or not |
|
//! - bit 2 indicates if the Pstate is overclockable or not |
|
//! - pstates[i].clocks has valid index range from 0 to numClocks -1 |
|
//! - pstates[i].clocks[j].domainId is the public ID of the clock domain, |
|
//! containing the following info: |
|
//! - pstates[i].clocks[j].flags containing the following info: |
|
//! bit 0 indicates if the clock domain is overclockable or not |
|
//! - pstates[i].clocks[j].freq is the clock frequency in kHz |
|
//! - pstates[i].voltages has a valid index range from 0 to numVoltages - 1 |
|
//! - pstates[i].voltages[j].domainId is the ID of the voltage domain, |
|
//! containing the following info: |
|
//! - pstates[i].voltages[j].flags is reserved for future use. |
|
//! - pstates[i].voltages[j].mvolt is the voltage in mV |
|
//! inputFlags(IN) - This can be used to select various options: |
|
//! - if bit 0 is set, pPerfPstatesInfo would contain the default settings |
|
//! instead of the current, possibily overclocked settings. |
|
//! - if bit 1 is set, pPerfPstatesInfo would contain the maximum clock |
|
//! frequencies instead of the nominal frequencies. |
|
//! - if bit 2 is set, pPerfPstatesInfo would contain the minimum clock |
|
//! frequencies instead of the nominal frequencies. |
|
//! - all other bits must be set to 0. |
|
//! |
|
//! \retval ::NVAPI_OK Completed request |
|
//! \retval ::NVAPI_ERROR Miscellaneous error occurred |
|
//! \retval ::NVAPI_HANDLE_INVALIDATED Handle passed has been invalidated (see user guide) |
|
//! \retval ::NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE Handle passed is not a physical GPU handle |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION The version of the NV_GPU_PERF_PSTATES struct is not supported |
|
//! |
|
//! \ingroup gpupstate |
|
/////////////////////////////////////////////////////////////////////////////// |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 304. Instead, use NvAPI_GPU_GetPstates20.") |
|
NVAPI_INTERFACE NvAPI_GPU_GetPstatesInfoEx(NvPhysicalGpuHandle hPhysicalGpu, NV_GPU_PERF_PSTATES_INFO *pPerfPstatesInfo, NvU32 inputFlags); |
|
|
|
|
|
//! \addtogroup gpupstate |
|
//! @{ |
|
|
|
#define NVAPI_MAX_GPU_PSTATE20_PSTATES 16 |
|
#define NVAPI_MAX_GPU_PSTATE20_CLOCKS 8 |
|
#define NVAPI_MAX_GPU_PSTATE20_BASE_VOLTAGES 4 |
|
|
|
//! Used to identify clock type |
|
typedef enum |
|
{ |
|
//! Clock domains that use single frequency value within given pstate |
|
NVAPI_GPU_PERF_PSTATE20_CLOCK_TYPE_SINGLE = 0, |
|
|
|
//! Clock domains that allow range of frequency values within given pstate |
|
NVAPI_GPU_PERF_PSTATE20_CLOCK_TYPE_RANGE, |
|
} NV_GPU_PERF_PSTATE20_CLOCK_TYPE_ID; |
|
|
|
//! Used to describe both voltage and frequency deltas |
|
typedef struct |
|
{ |
|
//! Value of parameter delta (in respective units [kHz, uV]) |
|
NvS32 value; |
|
|
|
struct |
|
{ |
|
//! Min value allowed for parameter delta (in respective units [kHz, uV]) |
|
NvS32 min; |
|
|
|
//! Max value allowed for parameter delta (in respective units [kHz, uV]) |
|
NvS32 max; |
|
} valueRange; |
|
} NV_GPU_PERF_PSTATES20_PARAM_DELTA; |
|
|
|
//! Used to describe single clock entry |
|
typedef struct |
|
{ |
|
//! ID of the clock domain |
|
NV_GPU_PUBLIC_CLOCK_ID domainId; |
|
|
|
//! Clock type ID |
|
NV_GPU_PERF_PSTATE20_CLOCK_TYPE_ID typeId; |
|
NvU32 bIsEditable:1; |
|
|
|
//! These bits are reserved for future use (must be always 0) |
|
NvU32 reserved:31; |
|
|
|
//! Current frequency delta from nominal settings in (kHz) |
|
NV_GPU_PERF_PSTATES20_PARAM_DELTA freqDelta_kHz; |
|
|
|
//! Clock domain type dependant information |
|
union |
|
{ |
|
struct |
|
{ |
|
//! Clock frequency within given pstate in (kHz) |
|
NvU32 freq_kHz; |
|
} single; |
|
|
|
struct |
|
{ |
|
//! Min clock frequency within given pstate in (kHz) |
|
NvU32 minFreq_kHz; |
|
|
|
//! Max clock frequency within given pstate in (kHz) |
|
NvU32 maxFreq_kHz; |
|
|
|
//! Voltage domain ID and value range in (uV) required for this clock |
|
NV_GPU_PERF_VOLTAGE_INFO_DOMAIN_ID domainId; |
|
NvU32 minVoltage_uV; |
|
NvU32 maxVoltage_uV; |
|
} range; |
|
} data; |
|
} NV_GPU_PSTATE20_CLOCK_ENTRY_V1; |
|
|
|
//! Used to describe single base voltage entry |
|
typedef struct |
|
{ |
|
//! ID of the voltage domain |
|
NV_GPU_PERF_VOLTAGE_INFO_DOMAIN_ID domainId; |
|
NvU32 bIsEditable:1; |
|
|
|
//! These bits are reserved for future use (must be always 0) |
|
NvU32 reserved:31; |
|
|
|
//! Current base voltage settings in [uV] |
|
NvU32 volt_uV; |
|
|
|
NV_GPU_PERF_PSTATES20_PARAM_DELTA voltDelta_uV; // Current base voltage delta from nominal settings in [uV] |
|
} NV_GPU_PSTATE20_BASE_VOLTAGE_ENTRY_V1; |
|
|
|
//! Used in NvAPI_GPU_GetPstates20() interface call. |
|
|
|
typedef struct |
|
{ |
|
//! Version info of the structure (NV_GPU_PERF_PSTATES20_INFO_VER<n>) |
|
NvU32 version; |
|
|
|
NvU32 bIsEditable:1; |
|
|
|
//! These bits are reserved for future use (must be always 0) |
|
NvU32 reserved:31; |
|
|
|
//! Number of populated pstates |
|
NvU32 numPstates; |
|
|
|
//! Number of populated clocks (per pstate) |
|
NvU32 numClocks; |
|
|
|
//! Number of populated base voltages (per pstate) |
|
NvU32 numBaseVoltages; |
|
|
|
//! Performance state (P-State) settings |
|
//! Valid index range is 0 to numPstates-1 |
|
struct |
|
{ |
|
//! ID of the P-State |
|
NV_GPU_PERF_PSTATE_ID pstateId; |
|
|
|
NvU32 bIsEditable:1; |
|
|
|
//! These bits are reserved for future use (must be always 0) |
|
NvU32 reserved:31; |
|
|
|
//! Array of clock entries |
|
//! Valid index range is 0 to numClocks-1 |
|
NV_GPU_PSTATE20_CLOCK_ENTRY_V1 clocks[NVAPI_MAX_GPU_PSTATE20_CLOCKS]; |
|
|
|
//! Array of baseVoltage entries |
|
//! Valid index range is 0 to numBaseVoltages-1 |
|
NV_GPU_PSTATE20_BASE_VOLTAGE_ENTRY_V1 baseVoltages[NVAPI_MAX_GPU_PSTATE20_BASE_VOLTAGES]; |
|
} pstates[NVAPI_MAX_GPU_PSTATE20_PSTATES]; |
|
} NV_GPU_PERF_PSTATES20_INFO_V1; |
|
|
|
//! Used in NvAPI_GPU_GetPstates20() interface call. |
|
|
|
typedef struct _NV_GPU_PERF_PSTATES20_INFO_V2 |
|
{ |
|
//! Version info of the structure (NV_GPU_PERF_PSTATES20_INFO_VER<n>) |
|
NvU32 version; |
|
|
|
NvU32 bIsEditable:1; |
|
|
|
//! These bits are reserved for future use (must be always 0) |
|
NvU32 reserved:31; |
|
|
|
//! Number of populated pstates |
|
NvU32 numPstates; |
|
|
|
//! Number of populated clocks (per pstate) |
|
NvU32 numClocks; |
|
|
|
//! Number of populated base voltages (per pstate) |
|
NvU32 numBaseVoltages; |
|
|
|
//! Performance state (P-State) settings |
|
//! Valid index range is 0 to numPstates-1 |
|
struct |
|
{ |
|
//! ID of the P-State |
|
NV_GPU_PERF_PSTATE_ID pstateId; |
|
|
|
NvU32 bIsEditable:1; |
|
|
|
//! These bits are reserved for future use (must be always 0) |
|
NvU32 reserved:31; |
|
|
|
//! Array of clock entries |
|
//! Valid index range is 0 to numClocks-1 |
|
NV_GPU_PSTATE20_CLOCK_ENTRY_V1 clocks[NVAPI_MAX_GPU_PSTATE20_CLOCKS]; |
|
|
|
//! Array of baseVoltage entries |
|
//! Valid index range is 0 to numBaseVoltages-1 |
|
NV_GPU_PSTATE20_BASE_VOLTAGE_ENTRY_V1 baseVoltages[NVAPI_MAX_GPU_PSTATE20_BASE_VOLTAGES]; |
|
} pstates[NVAPI_MAX_GPU_PSTATE20_PSTATES]; |
|
|
|
//! OV settings - Please refer to NVIDIA over-volting recommendation to understand impact of this functionality |
|
//! Valid index range is 0 to numVoltages-1 |
|
struct |
|
{ |
|
//! Number of populated voltages |
|
NvU32 numVoltages; |
|
|
|
//! Array of voltage entries |
|
//! Valid index range is 0 to numVoltages-1 |
|
NV_GPU_PSTATE20_BASE_VOLTAGE_ENTRY_V1 voltages[NVAPI_MAX_GPU_PSTATE20_BASE_VOLTAGES]; |
|
} ov; |
|
} NV_GPU_PERF_PSTATES20_INFO_V2; |
|
|
|
typedef NV_GPU_PERF_PSTATES20_INFO_V2 NV_GPU_PERF_PSTATES20_INFO; |
|
|
|
//! Macro for constructing the version field of NV_GPU_PERF_PSTATES20_INFO_V1 |
|
#define NV_GPU_PERF_PSTATES20_INFO_VER1 MAKE_NVAPI_VERSION(NV_GPU_PERF_PSTATES20_INFO_V1,1) |
|
|
|
//! Macro for constructing the version field of NV_GPU_PERF_PSTATES20_INFO_V2 |
|
#define NV_GPU_PERF_PSTATES20_INFO_VER2 MAKE_NVAPI_VERSION(NV_GPU_PERF_PSTATES20_INFO_V2,2) |
|
|
|
//! Macro for constructing the version field of NV_GPU_PERF_PSTATES20_INFO_V2 |
|
#define NV_GPU_PERF_PSTATES20_INFO_VER3 MAKE_NVAPI_VERSION(NV_GPU_PERF_PSTATES20_INFO_V2,3) |
|
|
|
//! Macro for constructing the version field of NV_GPU_PERF_PSTATES20_INFO |
|
#define NV_GPU_PERF_PSTATES20_INFO_VER NV_GPU_PERF_PSTATES20_INFO_VER3 |
|
|
|
//! @} |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetPstates20 |
|
// |
|
//! DESCRIPTION: This API retrieves all performance states (P-States) 2.0 information. |
|
//! |
|
//! P-States are GPU active/executing performance capability states. |
|
//! They range from P0 to P15, with P0 being the highest performance state, |
|
//! and P15 being the lowest performance state. Each P-State, if available, |
|
//! maps to a performance level. Not all P-States are available on a given system. |
|
//! The definition of each P-States are currently as follow: |
|
//! - P0/P1 - Maximum 3D performance |
|
//! - P2/P3 - Balanced 3D performance-power |
|
//! - P8 - Basic HD video playback |
|
//! - P10 - DVD playback |
|
//! - P12 - Minimum idle power consumption |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \since Release: 295 |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hPhysicalGPU GPU selection |
|
//! \param [out] pPstatesInfo P-States information retrieved, as documented in declaration above |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, |
|
//! they are listed below. |
|
//! |
|
//! \ingroup gpupstate |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetPstates20(__in NvPhysicalGpuHandle hPhysicalGpu, __inout NV_GPU_PERF_PSTATES20_INFO *pPstatesInfo); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetCurrentPstate |
|
// |
|
//! DESCRIPTION: This function retrieves the current performance state (P-State). |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \since Release: 165 |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \param [in] hPhysicalGPU GPU selection |
|
//! \param [out] pCurrentPstate The ID of the current P-State of the GPU - see \ref NV_GPU_PERF_PSTATES. |
|
//! |
|
//! \retval NVAPI_OK Completed request |
|
//! \retval NVAPI_ERROR Miscellaneous error occurred. |
|
//! \retval NVAPI_HANDLE_INVALIDATED Handle passed has been invalidated (see user guide). |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE Handle passed is not a physical GPU handle. |
|
//! \retval NVAPI_NOT_SUPPORTED P-States is not supported on this setup. |
|
//! |
|
//! \ingroup gpupstate |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetCurrentPstate(NvPhysicalGpuHandle hPhysicalGpu, NV_GPU_PERF_PSTATE_ID *pCurrentPstate); |
|
|
|
|
|
|
|
|
|
//! \ingroup gpupstate |
|
#define NVAPI_MAX_GPU_UTILIZATIONS 8 |
|
|
|
|
|
|
|
//! \ingroup gpupstate |
|
//! Used in NvAPI_GPU_GetDynamicPstatesInfoEx(). |
|
typedef struct |
|
{ |
|
NvU32 version; //!< Structure version |
|
NvU32 flags; //!< bit 0 indicates if the dynamic Pstate is enabled or not |
|
struct |
|
{ |
|
NvU32 bIsPresent:1; //!< Set if this utilization domain is present on this GPU |
|
NvU32 percentage; //!< Percentage of time where the domain is considered busy in the last 1 second interval |
|
} utilization[NVAPI_MAX_GPU_UTILIZATIONS]; |
|
} NV_GPU_DYNAMIC_PSTATES_INFO_EX; |
|
|
|
//! \ingroup gpupstate |
|
//! Macro for constructing the version field of NV_GPU_DYNAMIC_PSTATES_INFO_EX |
|
#define NV_GPU_DYNAMIC_PSTATES_INFO_EX_VER MAKE_NVAPI_VERSION(NV_GPU_DYNAMIC_PSTATES_INFO_EX,1) |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetDynamicPstatesInfoEx |
|
// |
|
//! DESCRIPTION: This API retrieves the NV_GPU_DYNAMIC_PSTATES_INFO_EX structure for the specified physical GPU. |
|
//! Each domain's info is indexed in the array. For example: |
|
//! - pDynamicPstatesInfo->utilization[NVAPI_GPU_UTILIZATION_DOMAIN_GPU] holds the info for the GPU domain. \p |
|
//! There are currently 4 domains for which GPU utilization and dynamic P-State thresholds can be retrieved: |
|
//! graphic engine (GPU), frame buffer (FB), video engine (VID), and bus interface (BUS). |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \since Release: 185 |
|
//! |
|
//! \retval ::NVAPI_OK |
|
//! \retval ::NVAPI_ERROR |
|
//! \retval ::NVAPI_INVALID_ARGUMENT pDynamicPstatesInfo is NULL |
|
//! \retval ::NVAPI_HANDLE_INVALIDATED |
|
//! \retval ::NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION The version of the INFO struct is not supported |
|
//! |
|
//! \ingroup gpupstate |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetDynamicPstatesInfoEx(NvPhysicalGpuHandle hPhysicalGpu, NV_GPU_DYNAMIC_PSTATES_INFO_EX *pDynamicPstatesInfoEx); |
|
|
|
/////////////////////////////////////////////////////////////////////////////////// |
|
// Thermal API |
|
// Provides ability to get temperature levels from the various thermal sensors associated with the GPU |
|
|
|
//! \ingroup gputhermal |
|
#define NVAPI_MAX_THERMAL_SENSORS_PER_GPU 3 |
|
|
|
//! \ingroup gputhermal |
|
//! Used in NV_GPU_THERMAL_SETTINGS |
|
typedef enum |
|
{ |
|
NVAPI_THERMAL_TARGET_NONE = 0, |
|
NVAPI_THERMAL_TARGET_GPU = 1, //!< GPU core temperature requires NvPhysicalGpuHandle |
|
NVAPI_THERMAL_TARGET_MEMORY = 2, //!< GPU memory temperature requires NvPhysicalGpuHandle |
|
NVAPI_THERMAL_TARGET_POWER_SUPPLY = 4, //!< GPU power supply temperature requires NvPhysicalGpuHandle |
|
NVAPI_THERMAL_TARGET_BOARD = 8, //!< GPU board ambient temperature requires NvPhysicalGpuHandle |
|
NVAPI_THERMAL_TARGET_VCD_BOARD = 9, //!< Visual Computing Device Board temperature requires NvVisualComputingDeviceHandle |
|
NVAPI_THERMAL_TARGET_VCD_INLET = 10, //!< Visual Computing Device Inlet temperature requires NvVisualComputingDeviceHandle |
|
NVAPI_THERMAL_TARGET_VCD_OUTLET = 11, //!< Visual Computing Device Outlet temperature requires NvVisualComputingDeviceHandle |
|
|
|
NVAPI_THERMAL_TARGET_ALL = 15, |
|
NVAPI_THERMAL_TARGET_UNKNOWN = -1, |
|
} NV_THERMAL_TARGET; |
|
|
|
//! \ingroup gputhermal |
|
//! Used in NV_GPU_THERMAL_SETTINGS |
|
typedef enum |
|
{ |
|
NVAPI_THERMAL_CONTROLLER_NONE = 0, |
|
NVAPI_THERMAL_CONTROLLER_GPU_INTERNAL, |
|
NVAPI_THERMAL_CONTROLLER_ADM1032, |
|
NVAPI_THERMAL_CONTROLLER_MAX6649, |
|
NVAPI_THERMAL_CONTROLLER_MAX1617, |
|
NVAPI_THERMAL_CONTROLLER_LM99, |
|
NVAPI_THERMAL_CONTROLLER_LM89, |
|
NVAPI_THERMAL_CONTROLLER_LM64, |
|
NVAPI_THERMAL_CONTROLLER_ADT7473, |
|
NVAPI_THERMAL_CONTROLLER_SBMAX6649, |
|
NVAPI_THERMAL_CONTROLLER_VBIOSEVT, |
|
NVAPI_THERMAL_CONTROLLER_OS, |
|
NVAPI_THERMAL_CONTROLLER_UNKNOWN = -1, |
|
} NV_THERMAL_CONTROLLER; |
|
|
|
//! \ingroup gputhermal |
|
//! Used in NvAPI_GPU_GetThermalSettings() |
|
typedef struct |
|
{ |
|
NvU32 version; //!< structure version |
|
NvU32 count; //!< number of associated thermal sensors |
|
struct |
|
{ |
|
NV_THERMAL_CONTROLLER controller; //!< internal, ADM1032, MAX6649... |
|
NvU32 defaultMinTemp; //!< The min default temperature value of the thermal sensor in degree Celsius |
|
NvU32 defaultMaxTemp; //!< The max default temperature value of the thermal sensor in degree Celsius |
|
NvU32 currentTemp; //!< The current temperature value of the thermal sensor in degree Celsius |
|
NV_THERMAL_TARGET target; //!< Thermal sensor targeted @ GPU, memory, chipset, powersupply, Visual Computing Device, etc. |
|
} sensor[NVAPI_MAX_THERMAL_SENSORS_PER_GPU]; |
|
|
|
} NV_GPU_THERMAL_SETTINGS_V1; |
|
|
|
//! \ingroup gputhermal |
|
typedef struct |
|
{ |
|
NvU32 version; //!< structure version |
|
NvU32 count; //!< number of associated thermal sensors |
|
struct |
|
{ |
|
NV_THERMAL_CONTROLLER controller; //!< internal, ADM1032, MAX6649... |
|
NvS32 defaultMinTemp; //!< Minimum default temperature value of the thermal sensor in degree Celsius |
|
NvS32 defaultMaxTemp; //!< Maximum default temperature value of the thermal sensor in degree Celsius |
|
NvS32 currentTemp; //!< Current temperature value of the thermal sensor in degree Celsius |
|
NV_THERMAL_TARGET target; //!< Thermal sensor targeted - GPU, memory, chipset, powersupply, Visual Computing Device, etc |
|
} sensor[NVAPI_MAX_THERMAL_SENSORS_PER_GPU]; |
|
|
|
} NV_GPU_THERMAL_SETTINGS_V2; |
|
|
|
//! \ingroup gputhermal |
|
typedef NV_GPU_THERMAL_SETTINGS_V2 NV_GPU_THERMAL_SETTINGS; |
|
|
|
//! \ingroup gputhermal |
|
//! @{ |
|
|
|
//! Macro for constructing the version field of NV_GPU_THERMAL_SETTINGS_V1 |
|
#define NV_GPU_THERMAL_SETTINGS_VER_1 MAKE_NVAPI_VERSION(NV_GPU_THERMAL_SETTINGS_V1,1) |
|
|
|
//! Macro for constructing the version field of NV_GPU_THERMAL_SETTINGS_V2 |
|
#define NV_GPU_THERMAL_SETTINGS_VER_2 MAKE_NVAPI_VERSION(NV_GPU_THERMAL_SETTINGS_V2,2) |
|
|
|
//! Macro for constructing the version field of NV_GPU_THERMAL_SETTINGS |
|
#define NV_GPU_THERMAL_SETTINGS_VER NV_GPU_THERMAL_SETTINGS_VER_2 |
|
//! @} |
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetThermalSettings |
|
// |
|
//! This function retrieves the thermal information of all thermal sensors or specific thermal sensor associated with the selected GPU. |
|
//! Thermal sensors are indexed 0 to NVAPI_MAX_THERMAL_SENSORS_PER_GPU-1. |
|
//! |
|
//! - To retrieve specific thermal sensor info, set the sensorIndex to the required thermal sensor index. |
|
//! - To retrieve info for all sensors, set sensorIndex to NVAPI_THERMAL_TARGET_ALL. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \since Release: 85 |
|
//! |
|
//! \param [in] hPhysicalGPU GPU selection. |
|
//! \param [in] sensorIndex Explicit thermal sensor index selection. |
|
//! \param [out] pThermalSettings Array of thermal settings. |
|
//! |
|
//! \retval NVAPI_OK Completed request |
|
//! \retval NVAPI_ERROR Miscellaneous error occurred. |
|
//! \retval NVAPI_INVALID_ARGUMENT pThermalInfo is NULL. |
|
//! \retval NVAPI_HANDLE_INVALIDATED Handle passed has been invalidated (see user guide). |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE Handle passed is not a physical GPU handle. |
|
//! \retval NVAPI_INCOMPATIBLE_STRUCT_VERSION The version of the INFO struct is not supported. |
|
//! \ingroup gputhermal |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetThermalSettings(NvPhysicalGpuHandle hPhysicalGpu, NvU32 sensorIndex, NV_GPU_THERMAL_SETTINGS *pThermalSettings); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////// |
|
// I2C API |
|
// Provides ability to read or write data using I2C protocol. |
|
// These APIs allow I2C access only to DDC monitors |
|
|
|
|
|
//! \addtogroup i2capi |
|
//! @{ |
|
#define NVAPI_MAX_SIZEOF_I2C_DATA_BUFFER 4096 |
|
#define NVAPI_MAX_SIZEOF_I2C_REG_ADDRESS 4 |
|
#define NVAPI_DISPLAY_DEVICE_MASK_MAX 24 |
|
#define NVAPI_I2C_SPEED_DEPRECATED 0xFFFF |
|
|
|
typedef enum |
|
{ |
|
NVAPI_I2C_SPEED_DEFAULT, //!< Set i2cSpeedKhz to I2C_SPEED_DEFAULT if default I2C speed is to be chosen, ie.use the current frequency setting. |
|
NVAPI_I2C_SPEED_3KHZ, |
|
NVAPI_I2C_SPEED_10KHZ, |
|
NVAPI_I2C_SPEED_33KHZ, |
|
NVAPI_I2C_SPEED_100KHZ, |
|
NVAPI_I2C_SPEED_200KHZ, |
|
NVAPI_I2C_SPEED_400KHZ, |
|
} NV_I2C_SPEED; |
|
|
|
//! Used in NvAPI_I2CRead() and NvAPI_I2CWrite() |
|
typedef struct |
|
{ |
|
NvU32 version; //!< The structure version. |
|
NvU32 displayMask; //!< The Display Mask of the concerned display. |
|
NvU8 bIsDDCPort; //!< This flag indicates either the DDC port (TRUE) or the communication port |
|
//!< (FALSE) of the concerned display. |
|
NvU8 i2cDevAddress; //!< The address of the I2C slave. The address should be shifted left by one. For |
|
//!< example, the I2C address 0x50, often used for reading EDIDs, would be stored |
|
//!< here as 0xA0. This matches the position within the byte sent by the master, as |
|
//!< the last bit is reserved to specify the read or write direction. |
|
NvU8* pbI2cRegAddress; //!< The I2C target register address. May be NULL, which indicates no register |
|
//!< address should be sent. |
|
NvU32 regAddrSize; //!< The size in bytes of target register address. If pbI2cRegAddress is NULL, this |
|
//!< field must be 0. |
|
NvU8* pbData; //!< The buffer of data which is to be read or written (depending on the command). |
|
NvU32 cbSize; //!< The size of the data buffer, pbData, to be read or written. |
|
NvU32 i2cSpeed; //!< The target speed of the transaction (between 28Kbps to 40Kbps; not guaranteed). |
|
} NV_I2C_INFO_V1; |
|
|
|
//! Used in NvAPI_I2CRead() and NvAPI_I2CWrite() |
|
typedef struct |
|
{ |
|
NvU32 version; //!< The structure version. |
|
NvU32 displayMask; //!< The Display Mask of the concerned display. |
|
NvU8 bIsDDCPort; //!< This flag indicates either the DDC port (TRUE) or the communication port |
|
//!< (FALSE) of the concerned display. |
|
NvU8 i2cDevAddress; //!< The address of the I2C slave. The address should be shifted left by one. For |
|
//!< example, the I2C address 0x50, often used for reading EDIDs, would be stored |
|
//!< here as 0xA0. This matches the position within the byte sent by the master, as |
|
//!< the last bit is reserved to specify the read or write direction. |
|
NvU8* pbI2cRegAddress; //!< The I2C target register address. May be NULL, which indicates no register |
|
//!< address should be sent. |
|
NvU32 regAddrSize; //!< The size in bytes of target register address. If pbI2cRegAddress is NULL, this |
|
//!< field must be 0. |
|
NvU8* pbData; //!< The buffer of data which is to be read or written (depending on the command). |
|
NvU32 cbSize; //!< The size of the data buffer, pbData, to be read or written. |
|
NvU32 i2cSpeed; //!< Deprecated, Must be set to NVAPI_I2C_SPEED_DEPRECATED. |
|
NV_I2C_SPEED i2cSpeedKhz; //!< The target speed of the transaction in (kHz) (Chosen from the enum NV_I2C_SPEED). |
|
} NV_I2C_INFO_V2; |
|
|
|
//! Used in NvAPI_I2CRead() and NvAPI_I2CWrite() |
|
typedef struct |
|
{ |
|
NvU32 version; //!< The structure version. |
|
NvU32 displayMask; //!< The Display Mask of the concerned display. |
|
NvU8 bIsDDCPort; //!< This flag indicates either the DDC port (TRUE) or the communication port |
|
//!< (FALSE) of the concerned display. |
|
NvU8 i2cDevAddress; //!< The address of the I2C slave. The address should be shifted left by one. For |
|
//!< example, the I2C address 0x50, often used for reading EDIDs, would be stored |
|
//!< here as 0xA0. This matches the position within the byte sent by the master, as |
|
//!< the last bit is reserved to specify the read or write direction. |
|
NvU8* pbI2cRegAddress; //!< The I2C target register address. May be NULL, which indicates no register |
|
//!< address should be sent. |
|
NvU32 regAddrSize; //!< The size in bytes of target register address. If pbI2cRegAddress is NULL, this |
|
//!< field must be 0. |
|
NvU8* pbData; //!< The buffer of data which is to be read or written (depending on the command). |
|
NvU32 cbSize; //!< The size of the data buffer, pbData, to be read or written. |
|
NvU32 i2cSpeed; //!< Deprecated, Must be set to NVAPI_I2C_SPEED_DEPRECATED. |
|
NV_I2C_SPEED i2cSpeedKhz; //!< The target speed of the transaction in (kHz) (Chosen from the enum NV_I2C_SPEED). |
|
NvU8 portId; //!< The portid on which device is connected (remember to set bIsPortIdSet if this value is set) |
|
//!< Optional for pre-Kepler |
|
NvU32 bIsPortIdSet; //!< set this flag on if and only if portid value is set |
|
} NV_I2C_INFO_V3; |
|
|
|
typedef NV_I2C_INFO_V3 NV_I2C_INFO; |
|
|
|
#define NV_I2C_INFO_VER3 MAKE_NVAPI_VERSION(NV_I2C_INFO_V3,3) |
|
#define NV_I2C_INFO_VER2 MAKE_NVAPI_VERSION(NV_I2C_INFO_V2,2) |
|
#define NV_I2C_INFO_VER1 MAKE_NVAPI_VERSION(NV_I2C_INFO_V1,1) |
|
|
|
#define NV_I2C_INFO_VER NV_I2C_INFO_VER3 |
|
//! @} |
|
|
|
/***********************************************************************************/ |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_I2CRead |
|
// |
|
//! This function reads the data buffer from the I2C port. |
|
//! The I2C request must be for a DDC port: pI2cInfo->bIsDDCPort = 1. |
|
//! |
|
//! A data buffer size larger than 16 bytes may be rejected if a register address is specified. In such a case, |
|
//! NVAPI_ARGUMENT_EXCEED_MAX_SIZE would be returned. |
|
//! |
|
//! If a register address is specified (i.e. regAddrSize is positive), then the transaction will be performed in |
|
//! the combined format described in the I2C specification. The register address will be written, followed by |
|
//! reading into the data buffer. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \since Release: 85 |
|
//! |
|
//! \param [in] hPhysicalGPU GPU selection. |
|
//! \param [out] NV_I2C_INFO *pI2cInfo The I2C data input structure |
|
//! |
|
//! \retval NVAPI_OK Completed request |
|
//! \retval NVAPI_ERROR Miscellaneous error occurred. |
|
//! \retval NVAPI_HANDLE_INVALIDATED Handle passed has been invalidated (see user guide). |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE Handle passed is not a physical GPU handle. |
|
//! \retval NVAPI_INCOMPATIBLE_STRUCT_VERSION Structure version is not supported. |
|
//! \retval NVAPI_INVALID_ARGUMENT - argument does not meet specified requirements |
|
//! \retval NVAPI_ARGUMENT_EXCEED_MAX_SIZE - an argument exceeds the maximum |
|
//! |
|
//! \ingroup i2capi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_I2CRead(NvPhysicalGpuHandle hPhysicalGpu, NV_I2C_INFO *pI2cInfo); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_I2CWrite |
|
// |
|
//! This function writes the data buffer to the I2C port. |
|
//! |
|
//! The I2C request must be for a DDC port: pI2cInfo->bIsDDCPort = 1. |
|
//! |
|
//! A data buffer size larger than 16 bytes may be rejected if a register address is specified. In such a case, |
|
//! NVAPI_ARGUMENT_EXCEED_MAX_SIZE would be returned. |
|
//! |
|
//! If a register address is specified (i.e. regAddrSize is positive), then the register address will be written |
|
//! and the data buffer will immediately follow without a restart. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \since Release: 85 |
|
//! |
|
//! \param [in] hPhysicalGPU GPU selection. |
|
//! \param [in] pI2cInfo The I2C data input structure |
|
//! |
|
//! \retval NVAPI_OK Completed request |
|
//! \retval NVAPI_ERROR Miscellaneous error occurred. |
|
//! \retval NVAPI_HANDLE_INVALIDATED Handle passed has been invalidated (see user guide). |
|
//! \retval NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE Handle passed is not a physical GPU handle. |
|
//! \retval NVAPI_INCOMPATIBLE_STRUCT_VERSION Structure version is not supported. |
|
//! \retval NVAPI_INVALID_ARGUMENT Argument does not meet specified requirements |
|
//! \retval NVAPI_ARGUMENT_EXCEED_MAX_SIZE Argument exceeds the maximum |
|
//! |
|
//! \ingroup i2capi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_I2CWrite(NvPhysicalGpuHandle hPhysicalGpu, NV_I2C_INFO *pI2cInfo); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_WorkstationFeatureSetup |
|
// |
|
//! \fn NvAPI_GPU_WorkstationFeatureSetup(NvPhysicalGpuHandle hPhysicalGpu, NvU32 featureEnableMask, NvU32 featureDisableMask) |
|
//! DESCRIPTION: This API configures the driver for a set of workstation features. |
|
//! The driver can allocate the memory resources accordingly. |
|
//! |
|
//! SUPPORTED OS: Windows 7 |
|
//! |
|
//! |
|
//! \param [in] hPhysicalGpu Physical GPU Handle of the display adapter to be configured. GPU handles may be retrieved |
|
//! using NvAPI_EnumPhysicalGPUs. A value of NULL is permitted and applies the same operation |
|
//! to all GPU handles enumerated by NvAPI_EnumPhysicalGPUs. |
|
//! \param [in] featureEnableMask Mask of features the caller requests to enable for use |
|
//! \param [in] featureDisableMask Mask of features the caller requests to disable |
|
//! |
|
//! As a general rule, features in the enable and disable masks are expected to be disjoint, although the disable |
|
//! mask has precedence and a feature flagged in both masks will be disabled. |
|
//! |
|
//! \retval ::NVAPI_OK configuration request succeeded |
|
//! \retval ::NVAPI_ERROR configuration request failed |
|
//! \retval ::NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu is not a physical GPU handle. |
|
//! \retval ::NVAPI_GPU_WORKSTATION_FEATURE_INCOMPLETE requested feature set does not have all resources allocated for completeness. |
|
//! \retval ::NVAPI_NO_IMPLEMENTATION only implemented for Win7 |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup gpu |
|
typedef enum |
|
{ |
|
NVAPI_GPU_WORKSTATION_FEATURE_MASK_SWAPGROUP = 0x00000001, |
|
NVAPI_GPU_WORKSTATION_FEATURE_MASK_STEREO = 0x00000010, |
|
NVAPI_GPU_WORKSTATION_FEATURE_MASK_WARPING = 0x00000100, |
|
NVAPI_GPU_WORKSTATION_FEATURE_MASK_PIXINTENSITY = 0x00000200, |
|
NVAPI_GPU_WORKSTATION_FEATURE_MASK_GRAYSCALE = 0x00000400, |
|
NVAPI_GPU_WORKSTATION_FEATURE_MASK_BPC10 = 0x00001000 |
|
} NVAPI_GPU_WORKSTATION_FEATURE_MASK; |
|
|
|
//! \ingroup gpu |
|
NVAPI_INTERFACE NvAPI_GPU_WorkstationFeatureSetup(__in NvPhysicalGpuHandle hPhysicalGpu, __in NvU32 featureEnableMask, __in NvU32 featureDisableMask); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_WorkstationFeatureQuery |
|
// |
|
//! DESCRIPTION: This API queries the current set of workstation features. |
|
//! |
|
//! SUPPORTED OS: Windows 7 |
|
//! |
|
//! |
|
//! \param [in] hPhysicalGpu Physical GPU Handle of the display adapter to be configured. GPU handles may be retrieved |
|
//! using NvAPI_EnumPhysicalGPUs. |
|
//! \param [out] pConfiguredFeatureMask Mask of features requested for use by client drivers |
|
//! \param [out] pConsistentFeatureMask Mask of features that have all resources allocated for completeness. |
|
//! |
|
//! \retval ::NVAPI_OK configuration request succeeded |
|
//! \retval ::NVAPI_ERROR configuration request failed |
|
//! \retval ::NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE hPhysicalGpu is not a physical GPU handle. |
|
//! \retval ::NVAPI_NO_IMPLEMENTATION only implemented for Win7 |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup gpu |
|
NVAPI_INTERFACE NvAPI_GPU_WorkstationFeatureQuery(__in NvPhysicalGpuHandle hPhysicalGpu, __out_opt NvU32 *pConfiguredFeatureMask, __out_opt NvU32 *pConsistentFeatureMask); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetHDCPSupportStatus |
|
// |
|
//! \fn NvAPI_GPU_GetHDCPSupportStatus(NvPhysicalGpuHandle hPhysicalGpu, NV_GPU_GET_HDCP_SUPPORT_STATUS *pGetHDCPSupportStatus) |
|
//! DESCRIPTION: This function returns a GPU's HDCP support status. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 175 |
|
//! |
|
//! \retval ::NVAPI_OK |
|
//! \retval ::NVAPI_ERROR |
|
//! \retval ::NVAPI_INVALID_ARGUMENT |
|
//! \retval ::NVAPI_HANDLE_INVALIDATED |
|
//! \retval ::NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION |
|
// |
|
//////////////////////////////////////////////////////////////////////////////// |
|
|
|
|
|
//! \addtogroup gpu |
|
//! @{ |
|
|
|
|
|
//! HDCP fuse states - used in NV_GPU_GET_HDCP_SUPPORT_STATUS |
|
typedef enum _NV_GPU_HDCP_FUSE_STATE |
|
{ |
|
NV_GPU_HDCP_FUSE_STATE_UNKNOWN = 0, |
|
NV_GPU_HDCP_FUSE_STATE_DISABLED = 1, |
|
NV_GPU_HDCP_FUSE_STATE_ENABLED = 2, |
|
} NV_GPU_HDCP_FUSE_STATE; |
|
|
|
|
|
//! HDCP key sources - used in NV_GPU_GET_HDCP_SUPPORT_STATUS |
|
typedef enum _NV_GPU_HDCP_KEY_SOURCE |
|
{ |
|
NV_GPU_HDCP_KEY_SOURCE_UNKNOWN = 0, |
|
NV_GPU_HDCP_KEY_SOURCE_NONE = 1, |
|
NV_GPU_HDCP_KEY_SOURCE_CRYPTO_ROM = 2, |
|
NV_GPU_HDCP_KEY_SOURCE_SBIOS = 3, |
|
NV_GPU_HDCP_KEY_SOURCE_I2C_ROM = 4, |
|
NV_GPU_HDCP_KEY_SOURCE_FUSES = 5, |
|
} NV_GPU_HDCP_KEY_SOURCE; |
|
|
|
|
|
//! HDCP key source states - used in NV_GPU_GET_HDCP_SUPPORT_STATUS |
|
typedef enum _NV_GPU_HDCP_KEY_SOURCE_STATE |
|
{ |
|
NV_GPU_HDCP_KEY_SOURCE_STATE_UNKNOWN = 0, |
|
NV_GPU_HDCP_KEY_SOURCE_STATE_ABSENT = 1, |
|
NV_GPU_HDCP_KEY_SOURCE_STATE_PRESENT = 2, |
|
} NV_GPU_HDCP_KEY_SOURCE_STATE; |
|
|
|
|
|
//! HDPC support status - used in NvAPI_GPU_GetHDCPSupportStatus() |
|
typedef struct |
|
{ |
|
NvU32 version; //! Structure version constucted by macro #NV_GPU_GET_HDCP_SUPPORT_STATUS |
|
NV_GPU_HDCP_FUSE_STATE hdcpFuseState; //! GPU's HDCP fuse state |
|
NV_GPU_HDCP_KEY_SOURCE hdcpKeySource; //! GPU's HDCP key source |
|
NV_GPU_HDCP_KEY_SOURCE_STATE hdcpKeySourceState; //! GPU's HDCP key source state |
|
} NV_GPU_GET_HDCP_SUPPORT_STATUS; |
|
|
|
|
|
//! Macro for constructing the version for structure NV_GPU_GET_HDCP_SUPPORT_STATUS |
|
#define NV_GPU_GET_HDCP_SUPPORT_STATUS_VER MAKE_NVAPI_VERSION(NV_GPU_GET_HDCP_SUPPORT_STATUS,1) |
|
|
|
|
|
//! @} |
|
|
|
|
|
//! \ingroup gpu |
|
NVAPI_INTERFACE NvAPI_GPU_GetHDCPSupportStatus(NvPhysicalGpuHandle hPhysicalGpu, NV_GPU_GET_HDCP_SUPPORT_STATUS *pGetHDCPSupportStatus); |
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetTachReading |
|
// |
|
//! DESCRIPTION: This API retrieves the fan speed tachometer reading for the specified physical GPU. |
|
//! |
|
//! HOW TO USE: |
|
//! - NvU32 Value = 0; |
|
//! - ret = NvAPI_GPU_GetTachReading(hPhysicalGpu, &Value); |
|
//! - On call success: |
|
//! - Value contains the tachometer reading |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \param [in] hPhysicalGpu GPU selection. |
|
//! \param [out] pValue Pointer to a variable to get the tachometer reading |
|
//! |
|
//! \retval ::NVAPI_OK - completed request |
|
//! \retval ::NVAPI_ERROR - miscellaneous error occurred |
|
//! \retval ::NVAPI_NOT_SUPPORTED - functionality not supported |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED - nvapi not initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT - invalid argument passed |
|
//! \retval ::NVAPI_HANDLE_INVALIDATED - handle passed has been invalidated (see user guide) |
|
//! \retval ::NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE - handle passed is not a physical GPU handle |
|
//! |
|
//! \ingroup gpucooler |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetTachReading(NvPhysicalGpuHandle hPhysicalGPU, NvU32 *pValue); |
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetECCStatusInfo |
|
// |
|
//! \fn NvAPI_GPU_GetECCStatusInfo(NvPhysicalGpuHandle hPhysicalGpu, |
|
//! NV_GPU_ECC_STATUS_INFO *pECCStatusInfo); |
|
//! DESCRIPTION: This function returns ECC memory status information. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \param [in] hPhysicalGpu A handle identifying the physical GPU for which ECC |
|
//! status information is to be retrieved. |
|
//! \param [out] pECCStatusInfo A pointer to an ECC status structure. |
|
//! |
|
//! \retval ::NVAPI_OK The request was completed successfully. |
|
//! \retval ::NVAPI_ERROR An unknown error occurred. |
|
//! \retval ::NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE The provided GPU handle is not a physical GPU handle. |
|
//! \retval ::NVAPI_INVALID_HANDLE The provided GPU handle is invalid. |
|
//! \retval ::NVAPI_HANDLE_INVALIDATED The provided GPU handle is no longer valid. |
|
//! \retval ::NVAPI_INVALID_POINTER An invalid argument pointer was provided. |
|
//! \retval ::NVAPI_NOT_SUPPORTED The request is not supported. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NvAPI was not yet initialized. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \addtogroup gpuecc |
|
//! Used in NV_GPU_ECC_STATUS_INFO. |
|
typedef enum _NV_ECC_CONFIGURATION |
|
{ |
|
NV_ECC_CONFIGURATION_NOT_SUPPORTED = 0, |
|
NV_ECC_CONFIGURATION_DEFERRED, //!< Changes require a POST to take effect |
|
NV_ECC_CONFIGURATION_IMMEDIATE, //!< Changes can optionally be made to take effect immediately |
|
} NV_ECC_CONFIGURATION; |
|
|
|
//! \ingroup gpuecc |
|
//! Used in NvAPI_GPU_GetECCStatusInfo(). |
|
typedef struct |
|
{ |
|
NvU32 version; //!< Structure version |
|
NvU32 isSupported : 1; //!< ECC memory feature support |
|
NV_ECC_CONFIGURATION configurationOptions; //!< Supported ECC memory feature configuration options |
|
NvU32 isEnabled : 1; //!< Active ECC memory setting |
|
} NV_GPU_ECC_STATUS_INFO; |
|
|
|
//! \ingroup gpuecc |
|
//! Macro for constructing the version field of NV_GPU_ECC_STATUS_INFO |
|
#define NV_GPU_ECC_STATUS_INFO_VER MAKE_NVAPI_VERSION(NV_GPU_ECC_STATUS_INFO,1) |
|
|
|
//! \ingroup gpuecc |
|
NVAPI_INTERFACE NvAPI_GPU_GetECCStatusInfo(NvPhysicalGpuHandle hPhysicalGpu, |
|
NV_GPU_ECC_STATUS_INFO *pECCStatusInfo); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetECCErrorInfo |
|
// |
|
//! \fn NvAPI_GPU_GetECCErrorInfo(NvPhysicalGpuHandle hPhysicalGpu, |
|
//! NV_GPU_ECC_ERROR_INFO *pECCErrorInfo); |
|
//! |
|
//! DESCRIPTION: This function returns ECC memory error information. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \param [in] hPhysicalGpu A handle identifying the physical GPU for |
|
//! which ECC error information is to be |
|
//! retrieved. |
|
//! \param [out] pECCErrorInfo A pointer to an ECC error structure. |
|
//! |
|
//! \retval ::NVAPI_OK The request was completed successfully. |
|
//! \retval ::NVAPI_ERROR An unknown error occurred. |
|
//! \retval ::NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE The provided GPU handle is not a physical GPU handle. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT incorrect param value |
|
//! \retval ::NVAPI_INVALID_POINTER An invalid argument pointer was provided. |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION structure version is not supported, initialize to NV_GPU_ECC_ERROR_INFO_VER. |
|
//! \retval ::NVAPI_HANDLE_INVALIDATED The provided GPU handle is no longer valid. |
|
//! \retval ::NVAPI_NOT_SUPPORTED The request is not supported. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NvAPI was not yet initialized. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
|
|
//! \ingroup gpuecc |
|
//! Used in NvAPI_GPU_GetECCErrorInfo()/ |
|
typedef struct |
|
{ |
|
NvU32 version; //!< Structure version |
|
struct { |
|
NvU64 singleBitErrors; //!< Number of single-bit ECC errors detected since last boot |
|
NvU64 doubleBitErrors; //!< Number of double-bit ECC errors detected since last boot |
|
} current; |
|
struct { |
|
NvU64 singleBitErrors; //!< Number of single-bit ECC errors detected since last counter reset |
|
NvU64 doubleBitErrors; //!< Number of double-bit ECC errors detected since last counter reset |
|
} aggregate; |
|
} NV_GPU_ECC_ERROR_INFO; |
|
|
|
//! \ingroup gpuecc |
|
//! Macro for constructing the version field of NV_GPU_ECC_ERROR_INFO |
|
#define NV_GPU_ECC_ERROR_INFO_VER MAKE_NVAPI_VERSION(NV_GPU_ECC_ERROR_INFO,1) |
|
|
|
//! \ingroup gpuecc |
|
NVAPI_INTERFACE NvAPI_GPU_GetECCErrorInfo(NvPhysicalGpuHandle hPhysicalGpu, |
|
NV_GPU_ECC_ERROR_INFO *pECCErrorInfo); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_ResetECCErrorInfo |
|
// |
|
//! DESCRIPTION: This function resets ECC memory error counters. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \param [in] hPhysicalGpu A handle identifying the physical GPU for |
|
//! which ECC error information is to be |
|
//! cleared. |
|
//! \param [in] bResetCurrent Reset the current ECC error counters. |
|
//! \param [in] bResetAggregate Reset the aggregate ECC error counters. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! |
|
//! \retval ::NVAPI_INVALID_USER_PRIVILEGE - The caller does not have administrative privileges |
|
//! |
|
//! \ingroup gpuecc |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_ResetECCErrorInfo(NvPhysicalGpuHandle hPhysicalGpu, NvU8 bResetCurrent, |
|
NvU8 bResetAggregate); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetECCConfigurationInfo |
|
// |
|
//! \fn NvAPI_GPU_GetECCConfigurationInfo(NvPhysicalGpuHandle hPhysicalGpu, |
|
//! NV_GPU_ECC_CONFIGURATION_INFO *pECCConfigurationInfo); |
|
//! DESCRIPTION: This function returns ECC memory configuration information. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \param [in] hPhysicalGpu A handle identifying the physical GPU for |
|
//! which ECC configuration information |
|
//! is to be retrieved. |
|
//! \param [out] pECCConfigurationInfo A pointer to an ECC |
|
//! configuration structure. |
|
//! |
|
//! \retval ::NVAPI_OK The request was completed successfully. |
|
//! \retval ::NVAPI_ERROR An unknown error occurred. |
|
//! \retval ::NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE The provided GPU handle is not a physical GPU handle. |
|
//! \retval ::NVAPI_INVALID_HANDLE The provided GPU handle is invalid. |
|
//! \retval ::NVAPI_HANDLE_INVALIDATED The provided GPU handle is no longer valid. |
|
//! \retval ::NVAPI_INVALID_POINTER An invalid argument pointer was provided. |
|
//! \retval ::NVAPI_NOT_SUPPORTED The request is not supported. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NvAPI was not yet initialized. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup gpuecc |
|
//! Used in NvAPI_GPU_GetECCConfigurationInfo(). |
|
typedef struct |
|
{ |
|
NvU32 version; //! Structure version |
|
NvU32 isEnabled : 1; //! Current ECC configuration stored in non-volatile memory |
|
NvU32 isEnabledByDefault : 1; //! Factory default ECC configuration (static) |
|
} NV_GPU_ECC_CONFIGURATION_INFO; |
|
|
|
//! \ingroup gpuecc |
|
//! Macro for consstructing the verion field of NV_GPU_ECC_CONFIGURATION_INFO |
|
#define NV_GPU_ECC_CONFIGURATION_INFO_VER MAKE_NVAPI_VERSION(NV_GPU_ECC_CONFIGURATION_INFO,1) |
|
|
|
//! \ingroup gpuecc |
|
NVAPI_INTERFACE NvAPI_GPU_GetECCConfigurationInfo(NvPhysicalGpuHandle hPhysicalGpu, |
|
NV_GPU_ECC_CONFIGURATION_INFO *pECCConfigurationInfo); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_SetECCConfiguration |
|
// |
|
//! DESCRIPTION: This function updates the ECC memory configuration setting. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! TCC_SUPPORTED |
|
//! |
|
//! \param [in] hPhysicalGpu A handle identifying the physical GPU for |
|
//! which to update the ECC configuration |
|
//! setting. |
|
//! \param [in] bEnable The new ECC configuration setting. |
|
//! \param [in] bEnableImmediately Request that the new setting take effect immediately. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! |
|
//! \retval ::NVAPI_INVALID_CONFIGURATION - Possibly SLI is enabled. Disable SLI and retry. |
|
//! \retval ::NVAPI_INVALID_USER_PRIVILEGE - The caller does not have administrative privileges |
|
//! |
|
//! \ingroup gpuecc |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_SetECCConfiguration(NvPhysicalGpuHandle hPhysicalGpu, NvU8 bEnable, |
|
NvU8 bEnableImmediately); |
|
|
|
|
|
|
|
//! \ingroup gpu |
|
typedef struct |
|
{ |
|
NvU32 version; //!< version of this structure |
|
NvU32 width; //!< width of the input texture |
|
NvU32 height; //!< height of the input texture |
|
float* blendingTexture; //!< array of floating values building an intensity RGB texture |
|
} NV_SCANOUT_INTENSITY_DATA_V1; |
|
|
|
//! \ingroup gpu |
|
typedef struct |
|
{ |
|
NvU32 version; //!< version of this structure |
|
NvU32 width; //!< width of the input texture |
|
NvU32 height; //!< height of the input texture |
|
float* blendingTexture; //!< array of floating values building an intensity RGB texture |
|
float* offsetTexture; //!< array of floating values building an offset texture |
|
NvU32 offsetTexChannels; //!< number of channels per pixel in the offset texture |
|
} NV_SCANOUT_INTENSITY_DATA_V2; |
|
|
|
typedef NV_SCANOUT_INTENSITY_DATA_V2 NV_SCANOUT_INTENSITY_DATA; |
|
|
|
//! \ingroup gpu |
|
#define NV_SCANOUT_INTENSITY_DATA_VER1 MAKE_NVAPI_VERSION(NV_SCANOUT_INTENSITY_DATA_V1, 1) |
|
#define NV_SCANOUT_INTENSITY_DATA_VER2 MAKE_NVAPI_VERSION(NV_SCANOUT_INTENSITY_DATA_V2, 2) |
|
#define NV_SCANOUT_INTENSITY_DATA_VER NV_SCANOUT_INTENSITY_DATA_VER2 |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_GPU_SetScanoutIntensity |
|
// |
|
//! DESCRIPTION: This API enables and sets up per-pixel intensity feature on the specified display. |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \param [in] displayId combined physical display and GPU identifier of the display to apply the intensity control. |
|
//! \param [in] scanoutIntensityData the intensity texture info. |
|
//! \param [out] pbSticky(OUT) indicates whether the settings will be kept over a reboot. |
|
//! |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Invalid input parameters. |
|
//! \retval ::NVAPI_API_NOT_INITIALIZED NvAPI not initialized. |
|
//! \retval ::NVAPI_NOT_SUPPORTED Interface not supported by the driver used, or only supported on selected GPUs |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Invalid input data. |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION NV_SCANOUT_INTENSITY_DATA structure version mismatch. |
|
//! \retval ::NVAPI_OK Feature enabled. |
|
//! \retval ::NVAPI_ERROR Miscellaneous error occurred. |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_SetScanoutIntensity(NvU32 displayId, NV_SCANOUT_INTENSITY_DATA* scanoutIntensityData, int *pbSticky); |
|
|
|
|
|
//! \ingroup gpu |
|
typedef struct _NV_SCANOUT_INTENSITY_STATE_DATA |
|
{ |
|
NvU32 version; //!< version of this structure |
|
NvU32 bEnabled; //!< intensity is enabled or not |
|
} NV_SCANOUT_INTENSITY_STATE_DATA; |
|
|
|
//! \ingroup gpu |
|
#define NV_SCANOUT_INTENSITY_STATE_VER MAKE_NVAPI_VERSION(NV_SCANOUT_INTENSITY_STATE_DATA, 1) |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_GPU_GetScanoutIntensityState |
|
// |
|
//! DESCRIPTION: This API queries current state of the intensity feature on the specified display. |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \param [in] displayId combined physical display and GPU identifier of the display to query the configuration. |
|
//! \param [in,out] scanoutIntensityStateData intensity state data. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Invalid input parameters. |
|
//! \retval ::NVAPI_API_NOT_INITIALIZED NvAPI not initialized. |
|
//! \retval ::NVAPI_NOT_SUPPORTED Interface not supported by the driver used, or only supported on selected GPUs. |
|
//! \retval ::NVAPI_OK Feature enabled. |
|
//! \retval ::NVAPI_ERROR Miscellaneous error occurred. |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetScanoutIntensityState(__in NvU32 displayId, __inout NV_SCANOUT_INTENSITY_STATE_DATA* scanoutIntensityStateData); |
|
|
|
|
|
//! \ingroup gpu |
|
typedef enum |
|
{ |
|
NV_GPU_WARPING_VERTICE_FORMAT_TRIANGLESTRIP_XYUVRQ = 0, |
|
NV_GPU_WARPING_VERTICE_FORMAT_TRIANGLES_XYUVRQ = 1, |
|
} NV_GPU_WARPING_VERTICE_FORMAT; |
|
|
|
//! \ingroup gpu |
|
typedef struct |
|
{ |
|
NvU32 version; //!< version of this structure |
|
float* vertices; //!< width of the input texture |
|
NV_GPU_WARPING_VERTICE_FORMAT vertexFormat; //!< format of the input vertices |
|
int numVertices; //!< number of the input vertices |
|
NvSBox* textureRect; //!< rectangle in desktop coordinates describing the source area for the warping |
|
} NV_SCANOUT_WARPING_DATA; |
|
|
|
//! \ingroup gpu |
|
#define NV_SCANOUT_WARPING_VER MAKE_NVAPI_VERSION(NV_SCANOUT_WARPING_DATA, 1) |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_GPU_SetScanoutWarping |
|
// |
|
//! DESCRIPTION: This API enables and sets up the warping feature on the specified display. |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \param [in] displayId Combined physical display and GPU identifier of the display to apply the intensity control |
|
//! \param [in] scanoutWarpingData The warping data info |
|
//! \param [out] pbSticky Indicates whether the settings will be kept over a reboot. |
|
//! |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Invalid input parameters. |
|
//! \retval ::NVAPI_API_NOT_INITIALIZED NvAPI not initialized. |
|
//! \retval ::NVAPI_NOT_SUPPORTED Interface not supported by the driver used, or only supported on selected GPUs |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Invalid input data. |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION NV_SCANOUT_WARPING_DATA structure version mismatch. |
|
//! \retval ::NVAPI_OK Feature enabled. |
|
//! \retval ::NVAPI_ERROR Miscellaneous error occurred. |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
NVAPI_INTERFACE NvAPI_GPU_SetScanoutWarping(NvU32 displayId, NV_SCANOUT_WARPING_DATA* scanoutWarpingData, int* piMaxNumVertices, int* pbSticky); |
|
|
|
|
|
//! \ingroup gpu |
|
typedef struct _NV_SCANOUT_WARPING_STATE_DATA |
|
{ |
|
NvU32 version; //!< version of this structure |
|
NvU32 bEnabled; //!< warping is enabled or not |
|
} NV_SCANOUT_WARPING_STATE_DATA; |
|
|
|
//! \ingroup gpu |
|
#define NV_SCANOUT_WARPING_STATE_VER MAKE_NVAPI_VERSION(NV_SCANOUT_WARPING_STATE_DATA, 1) |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_GPU_GetScanoutWarpingState |
|
// |
|
//! DESCRIPTION: This API queries current state of the warping feature on the specified display. |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \param [in] displayId combined physical display and GPU identifier of the display to query the configuration. |
|
//! \param [in,out] scanoutWarpingStateData warping state data. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Invalid input parameters. |
|
//! \retval ::NVAPI_API_NOT_INITIALIZED NvAPI not initialized. |
|
//! \retval ::NVAPI_NOT_SUPPORTED Interface not supported by the driver used, or only supported on selected GPUs. |
|
//! \retval ::NVAPI_OK Feature enabled. |
|
//! \retval ::NVAPI_ERROR Miscellaneous error occurred. |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetScanoutWarpingState(__in NvU32 displayId, __inout NV_SCANOUT_WARPING_STATE_DATA* scanoutWarpingStateData); |
|
|
|
typedef enum |
|
{ |
|
NV_GPU_SCANOUT_COMPOSITION_PARAMETER_WARPING_RESAMPLING_METHOD = 0 |
|
} NV_GPU_SCANOUT_COMPOSITION_PARAMETER; |
|
|
|
//! This enum defines a collection of possible scanout composition values that can be used to configure |
|
//! possible scanout composition settings. (Currently the only parameter defined is the WARPING_RESAMPLING_METHOD). |
|
typedef enum |
|
{ |
|
NV_GPU_SCANOUT_COMPOSITION_PARAMETER_SET_TO_DEFAULT = 0, // Set parameter to default value. |
|
// WARPING_RESAMPLING_METHOD section: |
|
NV_GPU_SCANOUT_COMPOSITION_PARAMETER_VALUE_WARPING_RESAMPLING_METHOD_BILINEAR = 0x100, |
|
NV_GPU_SCANOUT_COMPOSITION_PARAMETER_VALUE_WARPING_RESAMPLING_METHOD_BICUBIC_TRIANGULAR = 0x101, |
|
NV_GPU_SCANOUT_COMPOSITION_PARAMETER_VALUE_WARPING_RESAMPLING_METHOD_BICUBIC_BELL_SHAPED = 0x102, |
|
NV_GPU_SCANOUT_COMPOSITION_PARAMETER_VALUE_WARPING_RESAMPLING_METHOD_BICUBIC_BSPLINE = 0x103, |
|
NV_GPU_SCANOUT_COMPOSITION_PARAMETER_VALUE_WARPING_RESAMPLING_METHOD_BICUBIC_ADAPTIVE_TRIANGULAR = 0x104, |
|
NV_GPU_SCANOUT_COMPOSITION_PARAMETER_VALUE_WARPING_RESAMPLING_METHOD_BICUBIC_ADAPTIVE_BELL_SHAPED = 0x105, |
|
NV_GPU_SCANOUT_COMPOSITION_PARAMETER_VALUE_WARPING_RESAMPLING_METHOD_BICUBIC_ADAPTIVE_BSPLINE = 0x106 |
|
} NV_GPU_SCANOUT_COMPOSITION_PARAMETER_VALUE; |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_GPU_SetScanoutCompositionParameter |
|
// |
|
//! DESCRIPTION: This API sets various parameters that configure the scanout composition feature on the specified display. |
|
//! (currently there is only one configurable parameter defined: WARPING_RESAMPLING_METHOD, |
|
//! but this function is designed to support the addition of parameters as needed.) |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \param [in] displayId Combined physical display and GPU identifier of the display to apply the intensity control |
|
//! \param [in] parameter The scanout composition parameter to be set |
|
//! \param [in] parameterValue The data to be set for the specified parameter |
|
//! \param [in] pContainer Additional container for data associated with the specified parameter |
|
//! |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Invalid input parameters. |
|
//! \retval ::NVAPI_API_NOT_INITIALIZED NvAPI not initialized. |
|
//! \retval ::NVAPI_NOT_SUPPORTED Interface not supported by the driver used, or only supported on selected GPUs |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Invalid input data. |
|
//! \retval ::NVAPI_OK Feature enabled. |
|
//! \retval ::NVAPI_ERROR Miscellaneous error occurred. |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
NVAPI_INTERFACE NvAPI_GPU_SetScanoutCompositionParameter(NvU32 displayId, NV_GPU_SCANOUT_COMPOSITION_PARAMETER parameter, |
|
NV_GPU_SCANOUT_COMPOSITION_PARAMETER_VALUE parameterValue, float *pContainer); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_GPU_GetScanoutCompositionParameter |
|
// |
|
//! DESCRIPTION: This API queries current state of one of the various scanout composition parameters on the specified display. |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \param [in] displayId combined physical display and GPU identifier of the display to query the configuration. |
|
//! \param [in] parameter scanout composition parameter to by queried. |
|
//! \param [out] parameterData scanout composition parameter data. |
|
//! \param [out] pContainer Additional container for returning data associated with the specified parameter |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Invalid input parameters. |
|
//! \retval ::NVAPI_API_NOT_INITIALIZED NvAPI not initialized. |
|
//! \retval ::NVAPI_NOT_SUPPORTED Interface not supported by the driver used, or only supported on selected GPUs. |
|
//! \retval ::NVAPI_OK Feature enabled. |
|
//! \retval ::NVAPI_ERROR Miscellaneous error occurred. |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetScanoutCompositionParameter(__in NvU32 displayId, __in NV_GPU_SCANOUT_COMPOSITION_PARAMETER parameter, |
|
__out NV_GPU_SCANOUT_COMPOSITION_PARAMETER_VALUE *parameterData, __out float *pContainer); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_GPU_GetScanoutConfiguration |
|
// |
|
//! DESCRIPTION: This API queries the desktop and scanout portion of the specified display. |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \param [in] displayId combined physical display and GPU identifier of the display to query the configuration. |
|
//! \param [in,out] desktopRect desktop area of the display in desktop coordinates. |
|
//! \param [in,out] scanoutRect scanout area of the display relative to desktopRect. |
|
//! |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Invalid input parameters. |
|
//! \retval ::NVAPI_API_NOT_INITIALIZED NvAPI not initialized. |
|
//! \retval ::NVAPI_NOT_SUPPORTED Interface not supported by the driver used, or only supported on selected GPUs. |
|
//! \retval ::NVAPI_OK Feature enabled. |
|
//! \retval ::NVAPI_ERROR Miscellaneous error occurred. |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetScanoutConfiguration(NvU32 displayId, NvSBox* desktopRect, NvSBox* scanoutRect); |
|
|
|
|
|
|
|
//! \ingroup gpu |
|
//! Used in NvAPI_GPU_GetScanoutConfigurationEx(). |
|
typedef struct _NV_SCANOUT_INFORMATION |
|
{ |
|
NvU32 version; //!< Structure version, needs to be initialized with NV_SCANOUT_INFORMATION_VER. |
|
|
|
NvSBox sourceDesktopRect; //!< Operating system display device rect in desktop coordinates displayId is scanning out from. |
|
NvSBox sourceViewportRect; //!< Area inside the sourceDesktopRect which is scanned out to the display. |
|
NvSBox targetViewportRect; //!< Area inside the rect described by targetDisplayWidth/Height sourceViewportRect is scanned out to. |
|
NvU32 targetDisplayWidth; //!< Horizontal size of the active resolution scanned out to the display. |
|
NvU32 targetDisplayHeight; //!< Vertical size of the active resolution scanned out to the display. |
|
NvU32 cloneImportance; //!< If targets are cloned views of the sourceDesktopRect the cloned targets have an importance assigned (0:primary,1 secondary,...). |
|
NV_ROTATE sourceToTargetRotation; //!< Rotation performed between the sourceViewportRect and the targetViewportRect. |
|
} NV_SCANOUT_INFORMATION; |
|
|
|
#define NV_SCANOUT_INFORMATION_VER MAKE_NVAPI_VERSION(NV_SCANOUT_INFORMATION,1) |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_GPU_GetScanoutConfigurationEx |
|
// |
|
//! DESCRIPTION: This API queries the desktop and scanout portion of the specified display. |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! \since Release: 331 |
|
//! |
|
//! \param [in] displayId combined physical display and GPU identifier of the display to query the configuration. |
|
//! \param [in,out] pScanoutInformation desktop area to displayId mapping information. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetScanoutConfigurationEx(__in NvU32 displayId, __inout NV_SCANOUT_INFORMATION *pScanoutInformation); |
|
|
|
//! Used in NvAPI_GPU_GetPerfDecreaseInfo. |
|
//! Bit masks for knowing the exact reason for performance decrease |
|
typedef enum _NVAPI_GPU_PERF_DECREASE |
|
{ |
|
NV_GPU_PERF_DECREASE_NONE = 0, //!< No Slowdown detected |
|
NV_GPU_PERF_DECREASE_REASON_THERMAL_PROTECTION = 0x00000001, //!< Thermal slowdown/shutdown/POR thermal protection |
|
NV_GPU_PERF_DECREASE_REASON_POWER_CONTROL = 0x00000002, //!< Power capping / pstate cap |
|
NV_GPU_PERF_DECREASE_REASON_AC_BATT = 0x00000004, //!< AC->BATT event |
|
NV_GPU_PERF_DECREASE_REASON_API_TRIGGERED = 0x00000008, //!< API triggered slowdown |
|
NV_GPU_PERF_DECREASE_REASON_INSUFFICIENT_POWER = 0x00000010, //!< Power connector missing |
|
NV_GPU_PERF_DECREASE_REASON_UNKNOWN = 0x80000000, //!< Unknown reason |
|
} NVAPI_GPU_PERF_DECREASE; |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetPerfDecreaseInfo |
|
// |
|
//! DESCRIPTION: This function retrieves - in NvU32 variable - reasons for the current performance decrease. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! \param [in] hPhysicalGPU (IN) - GPU for which performance decrease is to be evaluated. |
|
//! \param [out] pPerfDecrInfo (OUT) - Pointer to a NvU32 variable containing performance decrease info |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! |
|
//! \ingroup gpu |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GPU_GetPerfDecreaseInfo(__in NvPhysicalGpuHandle hPhysicalGpu, __inout NvU32 *pPerfDecrInfo); |
|
|
|
//! \ingroup gpu |
|
typedef enum _NV_GPU_ILLUMINATION_ATTRIB |
|
{ |
|
NV_GPU_IA_LOGO_BRIGHTNESS = 0, |
|
NV_GPU_IA_SLI_BRIGHTNESS = 1, |
|
} NV_GPU_ILLUMINATION_ATTRIB; |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_QueryIlluminationSupport |
|
// |
|
//! \fn NvAPI_GPU_QueryIlluminationSupport(__inout NV_GPU_QUERY_ILLUMINATION_SUPPORT_PARM *pIlluminationSupportInfo) |
|
//! DESCRIPTION: This function reports if the specified illumination attribute is supported. |
|
//! |
|
//! \note Only a single GPU can manage an given attribute on a given HW element, |
|
//! regardless of how many are attatched. I.E. only one GPU will be used to control |
|
//! the brightness of the LED on an SLI bridge, regardless of how many are physicaly attached. |
|
//! You should enumerate thru the GPUs with this call to determine which GPU is managing the attribute. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! \since Version: 300.05 |
|
//! |
|
//! \param [in] hPhysicalGpu Physical GPU handle |
|
//! \param Attribute An enumeration value specifying the Illumination attribute to be querried |
|
//! \param [out] pSupported A boolean indicating if the attribute is supported. |
|
//! |
|
//! \return See \ref nvapistatus for the list of possible return values. |
|
// |
|
////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup gpu |
|
typedef struct _NV_GPU_QUERY_ILLUMINATION_SUPPORT_PARM_V1 { |
|
|
|
// IN |
|
NvU32 version; //!< Version of this structure |
|
NvPhysicalGpuHandle hPhysicalGpu; //!< The handle of the GPU that you are checking for the specified attribute. |
|
//!< note that this is the GPU that is managing the attribute. |
|
//!< Only a single GPU can manage an given attribute on a given HW element, |
|
//!< regardless of how many are attatched. |
|
//!< I.E. only one GPU will be used to control the brightness of the LED on an SLI bridge, |
|
//!< regardless of how many are physicaly attached. |
|
//!< You enumerate thru the GPUs with this call to determine which GPU is managing the attribute. |
|
NV_GPU_ILLUMINATION_ATTRIB Attribute; //!< An enumeration value specifying the Illumination attribute to be querried. |
|
//!< refer to enum \ref NV_GPU_ILLUMINATION_ATTRIB. |
|
|
|
// OUT |
|
NvU32 bSupported; //!< A boolean indicating if the attribute is supported. |
|
|
|
} NV_GPU_QUERY_ILLUMINATION_SUPPORT_PARM_V1; |
|
|
|
//! \ingroup gpu |
|
typedef NV_GPU_QUERY_ILLUMINATION_SUPPORT_PARM_V1 NV_GPU_QUERY_ILLUMINATION_SUPPORT_PARM; |
|
//! \ingroup gpu |
|
#define NV_GPU_QUERY_ILLUMINATION_SUPPORT_PARM_VER_1 MAKE_NVAPI_VERSION(NV_GPU_QUERY_ILLUMINATION_SUPPORT_PARM_V1,1) |
|
//! \ingroup gpu |
|
#define NV_GPU_QUERY_ILLUMINATION_SUPPORT_PARM_VER NV_GPU_QUERY_ILLUMINATION_SUPPORT_PARM_VER_1 |
|
|
|
//! \ingroup gpu |
|
NVAPI_INTERFACE NvAPI_GPU_QueryIlluminationSupport(__inout NV_GPU_QUERY_ILLUMINATION_SUPPORT_PARM *pIlluminationSupportInfo); |
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_GetIllumination |
|
// |
|
//! \fn NvAPI_GPU_GetIllumination(NV_GPU_GET_ILLUMINATION_PARM *pIlluminationInfo) |
|
//! DESCRIPTION: This function reports value of the specified illumination attribute. |
|
//! |
|
//! \note Only a single GPU can manage an given attribute on a given HW element, |
|
//! regardless of how many are attatched. I.E. only one GPU will be used to control |
|
//! the brightness of the LED on an SLI bridge, regardless of how many are physicaly attached. |
|
//! You should enumerate thru the GPUs with the \ref NvAPI_GPU_QueryIlluminationSupport call to |
|
//! determine which GPU is managing the attribute. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! \since Version: 300.05 |
|
//! |
|
//! \param [in] hPhysicalGpu Physical GPU handle |
|
//! \param Attribute An enumeration value specifying the Illumination attribute to be querried |
|
//! \param [out] Value A DWORD containing the current value for the specified attribute. |
|
//! This is specified as a percentage of the full range of the attribute |
|
//! (0-100; 0 = off, 100 = full brightness) |
|
//! |
|
//! \return See \ref nvapistatus for the list of possible return values. Return values of special interest are: |
|
//! NVAPI_INVALID_ARGUMENT The specified attibute is not known to the driver. |
|
//! NVAPI_NOT_SUPPORTED: The specified attribute is not supported on the specified GPU |
|
// |
|
////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup gpu |
|
typedef struct _NV_GPU_GET_ILLUMINATION_PARM_V1 { |
|
|
|
// IN |
|
NvU32 version; //!< Version of this structure |
|
NvPhysicalGpuHandle hPhysicalGpu; //!< The handle of the GPU that you are checking for the specified attribute. |
|
//!< Note that this is the GPU that is managing the attribute. |
|
//!< Only a single GPU can manage an given attribute on a given HW element, |
|
//!< regardless of how many are attatched. |
|
//!< I.E. only one GPU will be used to control the brightness of the LED on an SLI bridge, |
|
//!< regardless of how many are physicaly attached. |
|
//!< You enumerate thru the GPUs with this call to determine which GPU is managing the attribute. |
|
NV_GPU_ILLUMINATION_ATTRIB Attribute; //!< An enumeration value specifying the Illumination attribute to be querried. |
|
//!< refer to enum \ref NV_GPU_ILLUMINATION_ATTRIB. |
|
|
|
// OUT |
|
NvU32 Value; //!< A DWORD that will contain the current value of the specified attribute. |
|
//! This is specified as a percentage of the full range of the attribute |
|
//! (0-100; 0 = off, 100 = full brightness) |
|
|
|
} NV_GPU_GET_ILLUMINATION_PARM_V1; |
|
|
|
//! \ingroup gpu |
|
typedef NV_GPU_GET_ILLUMINATION_PARM_V1 NV_GPU_GET_ILLUMINATION_PARM; |
|
//! \ingroup gpu |
|
#define NV_GPU_GET_ILLUMINATION_PARM_VER_1 MAKE_NVAPI_VERSION(NV_GPU_GET_ILLUMINATION_PARM_V1,1) |
|
//! \ingroup gpu |
|
#define NV_GPU_GET_ILLUMINATION_PARM_VER NV_GPU_GET_ILLUMINATION_PARM_VER_1 |
|
|
|
//! \ingroup gpu |
|
NVAPI_INTERFACE NvAPI_GPU_GetIllumination(NV_GPU_GET_ILLUMINATION_PARM *pIlluminationInfo); |
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GPU_SetIllumination |
|
// |
|
//! \fn NvAPI_GPU_SetIllumination(NV_GPU_SET_ILLUMINATION_PARM *pIlluminationInfo) |
|
//! DESCRIPTION: This function sets the value of the specified illumination attribute. |
|
//! |
|
//! \note Only a single GPU can manage an given attribute on a given HW element, |
|
//! regardless of how many are attatched. I.E. only one GPU will be used to control |
|
//! the brightness of the LED on an SLI bridge, regardless of how many are physicaly attached. |
|
//! You should enumerate thru the GPUs with the \ref NvAPI_GPU_QueryIlluminationSupport call to |
|
//! determine which GPU is managing the attribute. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! \since Version: 300.05 |
|
//! |
|
//! \param [in] hPhysicalGpu Physical GPU handle |
|
//! \param Attribute An enumeration value specifying the Illumination attribute to be set |
|
//! \param Value The new value for the specified attribute. |
|
//! This should be specified as a percentage of the full range of the attribute |
|
//! (0-100; 0 = off, 100 = full brightness) |
|
//! If a value is specified outside this range, NVAPI_INVALID_ARGUMENT will be returned. |
|
//! |
|
//! \return See \ref nvapistatus for the list of possible return values. Return values of special interest are: |
|
//! NVAPI_INVALID_ARGUMENT The specified attibute is not known to the driver, or the specified value is out of range. |
|
//! NVAPI_NOT_SUPPORTED The specified attribute is not supported on the specified GPU. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup gpu |
|
typedef struct _NV_GPU_SET_ILLUMINATION_PARM_V1 { |
|
|
|
// IN |
|
NvU32 version; //!< Version of this structure |
|
NvPhysicalGpuHandle hPhysicalGpu; //!< The handle of the GPU that you are checking for the specified attribute. |
|
//!< Note that this is the GPU that is managing the attribute. |
|
//!< Only a single GPU can manage an given attribute on a given HW element, |
|
//!< regardless of how many are attatched. |
|
//!< I.E. only one GPU will be used to control the brightness of the LED on an SLI bridge, |
|
//!< regardless of how many are physicaly attached. |
|
//!< You enumerate thru the GPUs with this call to determine which GPU is managing the attribute. |
|
NV_GPU_ILLUMINATION_ATTRIB Attribute; //!< An enumeration value specifying the Illumination attribute to be querried. |
|
//!< refer to enum \ref NV_GPU_ILLUMINATION_ATTRIB. |
|
NvU32 Value; //!< A DWORD containing the new value for the specified attribute. |
|
//!< This should be specified as a percentage of the full range of the attribute |
|
//!< (0-100; 0 = off, 100 = full brightness) |
|
//!< If a value is specified outside this range, NVAPI_INVALID_ARGUMENT will be returned. |
|
|
|
// OUT |
|
|
|
} NV_GPU_SET_ILLUMINATION_PARM_V1; |
|
|
|
//! \ingroup gpu |
|
typedef NV_GPU_SET_ILLUMINATION_PARM_V1 NV_GPU_SET_ILLUMINATION_PARM; |
|
//! \ingroup gpu |
|
#define NV_GPU_SET_ILLUMINATION_PARM_VER_1 MAKE_NVAPI_VERSION(NV_GPU_SET_ILLUMINATION_PARM_V1,1) |
|
//! \ingroup gpu |
|
#define NV_GPU_SET_ILLUMINATION_PARM_VER NV_GPU_SET_ILLUMINATION_PARM_VER_1 |
|
|
|
//! \ingroup gpu |
|
NVAPI_INTERFACE NvAPI_GPU_SetIllumination(NV_GPU_SET_ILLUMINATION_PARM *pIlluminationInfo); |
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_EnumNvidiaDisplayHandle |
|
// |
|
//! This function returns the handle of the NVIDIA display specified by the enum |
|
//! index (thisEnum). The client should keep enumerating until it |
|
//! returns NVAPI_END_ENUMERATION. |
|
//! |
|
//! Note: Display handles can get invalidated on a modeset, so the calling applications need to |
|
//! renum the handles after every modeset. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \param [in] thisEnum The index of the NVIDIA display. |
|
//! \param [out] pNvDispHandle Pointer to the NVIDIA display handle. |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT Either the handle pointer is NULL or enum index too big |
|
//! \retval NVAPI_OK Return a valid NvDisplayHandle based on the enum index |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA device found in the system |
|
//! \retval NVAPI_END_ENUMERATION No more display device to enumerate |
|
//! \ingroup disphandle |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_EnumNvidiaDisplayHandle(NvU32 thisEnum, NvDisplayHandle *pNvDispHandle); |
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_EnumNvidiaUnAttachedDisplayHandle |
|
// |
|
//! This function returns the handle of the NVIDIA unattached display specified by the enum |
|
//! index (thisEnum). The client should keep enumerating until it |
|
//! returns error. |
|
//! Note: Display handles can get invalidated on a modeset, so the calling applications need to |
|
//! renum the handles after every modeset. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \param [in] thisEnum The index of the NVIDIA display. |
|
//! \param [out] pNvUnAttachedDispHandle Pointer to the NVIDIA display handle of the unattached display. |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT Either the handle pointer is NULL or enum index too big |
|
//! \retval NVAPI_OK Return a valid NvDisplayHandle based on the enum index |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA device found in the system |
|
//! \retval NVAPI_END_ENUMERATION No more display device to enumerate. |
|
//! \ingroup disphandle |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_EnumNvidiaUnAttachedDisplayHandle(NvU32 thisEnum, NvUnAttachedDisplayHandle *pNvUnAttachedDispHandle); |
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_CreateDisplayFromUnAttachedDisplay |
|
// |
|
//! This function converts the unattached display handle to an active attached display handle. |
|
//! |
|
//! At least one GPU must be present in the system and running an NVIDIA display driver. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hNvUnAttachedDisp is not valid or pNvDisplay is NULL. |
|
//! \retval NVAPI_OK One or more handles were returned |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_CreateDisplayFromUnAttachedDisplay(NvUnAttachedDisplayHandle hNvUnAttachedDisp, NvDisplayHandle *pNvDisplay); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetAssociatedNVidiaDisplayHandle |
|
// |
|
//! This function returns the handle of the NVIDIA display that is associated |
|
//! with the given display "name" (such as "\\.\DISPLAY1"). |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT Either argument is NULL |
|
//! \retval NVAPI_OK *pNvDispHandle is now valid |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA device maps to that display name |
|
//! \ingroup disphandle |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GetAssociatedNvidiaDisplayHandle(const char *szDisplayName, NvDisplayHandle *pNvDispHandle); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DISP_GetAssociatedUnAttachedNvidiaDisplayHandle |
|
// |
|
//! DESCRIPTION: This function returns the handle of an unattached NVIDIA display that is |
|
//! associated with the given display name (such as "\\DISPLAY1"). |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 185 |
|
//! |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Either argument is NULL. |
|
//! \retval ::NVAPI_OK *pNvUnAttachedDispHandle is now valid. |
|
//! \retval ::NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA device maps to that display name. |
|
//! |
|
//! \ingroup disphandle |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DISP_GetAssociatedUnAttachedNvidiaDisplayHandle(const char *szDisplayName, NvUnAttachedDisplayHandle *pNvUnAttachedDispHandle); |
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetAssociatedNVidiaDisplayName |
|
// |
|
//! For a given NVIDIA display handle, this function returns a string (such as "\\.\DISPLAY1") to identify the display. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT Either argument is NULL |
|
//! \retval NVAPI_OK *pNvDispHandle is now valid |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA device maps to that display name |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GetAssociatedNvidiaDisplayName(NvDisplayHandle NvDispHandle, NvAPI_ShortString szDisplayName); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetUnAttachedAssociatedDisplayName |
|
// |
|
//! This function returns the display name given, for example, "\\DISPLAY1", using the unattached NVIDIA display handle |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 95 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT Either argument is NULL |
|
//! \retval NVAPI_OK *pNvDispHandle is now valid |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA device maps to that display name |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GetUnAttachedAssociatedDisplayName(NvUnAttachedDisplayHandle hNvUnAttachedDisp, NvAPI_ShortString szDisplayName); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_EnableHWCursor |
|
// |
|
//! This function enables hardware cursor support |
|
//! |
|
//! SUPPORTED OS: Windows XP |
|
//! |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \return NVAPI_ERROR or NVAPI_OK |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_EnableHWCursor(NvDisplayHandle hNvDisplay); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DisableHWCursor |
|
// |
|
//! This function disables hardware cursor support |
|
//! |
|
//! SUPPORTED OS: Windows XP |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \return NVAPI_ERROR or NVAPI_OK |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DisableHWCursor(NvDisplayHandle hNvDisplay); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetVBlankCounter |
|
// |
|
//! This function gets the V-blank counter |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \return NVAPI_ERROR or NVAPI_OK |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GetVBlankCounter(NvDisplayHandle hNvDisplay, NvU32 *pCounter); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_SetRefreshRateOverride |
|
// |
|
//! This function overrides the refresh rate on the given display/outputsMask. |
|
//! The new refresh rate can be applied right away in this API call or deferred to be applied with the |
|
//! next OS modeset. The override is good for only one modeset (regardless whether it's deferred or immediate). |
|
//! |
|
//! |
|
//! SUPPORTED OS: Windows XP |
|
//! |
|
//! |
|
//! \since Release: 80 |
|
//! |
|
//! \param [in] hNvDisplay The NVIDIA display handle. It can be NVAPI_DEFAULT_HANDLE or a handle |
|
//! enumerated from NvAPI_EnumNVidiaDisplayHandle(). |
|
//! \param [in] outputsMask A set of bits that identify all target outputs which are associated with the NVIDIA |
|
//! display handle to apply the refresh rate override. When SLI is enabled, the |
|
//! outputsMask only applies to the GPU that is driving the display output. |
|
//! \param [in] refreshRate The override value. "0.0" means cancel the override. |
|
//! \param [in] bSetDeferred |
|
//! - "0": Apply the refresh rate override immediately in this API call.\p |
|
//! - "1": Apply refresh rate at the next OS modeset. |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT hNvDisplay or outputsMask is invalid |
|
//! \retval NVAPI_OK The refresh rate override is correct set |
|
//! \retval NVAPI_ERROR The operation failed |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_SetRefreshRateOverride(NvDisplayHandle hNvDisplay, NvU32 outputsMask, float refreshRate, NvU32 bSetDeferred); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetAssociatedDisplayOutputId |
|
// |
|
//! This function gets the active outputId associated with the display handle. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 90 |
|
//! |
|
//! \param [in] hNvDisplay NVIDIA Display selection. It can be NVAPI_DEFAULT_HANDLE or a handle enumerated from NvAPI_EnumNVidiaDisplayHandle(). |
|
//! \param [out] outputId The active display output ID associated with the selected display handle hNvDisplay. |
|
//! The outputid will have only one bit set. In the case of Clone or Span mode, this will indicate the |
|
//! display outputId of the primary display that the GPU is driving. See \ref handles. |
|
//! |
|
//! \retval NVAPI_OK Call successful. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found. |
|
//! \retval NVAPI_EXPECTED_DISPLAY_HANDLE hNvDisplay is not a valid display handle. |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GetAssociatedDisplayOutputId(NvDisplayHandle hNvDisplay, NvU32 *pOutputId); |
|
|
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NvAPI_GetDisplayPortInfo(). |
|
typedef struct _NV_DISPLAY_PORT_INFO_V1 |
|
{ |
|
NvU32 version; //!< Structure version |
|
NvU32 dpcd_ver; //!< DPCD version of the monitor |
|
NV_DP_LINK_RATE maxLinkRate; //!< Maximum supported link rate |
|
NV_DP_LANE_COUNT maxLaneCount; //!< Maximum supported lane count |
|
NV_DP_LINK_RATE curLinkRate; //!< Current link rate |
|
NV_DP_LANE_COUNT curLaneCount; //!< Current lane count |
|
NV_DP_COLOR_FORMAT colorFormat; //!< Current color format |
|
NV_DP_DYNAMIC_RANGE dynamicRange; //!< Dynamic range |
|
NV_DP_COLORIMETRY colorimetry; //!< Ignored in RGB space |
|
NV_DP_BPC bpc; //!< Current bit-per-component |
|
NvU32 isDp : 1; //!< If the monitor is driven by a DisplayPort |
|
NvU32 isInternalDp : 1; //!< If the monitor is driven by an NV Dp transmitter |
|
NvU32 isColorCtrlSupported : 1; //!< If the color format change is supported |
|
NvU32 is6BPCSupported : 1; //!< If 6 bpc is supported |
|
NvU32 is8BPCSupported : 1; //!< If 8 bpc is supported |
|
NvU32 is10BPCSupported : 1; //!< If 10 bpc is supported |
|
NvU32 is12BPCSupported : 1; //!< If 12 bpc is supported |
|
NvU32 is16BPCSupported : 1; //!< If 16 bpc is supported |
|
NvU32 isYCrCb422Supported : 1; //!< If YCrCb422 is supported |
|
NvU32 isYCrCb444Supported : 1; //!< If YCrCb444 is supported |
|
NvU32 isRgb444SupportedOnCurrentMode : 1; //!< If Rgb444 is supported on the current mode |
|
NvU32 isYCbCr444SupportedOnCurrentMode : 1; //!< If YCbCr444 is supported on the current mode |
|
NvU32 isYCbCr422SupportedOnCurrentMode : 1; //!< If YCbCr422 is support on the current mode |
|
NvU32 is6BPCSupportedOnCurrentMode : 1; // if 6 bpc is supported On Current Mode |
|
NvU32 is8BPCSupportedOnCurrentMode : 1; // if 8 bpc is supported On Current Mode |
|
NvU32 is10BPCSupportedOnCurrentMode : 1; // if 10 bpc is supported On Current Mode |
|
NvU32 is12BPCSupportedOnCurrentMode : 1; // if 12 bpc is supported On Current Mode |
|
NvU32 is16BPCSupportedOnCurrentMode : 1; // if 16 bpc is supported On Current Mode |
|
NvU32 isMonxvYCC601Capable : 1; // if xvYCC 601 extended colorimetry is supported |
|
NvU32 isMonxvYCC709Capable : 1; // if xvYCC 709 extended colorimetry is supported |
|
NvU32 isMonsYCC601Capable : 1; // if sYCC601 extended colorimetry is supported |
|
NvU32 isMonAdobeYCC601Capable : 1; // if AdobeYCC601 extended colorimetry is supported |
|
NvU32 isMonAdobeRGBCapable : 1; // if AdobeRGB extended colorimetry is supported |
|
NvU32 isMonBT2020RGBCapable : 1; // if BT2020 RGB extended colorimetry is supported |
|
NvU32 isMonBT2020YCCCapable : 1; // if BT2020 Y'CbCr extended colorimetry is supported |
|
NvU32 isMonBT2020cYCCCapable : 1; // if BT2020 cYCbCr (constant luminance) extended colorimetry is supported |
|
|
|
NvU32 reserved : 6; //!< reserved |
|
} NV_DISPLAY_PORT_INFO_V1; |
|
|
|
typedef NV_DISPLAY_PORT_INFO_V1 NV_DISPLAY_PORT_INFO; |
|
|
|
//! Macro for constructing the version field of NV_DISPLAY_PORT_INFO. |
|
#define NV_DISPLAY_PORT_INFO_VER1 MAKE_NVAPI_VERSION(NV_DISPLAY_PORT_INFO,1) |
|
#define NV_DISPLAY_PORT_INFO_VER2 MAKE_NVAPI_VERSION(NV_DISPLAY_PORT_INFO,2) |
|
#define NV_DISPLAY_PORT_INFO_VER NV_DISPLAY_PORT_INFO_VER2 |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_GetDisplayPortInfo |
|
// |
|
//! \fn NvAPI_GetDisplayPortInfo(__in_opt NvDisplayHandle hNvDisplay, __in NvU32 outputId, __inout NV_DISPLAY_PORT_INFO *pInfo) |
|
//! DESCRIPTION: This function returns the current DisplayPort-related information on the specified device (monitor). |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 165 |
|
//! |
|
//! \param [in] hvDisplay NVIDIA Display selection. It can be NVAPI_DEFAULT_HANDLE or a handle enumerated from NvAPI_EnumNVidiaDisplayHandle(). |
|
//! This parameter is ignored when the outputId is a NvAPI displayId. |
|
//! \param [in] outputId This can either be the connection bit mask or the NvAPI displayId. When the legacy connection bit mask is passed, |
|
//! it should have exactly 1 bit set to indicate a single display. If it's "0" then the default outputId from |
|
//! NvAPI_GetAssociatedDisplayOutputId() will be used. See \ref handles. |
|
//! \param [out] pInfo The DisplayPort information |
|
//! |
|
//! \retval NVAPI_OK Completed request |
|
//! \retval NVAPI_ERROR Miscellaneous error occurred |
|
//! \retval NVAPI_INVALID_ARGUMENT Invalid input parameter. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! \ingroup dispcontrol |
|
NVAPI_INTERFACE NvAPI_GetDisplayPortInfo(__in_opt NvDisplayHandle hNvDisplay, __in NvU32 outputId, __inout NV_DISPLAY_PORT_INFO *pInfo); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_SetDisplayPort |
|
// |
|
//! \fn NvAPI_SetDisplayPort(NvDisplayHandle hNvDisplay, NvU32 outputId, NV_DISPLAY_PORT_CONFIG *pCfg) |
|
//! DESCRIPTION: This function sets up DisplayPort-related configurations. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 165 |
|
//! |
|
//! \param [in] hNvDisplay NVIDIA display handle. It can be NVAPI_DEFAULT_HANDLE or a handle enumerated from |
|
//! NvAPI_EnumNVidiaDisplayHandle(). |
|
//! \param [in] outputId This display output ID, when it's "0" it means the default outputId generated from the return of |
|
//! NvAPI_GetAssociatedDisplayOutputId(). See \ref handles. |
|
//! \param [in] pCfg The display port config structure. If pCfg is NULL, it means to use the driver's default value to setup. |
|
//! |
|
//! \retval NVAPI_OK Completed request |
|
//! \retval NVAPI_ERROR Miscellaneous error occurred |
|
//! \retval NVAPI_INVALID_ARGUMENT Invalid input parameter |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
|
|
//! \ingroup dispcontrol |
|
//! DisplayPort configuration settings - used in NvAPI_SetDisplayPort(). |
|
typedef struct |
|
{ |
|
NvU32 version; //!< Structure version - 2 is the latest |
|
NV_DP_LINK_RATE linkRate; //!< Link rate |
|
NV_DP_LANE_COUNT laneCount; //!< Lane count |
|
NV_DP_COLOR_FORMAT colorFormat; //!< Color format to set |
|
NV_DP_DYNAMIC_RANGE dynamicRange; //!< Dynamic range |
|
NV_DP_COLORIMETRY colorimetry; //!< Ignored in RGB space |
|
NV_DP_BPC bpc; //!< Bit-per-component |
|
NvU32 isHPD : 1; //!< If the control panel is making this call due to HPD |
|
NvU32 isSetDeferred : 1; //!< Requires an OS modeset to finalize the setup if set |
|
NvU32 isChromaLpfOff : 1; //!< Force the chroma low_pass_filter to be off |
|
NvU32 isDitherOff : 1; //!< Force to turn off dither |
|
NvU32 testLinkTrain : 1; //!< If testing mode, skip validation |
|
NvU32 testColorChange : 1; //!< If testing mode, skip validation |
|
|
|
} NV_DISPLAY_PORT_CONFIG; |
|
|
|
//! \addtogroup dispcontrol |
|
//! @{ |
|
//! Macro for constructing the version field of NV_DISPLAY_PORT_CONFIG |
|
#define NV_DISPLAY_PORT_CONFIG_VER MAKE_NVAPI_VERSION(NV_DISPLAY_PORT_CONFIG,2) |
|
//! Macro for constructing the version field of NV_DISPLAY_PORT_CONFIG |
|
#define NV_DISPLAY_PORT_CONFIG_VER_1 MAKE_NVAPI_VERSION(NV_DISPLAY_PORT_CONFIG,1) |
|
//! Macro for constructing the version field of NV_DISPLAY_PORT_CONFIG |
|
#define NV_DISPLAY_PORT_CONFIG_VER_2 MAKE_NVAPI_VERSION(NV_DISPLAY_PORT_CONFIG,2) |
|
//! @} |
|
|
|
|
|
//! \ingroup dispcontrol |
|
NVAPI_INTERFACE NvAPI_SetDisplayPort(NvDisplayHandle hNvDisplay, NvU32 outputId, NV_DISPLAY_PORT_CONFIG *pCfg); |
|
|
|
|
|
|
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NvAPI_GetHDMISupportInfo(). |
|
typedef struct _NV_HDMI_SUPPORT_INFO_V1 |
|
{ |
|
NvU32 version; //!< Structure version |
|
|
|
NvU32 isGpuHDMICapable : 1; //!< If the GPU can handle HDMI |
|
NvU32 isMonUnderscanCapable : 1; //!< If the monitor supports underscan |
|
NvU32 isMonBasicAudioCapable : 1; //!< If the monitor supports basic audio |
|
NvU32 isMonYCbCr444Capable : 1; //!< If YCbCr 4:4:4 is supported |
|
NvU32 isMonYCbCr422Capable : 1; //!< If YCbCr 4:2:2 is supported |
|
NvU32 isMonxvYCC601Capable : 1; //!< If xvYCC 601 is supported |
|
NvU32 isMonxvYCC709Capable : 1; //!< If xvYCC 709 is supported |
|
NvU32 isMonHDMI : 1; //!< If the monitor is HDMI (with IEEE's HDMI registry ID) |
|
NvU32 reserved : 24; //!< Reserved. |
|
|
|
NvU32 EDID861ExtRev; //!< Revision number of the EDID 861 extension |
|
} NV_HDMI_SUPPORT_INFO_V1; |
|
|
|
typedef struct _NV_HDMI_SUPPORT_INFO_V2 |
|
{ |
|
NvU32 version; //!< Structure version |
|
|
|
NvU32 isGpuHDMICapable : 1; //!< If the GPU can handle HDMI |
|
NvU32 isMonUnderscanCapable : 1; //!< If the monitor supports underscan |
|
NvU32 isMonBasicAudioCapable : 1; //!< If the monitor supports basic audio |
|
NvU32 isMonYCbCr444Capable : 1; //!< If YCbCr 4:4:4 is supported |
|
NvU32 isMonYCbCr422Capable : 1; //!< If YCbCr 4:2:2 is supported |
|
NvU32 isMonxvYCC601Capable : 1; //!< If xvYCC extended colorimetry 601 is supported |
|
NvU32 isMonxvYCC709Capable : 1; //!< If xvYCC extended colorimetry 709 is supported |
|
NvU32 isMonHDMI : 1; //!< If the monitor is HDMI (with IEEE's HDMI registry ID) |
|
NvU32 isMonsYCC601Capable : 1; //!< if sYCC601 extended colorimetry is supported |
|
NvU32 isMonAdobeYCC601Capable : 1; //!< if AdobeYCC601 extended colorimetry is supported |
|
NvU32 isMonAdobeRGBCapable : 1; //!< if AdobeRGB extended colorimetry is supported |
|
NvU32 reserved : 21; //!< Reserved. |
|
|
|
NvU32 EDID861ExtRev; //!< Revision number of the EDID 861 extension |
|
} NV_HDMI_SUPPORT_INFO_V2; |
|
|
|
#define NV_HDMI_SUPPORT_INFO_VER1 MAKE_NVAPI_VERSION(NV_HDMI_SUPPORT_INFO_V1, 1) |
|
#define NV_HDMI_SUPPORT_INFO_VER2 MAKE_NVAPI_VERSION(NV_HDMI_SUPPORT_INFO_V2, 2) |
|
|
|
|
|
|
|
#ifndef NV_HDMI_SUPPORT_INFO_VER |
|
|
|
typedef NV_HDMI_SUPPORT_INFO_V2 NV_HDMI_SUPPORT_INFO; |
|
#define NV_HDMI_SUPPORT_INFO_VER NV_HDMI_SUPPORT_INFO_VER2 |
|
|
|
#endif |
|
|
|
|
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_GetHDMISupportInfo |
|
// |
|
//! \fn NvAPI_GetHDMISupportInfo(__in_opt NvDisplayHandle hNvDisplay, __in NvU32 outputId, __inout NV_HDMI_SUPPORT_INFO *pInfo) |
|
//! This API returns the current infoframe data on the specified device(monitor). |
|
//! |
|
//! \since Release: 95 |
|
//! |
|
//! \param [in] hvDisplay NVIDIA Display selection. It can be NVAPI_DEFAULT_HANDLE or a handle enumerated from NvAPI_EnumNVidiaDisplayHandle(). |
|
//! This parameter is ignored when the outputId is a NvAPI displayId. |
|
//! \param [in] outputId This can either be the connection bit mask or the NvAPI displayId. When the legacy connection bit mask is passed, |
|
//! it should have exactly 1 bit set to indicate a single display. If it's "0" then the default outputId from |
|
//! NvAPI_GetAssociatedDisplayOutputId() will be used. See \ref handles. |
|
//! \param [out] pInfo The monitor and GPU's HDMI support info |
|
//! |
|
//! \retval NVAPI_OK Completed request |
|
//! \retval NVAPI_ERROR Miscellaneous error occurred |
|
//! \retval NVAPI_INVALID_ARGUMENT Invalid input parameter. |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
|
|
//! \ingroup dispcontrol |
|
NVAPI_INTERFACE NvAPI_GetHDMISupportInfo(__in_opt NvDisplayHandle hNvDisplay, __in NvU32 outputId, __inout NV_HDMI_SUPPORT_INFO *pInfo); |
|
|
|
|
|
//! \ingroup dispcontrol |
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_CMD_GET_DEFAULT = 0, //!< Returns the fields in the infoframe with values set by the manufacturer - NVIDIA/OEM. |
|
NV_INFOFRAME_CMD_RESET, //!< Sets the fields in the infoframe to auto, and infoframe to the default infoframe for use in a set. |
|
NV_INFOFRAME_CMD_GET, //!< Get the current infoframe state. |
|
NV_INFOFRAME_CMD_SET, //!< Set the current infoframe state (flushed to the monitor), the values are one time and do not persist. |
|
NV_INFOFRAME_CMD_GET_OVERRIDE, //!< Get the override infoframe state, non-override fields will be set to value = AUTO, overridden fields will have the current override values. |
|
NV_INFOFRAME_CMD_SET_OVERRIDE, //!< Set the override infoframe state, non-override fields will be set to value = AUTO, other values indicate override; persist across modeset/reboot |
|
NV_INFOFRAME_CMD_GET_PROPERTY, //!< get properties associated with infoframe (each of the infoframe type will have properties) |
|
NV_INFOFRAME_CMD_SET_PROPERTY, //!< set properties associated with infoframe |
|
} NV_INFOFRAME_CMD; |
|
|
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_PROPERTY_MODE_AUTO = 0, //!< Driver determines whether to send infoframes. |
|
NV_INFOFRAME_PROPERTY_MODE_ENABLE, //!< Driver always sends infoframe. |
|
NV_INFOFRAME_PROPERTY_MODE_DISABLE, //!< Driver never sends infoframe. |
|
NV_INFOFRAME_PROPERTY_MODE_ALLOW_OVERRIDE, //!< Driver only sends infoframe when client requests it via infoframe escape call. |
|
} NV_INFOFRAME_PROPERTY_MODE; |
|
|
|
|
|
//! Returns whether the current monitor is in blacklist or force this monitor to be in blacklist. |
|
typedef enum |
|
{ |
|
NV_INFOFRAME_PROPERTY_BLACKLIST_FALSE = 0, |
|
NV_INFOFRAME_PROPERTY_BLACKLIST_TRUE, |
|
} NV_INFOFRAME_PROPERTY_BLACKLIST; |
|
|
|
typedef struct |
|
{ |
|
NvU32 mode : 4; |
|
NvU32 blackList : 2; |
|
NvU32 reserved : 10; |
|
NvU32 version : 8; |
|
NvU32 length : 8; |
|
} NV_INFOFRAME_PROPERTY; |
|
|
|
//! Byte1 related |
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AVI_SCANINFO_NODATA = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_SCANINFO_OVERSCAN, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_SCANINFO_UNDERSCAN, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_SCANINFO_FUTURE, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_SCANINFO_AUTO = 7 |
|
} NV_INFOFRAME_FIELD_VALUE_AVI_SCANINFO; |
|
|
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AVI_BARDATA_NOT_PRESENT = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_BARDATA_VERTICAL_PRESENT, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_BARDATA_HORIZONTAL_PRESENT, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_BARDATA_BOTH_PRESENT, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_BARDATA_AUTO = 7 |
|
} NV_INFOFRAME_FIELD_VALUE_AVI_BARDATA; |
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AVI_AFI_ABSENT = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_AFI_PRESENT, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_AFI_AUTO = 3 |
|
} NV_INFOFRAME_FIELD_VALUE_AVI_ACTIVEFORMATINFO; |
|
|
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AVI_COLORFORMAT_RGB = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_COLORFORMAT_YCbCr422, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_COLORFORMAT_YCbCr444, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_COLORFORMAT_FUTURE, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_COLORFORMAT_AUTO = 7 |
|
} NV_INFOFRAME_FIELD_VALUE_AVI_COLORFORMAT; |
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AVI_F17_FALSE = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_F17_TRUE, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_F17_AUTO = 3 |
|
} NV_INFOFRAME_FIELD_VALUE_AVI_F17; |
|
|
|
//! Byte2 related |
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_NO_AFD = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_RESERVE01, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_RESERVE02, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_RESERVE03, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_LETTERBOX_GT16x9, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_RESERVE05, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_RESERVE06, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_RESERVE07, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_EQUAL_CODEDFRAME = 8, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_CENTER_4x3, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_CENTER_16x9, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_CENTER_14x9, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_RESERVE12, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_4x3_ON_14x9, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_16x9_ON_14x9, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_16x9_ON_4x3, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION_AUTO = 31, |
|
} NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOACTIVEPORTION; |
|
|
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOCODEDFRAME_NO_DATA = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOCODEDFRAME_4x3, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOCODEDFRAME_16x9, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOCODEDFRAME_FUTURE, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOCODEDFRAME_AUTO = 7 |
|
} NV_INFOFRAME_FIELD_VALUE_AVI_ASPECTRATIOCODEDFRAME; |
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AVI_COLORIMETRY_NO_DATA = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_COLORIMETRY_SMPTE_170M, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_COLORIMETRY_ITUR_BT709, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_COLORIMETRY_USE_EXTENDED_COLORIMETRY, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_COLORIMETRY_AUTO = 7 |
|
} NV_INFOFRAME_FIELD_VALUE_AVI_COLORIMETRY; |
|
|
|
//! Byte 3 related |
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AVI_NONUNIFORMPICTURESCALING_NO_DATA = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_NONUNIFORMPICTURESCALING_HORIZONTAL, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_NONUNIFORMPICTURESCALING_VERTICAL, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_NONUNIFORMPICTURESCALING_BOTH, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_NONUNIFORMPICTURESCALING_AUTO = 7 |
|
} NV_INFOFRAME_FIELD_VALUE_AVI_NONUNIFORMPICTURESCALING; |
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AVI_RGBQUANTIZATION_DEFAULT = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_RGBQUANTIZATION_LIMITED_RANGE, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_RGBQUANTIZATION_FULL_RANGE, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_RGBQUANTIZATION_RESERVED, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_RGBQUANTIZATION_AUTO = 7 |
|
} NV_INFOFRAME_FIELD_VALUE_AVI_RGBQUANTIZATION; |
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AVI_EXTENDEDCOLORIMETRY_XVYCC601 = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_EXTENDEDCOLORIMETRY_XVYCC709, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_EXTENDEDCOLORIMETRY_SYCC601, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_EXTENDEDCOLORIMETRY_ADOBEYCC601, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_EXTENDEDCOLORIMETRY_ADOBERGB, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_EXTENDEDCOLORIMETRY_RESERVED05, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_EXTENDEDCOLORIMETRY_RESERVED06, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_EXTENDEDCOLORIMETRY_RESERVED07, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_EXTENDEDCOLORIMETRY_AUTO = 15 |
|
} NV_INFOFRAME_FIELD_VALUE_AVI_EXTENDEDCOLORIMETRY; |
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ITC_VIDEO_CONTENT = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ITC_ITCONTENT, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_ITC_AUTO = 3 |
|
} NV_INFOFRAME_FIELD_VALUE_AVI_ITC; |
|
|
|
//! Byte 4 related |
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_NONE = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_X02, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_X03, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_X04, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_X05, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_X06, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_X07, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_X08, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_X09, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_X10, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_RESERVED10, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_RESERVED11, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_RESERVED12, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_RESERVED13, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_RESERVED14, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_RESERVED15, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION_AUTO = 31 |
|
} NV_INFOFRAME_FIELD_VALUE_AVI_PIXELREPETITION; |
|
|
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AVI_CONTENTTYPE_GRAPHICS = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_CONTENTTYPE_PHOTO, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_CONTENTTYPE_CINEMA, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_CONTENTTYPE_GAME, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_CONTENTTYPE_AUTO = 7 |
|
} NV_INFOFRAME_FIELD_VALUE_AVI_CONTENTTYPE; |
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AVI_YCCQUANTIZATION_LIMITED_RANGE = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_YCCQUANTIZATION_FULL_RANGE, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_YCCQUANTIZATION_RESERVED02, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_YCCQUANTIZATION_RESERVED03, |
|
NV_INFOFRAME_FIELD_VALUE_AVI_YCCQUANTIZATION_AUTO = 7 |
|
} NV_INFOFRAME_FIELD_VALUE_AVI_YCCQUANTIZATION; |
|
|
|
//! Adding an Auto bit to each field |
|
typedef struct |
|
{ |
|
NvU32 vic : 8; |
|
NvU32 pixelRepeat : 5; |
|
NvU32 colorSpace : 3; |
|
NvU32 colorimetry : 3; |
|
NvU32 extendedColorimetry : 4; |
|
NvU32 rgbQuantizationRange : 3; |
|
NvU32 yccQuantizationRange : 3; |
|
NvU32 itContent : 2; |
|
NvU32 contentTypes : 3; |
|
NvU32 scanInfo : 3; |
|
NvU32 activeFormatInfoPresent : 2; |
|
NvU32 activeFormatAspectRatio : 5; |
|
NvU32 picAspectRatio : 3; |
|
NvU32 nonuniformScaling : 3; |
|
NvU32 barInfo : 3; |
|
NvU32 top_bar : 17; |
|
NvU32 bottom_bar : 17; |
|
NvU32 left_bar : 17; |
|
NvU32 right_bar : 17; |
|
NvU32 Future17 : 2; |
|
NvU32 Future47 : 2; |
|
} NV_INFOFRAME_VIDEO; |
|
|
|
//! Byte 1 related |
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELCOUNT_IN_HEADER = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELCOUNT_2, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELCOUNT_3, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELCOUNT_4, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELCOUNT_5, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELCOUNT_6, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELCOUNT_7, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELCOUNT_8, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELCOUNT_AUTO = 15 |
|
} NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELCOUNT; |
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_IN_HEADER = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_PCM, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_AC3, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_MPEG1, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_MP3, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_MPEG2, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_AACLC, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_DTS, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_ATRAC, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_DSD, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_EAC3, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_DTSHD, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_MLP, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_DST, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_WMAPRO, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_USE_CODING_EXTENSION_TYPE, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE_AUTO = 31 |
|
} NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGTYPE; |
|
|
|
//! Byte 2 related |
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLESIZE_IN_HEADER = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLESIZE_16BITS, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLESIZE_20BITS, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLESIZE_24BITS, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLESIZE_AUTO = 7 |
|
} NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLESIZE; |
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLEFREQUENCY_IN_HEADER = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLEFREQUENCY_32000HZ, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLEFREQUENCY_44100HZ, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLEFREQUENCY_48000HZ, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLEFREQUENCY_88200KHZ, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLEFREQUENCY_96000KHZ, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLEFREQUENCY_176400KHZ, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLEFREQUENCY_192000KHZ, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLEFREQUENCY_AUTO = 15 |
|
} NV_INFOFRAME_FIELD_VALUE_AUDIO_SAMPLEFREQUENCY; |
|
|
|
|
|
|
|
//! Byte 3 related |
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_USE_CODING_TYPE = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_HEAAC, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_HEAACV2, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_MPEGSURROUND, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE04, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE05, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE06, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE07, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE08, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE09, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE10, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE11, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE12, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE13, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE14, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE15, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE16, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE17, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE18, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE19, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE20, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE21, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE22, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE23, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE24, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE25, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE26, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE27, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE28, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE29, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE30, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_RESERVE31, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE_AUTO = 63 |
|
} NV_INFOFRAME_FIELD_VALUE_AUDIO_CODINGEXTENSIONTYPE; |
|
|
|
|
|
//! Byte 4 related |
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_X_X_X_X_X_FR_FL =0, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_X_X_X_X_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_X_X_X_FC_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_X_X_X_FC_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_X_X_RC_X_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_X_X_RC_X_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_X_X_RC_FC_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_X_X_RC_FC_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_X_RR_RL_X_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_X_RR_RL_X_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_X_RR_RL_FC_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_X_RR_RL_FC_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_RC_RR_RL_X_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_RC_RR_RL_X_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_RC_RR_RL_FC_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_RC_RR_RL_FC_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_RRC_RLC_RR_RL_X_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_RRC_RLC_RR_RL_X_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_RRC_RLC_RR_RL_FC_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_RRC_RLC_RR_RL_FC_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRC_FLC_X_X_X_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRC_FLC_X_X_X_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRC_FLC_X_X_FC_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRC_FLC_X_X_FC_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRC_FLC_X_RC_X_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRC_FLC_X_RC_X_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRC_FLC_X_RC_FC_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRC_FLC_X_RC_FC_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRC_FLC_RR_RL_X_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRC_FLC_RR_RL_X_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRC_FLC_RR_RL_FC_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRC_FLC_RR_RL_FC_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_FCH_RR_RL_FC_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_X_FCH_RR_RL_FC_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_TC_X_RR_RL_FC_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_TC_X_RR_RL_FC_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRH_FLH_RR_RL_X_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRH_FLH_RR_RL_X_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRW_FLW_RR_RL_X_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRW_FLW_RR_RL_X_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_TC_RC_RR_RL_FC_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_TC_RC_RR_RL_FC_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FCH_RC_RR_RL_FC_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FCH_RC_RR_RL_FC_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_TC_FCH_RR_RL_FC_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_TC_FCH_RR_RL_FC_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRH_FLH_RR_RL_FC_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRH_FLH_RR_RL_FC_LFE_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRW_FLW_RR_RL_FC_X_FR_FL, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_FRW_FLW_RR_RL_FC_LFE_FR_FL = 0X31, |
|
// all other values should default to auto |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION_AUTO = 0x1FF |
|
} NV_INFOFRAME_FIELD_VALUE_AUDIO_CHANNELALLOCATION; |
|
|
|
//! Byte 5 related |
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LFEPLAYBACKLEVEL_NO_DATA = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LFEPLAYBACKLEVEL_0DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LFEPLAYBACKLEVEL_PLUS10DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LFEPLAYBACKLEVEL_RESERVED03, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LFEPLAYBACKLEVEL_AUTO = 7 |
|
} NV_INFOFRAME_FIELD_VALUE_AUDIO_LFEPLAYBACKLEVEL; |
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_0DB = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_1DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_2DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_3DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_4DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_5DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_6DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_7DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_8DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_9DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_10DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_11DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_12DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_13DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_14DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_15DB, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES_AUTO = 31 |
|
} NV_INFOFRAME_FIELD_VALUE_AUDIO_LEVELSHIFTVALUES; |
|
|
|
|
|
typedef enum |
|
{ |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_DOWNMIX_PERMITTED = 0, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_DOWNMIX_PROHIBITED, |
|
NV_INFOFRAME_FIELD_VALUE_AUDIO_DOWNMIX_AUTO = 3 |
|
} NV_INFOFRAME_FIELD_VALUE_AUDIO_DOWNMIX; |
|
|
|
typedef struct |
|
{ |
|
NvU32 codingType : 5; |
|
NvU32 codingExtensionType : 6; |
|
NvU32 sampleSize : 3; |
|
NvU32 sampleRate : 4; |
|
NvU32 channelCount : 4; |
|
NvU32 speakerPlacement : 9; |
|
NvU32 downmixInhibit : 2; |
|
NvU32 lfePlaybackLevel : 3; |
|
NvU32 levelShift : 5; |
|
NvU32 Future12 : 2; |
|
NvU32 Future2x : 4; |
|
NvU32 Future3x : 4; |
|
NvU32 Future52 : 2; |
|
NvU32 Future6 : 9; |
|
NvU32 Future7 : 9; |
|
NvU32 Future8 : 9; |
|
NvU32 Future9 : 9; |
|
NvU32 Future10 : 9; |
|
} NV_INFOFRAME_AUDIO; |
|
|
|
typedef struct |
|
{ |
|
NvU32 version; //!< version of this structure |
|
NvU16 size; //!< size of this structure |
|
NvU8 cmd; //!< The actions to perform from NV_INFOFRAME_CMD |
|
NvU8 type; //!< type of infoframe |
|
|
|
union |
|
{ |
|
NV_INFOFRAME_PROPERTY property; //!< This is NVIDIA-specific and corresponds to the property cmds and associated infoframe. |
|
NV_INFOFRAME_AUDIO audio; |
|
NV_INFOFRAME_VIDEO video; |
|
} infoframe; |
|
} NV_INFOFRAME_DATA; |
|
|
|
//! Macro for constructing the version field of ::NV_INFOFRAME_DATA |
|
#define NV_INFOFRAME_DATA_VER MAKE_NVAPI_VERSION(NV_INFOFRAME_DATA,1) |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_Disp_InfoFrameControl |
|
// |
|
//! DESCRIPTION: This API controls the InfoFrame values. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \param [in] displayId Monitor Identifier |
|
//! \param [in,out] pInfoframeData Contains data corresponding to InfoFrame |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Disp_InfoFrameControl(__in NvU32 displayId, __inout NV_INFOFRAME_DATA *pInfoframeData); |
|
|
|
|
|
|
|
|
|
|
|
|
|
//! \ingroup dispcontrol |
|
//! @{ |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_Disp_ColorControl |
|
// |
|
//! \fn NvAPI_Disp_ColorControl(NvU32 displayId, NV_COLOR_DATA *pColorData) |
|
//! DESCRIPTION: This API controls the Color values. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \param [in] displayId Monitor Identifier |
|
//! \param [in,out] pColorData Contains data corresponding to color information |
|
//! |
|
//! \return RETURN STATUS: |
|
//! ::NVAPI_OK, |
|
//! ::NVAPI_ERROR, |
|
//! ::NVAPI_INVALID_ARGUMENT |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
typedef enum |
|
{ |
|
NV_COLOR_CMD_GET = 1, |
|
NV_COLOR_CMD_SET, |
|
NV_COLOR_CMD_IS_SUPPORTED_COLOR, |
|
NV_COLOR_CMD_GET_DEFAULT |
|
} NV_COLOR_CMD; |
|
|
|
//! See Table 14 of CEA-861E. Not all of this is supported by the GPU. |
|
typedef enum |
|
{ |
|
NV_COLOR_FORMAT_RGB = 0, |
|
NV_COLOR_FORMAT_YUV422, |
|
NV_COLOR_FORMAT_YUV444, |
|
NV_COLOR_FORMAT_YUV420, |
|
|
|
NV_COLOR_FORMAT_DEFAULT = 0xFE, |
|
NV_COLOR_FORMAT_AUTO = 0xFF |
|
} NV_COLOR_FORMAT; |
|
|
|
|
|
|
|
typedef enum |
|
{ |
|
NV_COLOR_COLORIMETRY_RGB = 0, |
|
NV_COLOR_COLORIMETRY_YCC601, |
|
NV_COLOR_COLORIMETRY_YCC709, |
|
NV_COLOR_COLORIMETRY_XVYCC601, |
|
NV_COLOR_COLORIMETRY_XVYCC709, |
|
NV_COLOR_COLORIMETRY_SYCC601, |
|
NV_COLOR_COLORIMETRY_ADOBEYCC601, |
|
NV_COLOR_COLORIMETRY_ADOBERGB, |
|
NV_COLOR_COLORIMETRY_BT2020RGB, |
|
NV_COLOR_COLORIMETRY_BT2020YCC, |
|
NV_COLOR_COLORIMETRY_BT2020cYCC, |
|
|
|
NV_COLOR_COLORIMETRY_DEFAULT = 0xFE, |
|
NV_COLOR_COLORIMETRY_AUTO = 0xFF |
|
} NV_COLOR_COLORIMETRY; |
|
|
|
typedef enum _NV_DYNAMIC_RANGE |
|
{ |
|
NV_DYNAMIC_RANGE_VESA = 0x0, |
|
NV_DYNAMIC_RANGE_CEA = 0x1, |
|
|
|
NV_DYNAMIC_RANGE_AUTO = 0xFF |
|
} NV_DYNAMIC_RANGE; |
|
|
|
typedef enum _NV_BPC |
|
{ |
|
NV_BPC_DEFAULT = 0, |
|
NV_BPC_6 = 1, |
|
NV_BPC_8 = 2, |
|
NV_BPC_10 = 3, |
|
NV_BPC_12 = 4, |
|
NV_BPC_16 = 5, |
|
} NV_BPC; |
|
|
|
typedef struct _NV_COLOR_DATA_V1 |
|
{ |
|
NvU32 version; //!< Version of this structure |
|
NvU16 size; //!< Size of this structure |
|
NvU8 cmd; |
|
struct |
|
{ |
|
NvU8 colorFormat; //!< One of NV_COLOR_FORMAT enum values. |
|
NvU8 colorimetry; //!< One of NV_COLOR_COLORIMETRY enum values. |
|
} data; |
|
} NV_COLOR_DATA_V1; |
|
|
|
typedef struct _NV_COLOR_DATA_V2 |
|
{ |
|
NvU32 version; //!< Version of this structure |
|
NvU16 size; //!< Size of this structure |
|
NvU8 cmd; |
|
struct |
|
{ |
|
NvU8 colorFormat; //!< One of NV_COLOR_FORMAT enum values. |
|
NvU8 colorimetry; //!< One of NV_COLOR_COLORIMETRY enum values. |
|
NvU8 dynamicRange; //!< One of NV_DYNAMIC_RANGE enum values. |
|
} data; |
|
} NV_COLOR_DATA_V2; |
|
|
|
typedef struct _NV_COLOR_DATA_V3 |
|
{ |
|
NvU32 version; //!< Version of this structure |
|
NvU16 size; //!< Size of this structure |
|
NvU8 cmd; |
|
struct |
|
{ |
|
NvU8 colorFormat; //!< One of NV_COLOR_FORMAT enum values. |
|
NvU8 colorimetry; //!< One of NV_COLOR_COLORIMETRY enum values. |
|
NvU8 dynamicRange; //!< One of NV_DYNAMIC_RANGE enum values. |
|
NV_BPC bpc; //!< One of NV_BPC enum values. |
|
} data; |
|
} NV_COLOR_DATA_V3; |
|
|
|
typedef NV_COLOR_DATA_V3 NV_COLOR_DATA; |
|
|
|
#define NV_COLOR_DATA_VER1 MAKE_NVAPI_VERSION(NV_COLOR_DATA_V1, 1) |
|
#define NV_COLOR_DATA_VER2 MAKE_NVAPI_VERSION(NV_COLOR_DATA_V2, 2) |
|
#define NV_COLOR_DATA_VER3 MAKE_NVAPI_VERSION(NV_COLOR_DATA_V3, 3) |
|
#define NV_COLOR_DATA_VER NV_COLOR_DATA_VER3 |
|
|
|
NVAPI_INTERFACE NvAPI_Disp_ColorControl(NvU32 displayId, NV_COLOR_DATA *pColorData); |
|
|
|
//! @} |
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NvAPI_DISP_GetTiming(). |
|
typedef struct |
|
{ |
|
NvU32 isInterlaced : 4; //!< To retrieve interlaced/progressive timing |
|
NvU32 reserved0 : 12; |
|
union |
|
{ |
|
NvU32 tvFormat : 8; //!< The actual analog HD/SDTV format. Used when the timing type is |
|
//! NV_TIMING_OVERRIDE_ANALOG_TV and width==height==rr==0. |
|
NvU32 ceaId : 8; //!< The EIA/CEA 861B/D predefined short timing descriptor ID. |
|
//! Used when the timing type is NV_TIMING_OVERRIDE_EIA861 |
|
//! and width==height==rr==0. |
|
NvU32 nvPsfId : 8; //!< The NV predefined PsF format Id. |
|
//! Used when the timing type is NV_TIMING_OVERRIDE_NV_PREDEFINED. |
|
}; |
|
NvU32 scaling : 8; //!< Define preferred scaling |
|
}NV_TIMING_FLAG; |
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NvAPI_DISP_GetTiming(). |
|
typedef struct _NV_TIMING_INPUT |
|
{ |
|
NvU32 version; //!< (IN) structure version |
|
|
|
NvU32 width; //!< Visible horizontal size |
|
NvU32 height; //!< Visible vertical size |
|
float rr; //!< Timing refresh rate |
|
|
|
NV_TIMING_FLAG flag; //!< Flag containing additional info for timing calculation. |
|
|
|
NV_TIMING_OVERRIDE type; //!< Timing type(formula) to use for calculating the timing |
|
}NV_TIMING_INPUT; |
|
|
|
#define NV_TIMING_INPUT_VER MAKE_NVAPI_VERSION(NV_TIMING_INPUT,1) |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_DISP_GetTiming |
|
// |
|
//! DESCRIPTION: This function calculates the timing from the visible width/height/refresh-rate and timing type info. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! |
|
//! \param [in] displayId Display ID of the display. |
|
//! \param [in] timingInput Inputs used for calculating the timing. |
|
//! \param [out] pTiming Pointer to the NV_TIMING structure. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DISP_GetTiming( __in NvU32 displayId,__in NV_TIMING_INPUT *timingInput, __out NV_TIMING *pTiming); |
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_DISP_GetMonitorCapabilities |
|
// |
|
//! \fn NvAPI_DISP_GetMonitorCapabilities(NvU32 displayId, NV_MONITOR_CAPABILITIES *pMonitorCapabilities) |
|
//! DESCRIPTION: This API returns the Monitor capabilities |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \param [in] displayId Monitor Identifier |
|
//! \param [out] pMonitorCapabilities The monitor support info |
|
//! |
|
//! \return ::NVAPI_OK, |
|
//! ::NVAPI_ERROR, |
|
//! ::NVAPI_INVALID_ARGUMENT |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup dispcontrol |
|
//! @{ |
|
|
|
|
|
//! HDMI-related and extended CAPs |
|
typedef enum |
|
{ |
|
// hdmi related caps |
|
NV_MONITOR_CAPS_TYPE_HDMI_VSDB = 0x1000, |
|
NV_MONITOR_CAPS_TYPE_HDMI_VCDB = 0x1001, |
|
} NV_MONITOR_CAPS_TYPE; |
|
|
|
|
|
|
|
typedef struct _NV_MONITOR_CAPS_VCDB |
|
{ |
|
NvU8 quantizationRangeYcc : 1; |
|
NvU8 quantizationRangeRgb : 1; |
|
NvU8 scanInfoPreferredVideoFormat : 2; |
|
NvU8 scanInfoITVideoFormats : 2; |
|
NvU8 scanInfoCEVideoFormats : 2; |
|
} NV_MONITOR_CAPS_VCDB; |
|
|
|
|
|
//! See NvAPI_DISP_GetMonitorCapabilities(). |
|
typedef struct _NV_MONITOR_CAPS_VSDB |
|
{ |
|
// byte 1 |
|
NvU8 sourcePhysicalAddressB : 4; //!< Byte 1 |
|
NvU8 sourcePhysicalAddressA : 4; //!< Byte 1 |
|
// byte 2 |
|
NvU8 sourcePhysicalAddressD : 4; //!< Byte 2 |
|
NvU8 sourcePhysicalAddressC : 4; //!< Byte 2 |
|
// byte 3 |
|
NvU8 supportDualDviOperation : 1; //!< Byte 3 |
|
NvU8 reserved6 : 2; //!< Byte 3 |
|
NvU8 supportDeepColorYCbCr444 : 1; //!< Byte 3 |
|
NvU8 supportDeepColor30bits : 1; //!< Byte 3 |
|
NvU8 supportDeepColor36bits : 1; //!< Byte 3 |
|
NvU8 supportDeepColor48bits : 1; //!< Byte 3 |
|
NvU8 supportAI : 1; //!< Byte 3 |
|
// byte 4 |
|
NvU8 maxTmdsClock; //!< Bye 4 |
|
// byte 5 |
|
NvU8 cnc0SupportGraphicsTextContent : 1; //!< Byte 5 |
|
NvU8 cnc1SupportPhotoContent : 1; //!< Byte 5 |
|
NvU8 cnc2SupportCinemaContent : 1; //!< Byte 5 |
|
NvU8 cnc3SupportGameContent : 1; //!< Byte 5 |
|
NvU8 reserved8 : 1; //!< Byte 5 |
|
NvU8 hasVicEntries : 1; //!< Byte 5 |
|
NvU8 hasInterlacedLatencyField : 1; //!< Byte 5 |
|
NvU8 hasLatencyField : 1; //!< Byte 5 |
|
// byte 6 |
|
NvU8 videoLatency; //!< Byte 6 |
|
// byte 7 |
|
NvU8 audioLatency; //!< Byte 7 |
|
// byte 8 |
|
NvU8 interlacedVideoLatency; //!< Byte 8 |
|
// byte 9 |
|
NvU8 interlacedAudioLatency; //!< Byte 9 |
|
// byte 10 |
|
NvU8 reserved13 : 7; //!< Byte 10 |
|
NvU8 has3dEntries : 1; //!< Byte 10 |
|
// byte 11 |
|
NvU8 hdmi3dLength : 5; //!< Byte 11 |
|
NvU8 hdmiVicLength : 3; //!< Byte 11 |
|
// Remaining bytes |
|
NvU8 hdmi_vic[7]; //!< Keeping maximum length for 3 bits |
|
NvU8 hdmi_3d[31]; //!< Keeping maximum length for 5 bits |
|
} NV_MONITOR_CAPS_VSDB; |
|
|
|
|
|
//! See NvAPI_DISP_GetMonitorCapabilities(). |
|
typedef struct _NV_MONITOR_CAPABILITIES_V1 |
|
{ |
|
NvU32 version; |
|
NvU16 size; |
|
NvU32 infoType; |
|
NvU32 connectorType; //!< Out: VGA, TV, DVI, HDMI, DP |
|
NvU8 bIsValidInfo : 1; //!< Boolean : Returns invalid if requested info is not present such as VCDB not present |
|
union { |
|
NV_MONITOR_CAPS_VSDB vsdb; |
|
NV_MONITOR_CAPS_VCDB vcdb; |
|
} data; |
|
} NV_MONITOR_CAPABILITIES_V1; |
|
|
|
typedef NV_MONITOR_CAPABILITIES_V1 NV_MONITOR_CAPABILITIES; |
|
|
|
//! Macro for constructing the version field of ::NV_MONITOR_CAPABILITIES_V1 |
|
#define NV_MONITOR_CAPABILITIES_VER1 MAKE_NVAPI_VERSION(NV_MONITOR_CAPABILITIES_V1,1) |
|
#define NV_MONITOR_CAPABILITIES_VER NV_MONITOR_CAPABILITIES_VER1 |
|
|
|
//! @} |
|
|
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! \ingroup dispcontrol |
|
NVAPI_INTERFACE NvAPI_DISP_GetMonitorCapabilities(__in NvU32 displayId, __inout NV_MONITOR_CAPABILITIES *pMonitorCapabilities); |
|
|
|
//! \ingroup dispcontrol |
|
typedef struct _NV_MONITOR_COLOR_DATA |
|
{ |
|
NvU32 version; |
|
// We are only supporting DP monitors for now. We need to extend this to HDMI panels as well |
|
NV_DP_COLOR_FORMAT colorFormat; //!< One of the supported color formats |
|
NV_DP_BPC backendBitDepths; //!< One of the supported bit depths |
|
} NV_MONITOR_COLOR_CAPS_V1; |
|
|
|
typedef NV_MONITOR_COLOR_CAPS_V1 NV_MONITOR_COLOR_CAPS; |
|
|
|
//! \ingroup dispcontrol |
|
#define NV_MONITOR_COLOR_CAPS_VER1 MAKE_NVAPI_VERSION(NV_MONITOR_COLOR_CAPS_V1,1) |
|
#define NV_MONITOR_COLOR_CAPS_VER NV_MONITOR_COLOR_CAPS_VER1 |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_DISP_GetMonitorColorCapabilities |
|
// |
|
//! DESCRIPTION: This API returns all the color formats and bit depth values supported by a given DP monitor. |
|
//! |
|
//! USAGE: Sequence of calls which caller should make to get the information. |
|
//! 1. First call NvAPI_DISP_GetMonitorColorCapabilities() with pMonitorColorCapabilities as NULL to get the count. |
|
//! 2. Allocate memory for color caps(NV_MONITOR_COLOR_CAPS) array. |
|
//! 3. Call NvAPI_DISP_GetMonitorColorCapabilities() again with the pointer to the memory allocated to get all the |
|
//! color capabilities. |
|
//! |
|
//! Note : |
|
//! 1. pColorCapsCount should never be NULL, else the API will fail with NVAPI_INVALID_ARGUMENT. |
|
//! 2. *pColorCapsCount returned from the API will always be the actual count in any/every call. |
|
//! 3. Memory size to be allocated should be (*pColorCapsCount * sizeof(NV_MONITOR_COLOR_CAPS)). |
|
//! 4. If the memory allocated is less than what is required to return all the timings, this API will return the |
|
//! amount of information which can fit in user provided buffer and API will return NVAPI_INSUFFICIENT_BUFFER. |
|
//! 5. If the caller specifies a greater value for *pColorCapsCount in second call to NvAPI_DISP_GetMonitorColorCapabilities() |
|
//! than what was returned from first call, the API will return only the actual number of elements in the color |
|
//! capabilities array and the extra buffer will remain unused. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \param [in] displayId Monitor Identifier |
|
//! \param [in, out] pMonitorColorCapabilities The monitor color capabilities information |
|
//! \param [in, out] pColorCapsCount - During input, the number of elements allocated for the pMonitorColorCapabilities pointer |
|
//! - During output, the actual number of color data elements the monitor supports |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! |
|
//! \retval NVAPI_INSUFFICIENT_BUFFER The input buffer size is not sufficient to hold the total contents. In this case |
|
//! *pColorCapsCount will hold the required amount of elements. |
|
//! \retval NVAPI_INVALID_DISPLAY_ID The input monitor is either not connected or is not a DP panel. |
|
//! |
|
//! \ingroup dispcontrol |
|
//! |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DISP_GetMonitorColorCapabilities(__in NvU32 displayId, __inout_ecount_part_opt(*pColorCapsCount, *pColorCapsCount) NV_MONITOR_COLOR_CAPS *pMonitorColorCapabilities, __inout NvU32 *pColorCapsCount); |
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NvAPI_DISP_EnumCustomDisplay() and NvAPI_DISP_TryCustomDisplay(). |
|
typedef struct |
|
{ |
|
NvU32 version; |
|
|
|
// the source mode information |
|
NvU32 width; //!< Source surface(source mode) width |
|
NvU32 height; //!< Source surface(source mode) height |
|
NvU32 depth; //!< Source surface color depth."0" means all 8/16/32bpp |
|
NV_FORMAT colorFormat; //!< Color format (optional) |
|
|
|
NV_VIEWPORTF srcPartition; //!< For multimon support, should be set to (0,0,1.0,1.0) for now. |
|
|
|
float xRatio; //!< Horizontal scaling ratio |
|
float yRatio; //!< Vertical scaling ratio |
|
|
|
NV_TIMING timing; //!< Timing used to program TMDS/DAC/LVDS/HDMI/TVEncoder, etc. |
|
NvU32 hwModeSetOnly : 1; //!< If set, it means a hardware modeset without OS update |
|
|
|
}NV_CUSTOM_DISPLAY; |
|
|
|
//! \ingroup dispcontrol |
|
//! Used in NV_CUSTOM_DISPLAY. |
|
#define NV_CUSTOM_DISPLAY_VER MAKE_NVAPI_VERSION(NV_CUSTOM_DISPLAY,1) |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_DISP_EnumCustomDisplay |
|
// |
|
//! DESCRIPTION: This API enumerates the custom timing specified by the enum index. |
|
//! The client should keep enumerating until it returns NVAPI_END_ENUMERATION. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! \param [in] displayId Dispaly ID of the display. |
|
//! \param [in] index Enum index |
|
//! \param [inout] pCustDisp Pointer to the NV_CUSTOM_DISPLAY structure |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! \retval NVAPI_INVALID_DISPLAY_ID: Custom Timing is not supported on the Display, whose display id is passed |
|
//! |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DISP_EnumCustomDisplay( __in NvU32 displayId, __in NvU32 index, __inout NV_CUSTOM_DISPLAY *pCustDisp); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_DISP_TryCustomDisplay |
|
// |
|
//! DESCRIPTION: This API is used to set up a custom display without saving the configuration on multiple displays. |
|
//! |
|
//! \note |
|
//! All the members of srcPartition, present in NV_CUSTOM_DISPLAY structure, should have their range in (0.0,1.0). |
|
//! In clone mode the timings can applied to both the target monitors but only one target at a time. \n |
|
//! For the secondary target the applied timings works under the following conditions: |
|
//! - If the secondary monitor EDID supports the selected timing, OR |
|
//! - If the selected custom timings can be scaled by the secondary monitor for the selected source resolution on the primary, OR |
|
//! - If the selected custom timings matches the existing source resolution on the primary. |
|
//! Setting up a custom display on non-active but connected monitors is supported only for Win7 and above. |
|
//! |
|
//! SUPPORTED OS: Windows XP, Windows 7 and higher |
|
//! |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! |
|
//! \param [in] pDisplayIds Array of the target display Dispaly IDs - See \ref handles. |
|
//! \param [in] count Total number of the incoming Display IDs and corresponding NV_CUSTOM_DISPLAY structure. This is for the multi-head support. |
|
//! \param [in] pCustDisp Pointer to the NV_CUSTOM_DISPLAY structure array. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! \retval NVAPI_INVALID_DISPLAY_ID: Custom Timing is not supported on the Display, whose display id is passed |
|
//! |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DISP_TryCustomDisplay( __in_ecount(count) NvU32 *pDisplayIds, __in NvU32 count, __in_ecount(count) NV_CUSTOM_DISPLAY *pCustDisp); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_DISP_DeleteCustomDisplay |
|
// |
|
//! DESCRIPTION: This function deletes the custom display configuration, specified from the registry for all the displays whose display IDs are passed. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! |
|
//! \param [in] pDisplayIds Array of Dispaly IDs on which custom display configuration is to be saved. |
|
//! \param [in] count Total number of the incoming Dispaly IDs. This is for the multi-head support. |
|
//! \param [in] pCustDisp Pointer to the NV_CUSTOM_DISPLAY structure |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! \retval NVAPI_INVALID_DISPLAY_ID: Custom Timing is not supported on the Display, whose display id is passed |
|
//! |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DISP_DeleteCustomDisplay( __in_ecount(count) NvU32 *pDisplayIds, __in NvU32 count, __in NV_CUSTOM_DISPLAY *pCustDisp); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_DISP_SaveCustomDisplay |
|
// |
|
//! DESCRIPTION: This function saves the current hardware display configuration on the specified Display IDs as a custom display configuration. |
|
//! This function should be called right after NvAPI_DISP_TryCustomDisplay() to save the custom display from the current |
|
//! hardware context. This function will not do anything if the custom display configuration is not tested on the hardware. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! |
|
//! \param [in] pDisplayIds Array of Dispaly IDs on which custom display configuration is to be saved. |
|
//! \param [in] count Total number of the incoming Dispaly IDs. This is for the multi-head support. |
|
//! \param [in] isThisOutputIdOnly If set, the saved custom display will only be applied on the monitor with the same outputId (see \ref handles). |
|
//! \param [in] isThisMonitorIdOnly If set, the saved custom display will only be applied on the monitor with the same EDID ID or |
|
//! the same TV connector in case of analog TV. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! \retval NVAPI_INVALID_DISPLAY_ID: Custom Timing is not supported on the Display, whose display id is passed |
|
//! |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DISP_SaveCustomDisplay( __in_ecount(count) NvU32 *pDisplayIds, __in NvU32 count, __in NvU32 isThisOutputIdOnly, __in NvU32 isThisMonitorIdOnly); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_DISP_RevertCustomDisplayTrial |
|
// |
|
//! DESCRIPTION: This API is used to restore the display configuration, that was changed by calling NvAPI_DISP_TryCustomDisplay(). This function |
|
//! must be called only after a custom display configuration is tested on the hardware, using NvAPI_DISP_TryCustomDisplay(), |
|
//! otherwise no action is taken. On Vista, NvAPI_DISP_RevertCustomDisplayTrial should be called with an active display that |
|
//! was affected during the NvAPI_DISP_TryCustomDisplay() call, per GPU. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! |
|
//! \param [in] pDisplayIds Pointer to display Id, of an active display. |
|
//! \param [in] count Total number of incoming Display IDs. For future use only. Currently it is expected to be passed as 1. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DISP_RevertCustomDisplayTrial( __in_ecount(count) NvU32* pDisplayIds, __in NvU32 count); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_GetView |
|
// |
|
//! This API lets caller retrieve the target display arrangement for selected source display handle. |
|
//! \note Display PATH with this API is limited to single GPU. DUALVIEW across GPUs will be returned as STANDARD VIEW. |
|
//! Use NvAPI_SYS_GetDisplayTopologies() to query views across GPUs. |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_DISP_GetDisplayConfig. |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 85 |
|
//! |
|
//! \param [in] hNvDisplay NVIDIA Display selection. It can be #NVAPI_DEFAULT_HANDLE or a handle enumerated from |
|
//! NvAPI_EnumNVidiaDisplayHandle(). |
|
//! \param [out] pTargets User allocated storage to retrieve an array of NV_VIEW_TARGET_INFO. Can be NULL to retrieve |
|
//! the targetCount. |
|
//! \param [in,out] targetMaskCount Count of target device mask specified in pTargetMask. |
|
//! \param [out] targetView Target view selected from NV_TARGET_VIEW_MODE. |
|
//! |
|
//! \retval NVAPI_OK Completed request |
|
//! \retval NVAPI_ERROR Miscellaneous error occurred |
|
//! \retval NVAPI_INVALID_ARGUMENT Invalid input parameter. |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_DISP_GetDisplayConfig.") |
|
NVAPI_INTERFACE NvAPI_GetView(NvDisplayHandle hNvDisplay, NV_VIEW_TARGET_INFO *pTargets, NvU32 *pTargetMaskCount, NV_TARGET_VIEW_MODE *pTargetView); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_GetViewEx |
|
// |
|
//! DESCRIPTION: This API lets caller retrieve the target display arrangement for selected source display handle. |
|
//! \note Display PATH with this API is limited to single GPU. DUALVIEW across GPUs will be returned as STANDARD VIEW. |
|
//! Use NvAPI_SYS_GetDisplayTopologies() to query views across GPUs. |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_DISP_GetDisplayConfig. |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 165 |
|
//! |
|
//! \param [in] hNvDisplay NVIDIA Display selection. #NVAPI_DEFAULT_HANDLE is not allowed, it has to be a handle enumerated with |
|
//! NvAPI_EnumNVidiaDisplayHandle(). |
|
//! \param [in,out] pPathInfo Count field should be set to NVAPI_MAX_DISPLAY_PATH. Can be NULL to retrieve just the pathCount. |
|
//! \param [in,out] pPathCount Number of elements in array pPathInfo->path. |
|
//! \param [out] pTargetViewMode Display view selected from NV_TARGET_VIEW_MODE. |
|
//! |
|
//! \retval NVAPI_OK Completed request |
|
//! \retval NVAPI_API_NOT_INTIALIZED NVAPI not initialized |
|
//! \retval NVAPI_ERROR Miscellaneous error occurred |
|
//! \retval NVAPI_INVALID_ARGUMENT Invalid input parameter. |
|
//! \retval NVAPI_EXPECTED_DISPLAY_HANDLE hNvDisplay is not a valid display handle. |
|
//! |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_DISP_GetDisplayConfig.") |
|
NVAPI_INTERFACE NvAPI_GetViewEx(NvDisplayHandle hNvDisplay, NV_DISPLAY_PATH_INFO *pPathInfo, NvU32 *pPathCount, NV_TARGET_VIEW_MODE *pTargetViewMode); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_GetSupportedViews |
|
// |
|
//! This API lets caller enumerate all the supported NVIDIA display views - nView and Dualview modes. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 85 |
|
//! |
|
//! \param [in] hNvDisplay NVIDIA Display selection. It can be #NVAPI_DEFAULT_HANDLE or a handle enumerated from |
|
//! NvAPI_EnumNVidiaDisplayHandle(). |
|
//! \param [out] pTargetViews Array of supported views. Can be NULL to retrieve the pViewCount first. |
|
//! \param [in,out] pViewCount Count of supported views. |
|
//! |
|
//! \retval NVAPI_OK Completed request |
|
//! \retval NVAPI_ERROR Miscellaneous error occurred |
|
//! \retval NVAPI_INVALID_ARGUMENT Invalid input parameter. |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GetSupportedViews(NvDisplayHandle hNvDisplay, NV_TARGET_VIEW_MODE *pTargetViews, NvU32 *pViewCount); |
|
|
|
|
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DISP_GetDisplayIdByDisplayName |
|
// |
|
//! DESCRIPTION: This API retrieves the Display Id of a given display by |
|
//! display name. The display must be active to retrieve the |
|
//! displayId. In the case of clone mode or Surround gaming, |
|
//! the primary or top-left display will be returned. |
|
//! |
|
//! \param [in] displayName Name of display (Eg: "\\DISPLAY1" to |
|
//! retrieve the displayId for. |
|
//! \param [out] displayId Display ID of the requested display. |
|
//! |
|
//! retval ::NVAPI_OK: Capabilties have been returned. |
|
//! retval ::NVAPI_INVALID_ARGUMENT: One or more args passed in are invalid. |
|
//! retval ::NVAPI_API_NOT_INTIALIZED: The NvAPI API needs to be initialized first |
|
//! retval ::NVAPI_NO_IMPLEMENTATION: This entrypoint not available |
|
//! retval ::NVAPI_ERROR: Miscellaneous error occurred |
|
//! |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DISP_GetDisplayIdByDisplayName(const char *displayName, NvU32* displayId); |
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_DISP_GetDisplayConfig |
|
// |
|
//! DESCRIPTION: This API lets caller retrieve the current global display |
|
//! configuration. |
|
//! USAGE: The caller might have to call this three times to fetch all the required configuration details as follows: |
|
//! First Pass: Caller should Call NvAPI_DISP_GetDisplayConfig() with pathInfo set to NULL to fetch pathInfoCount. |
|
//! Second Pass: Allocate memory for pathInfo with respect to the number of pathInfoCount(from First Pass) to fetch |
|
//! targetInfoCount. If sourceModeInfo is needed allocate memory or it can be initialized to NULL. |
|
//! Third Pass(Optional, only required if target information is required): Allocate memory for targetInfo with respect |
|
//! to number of targetInfoCount(from Second Pass). |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \param [in,out] pathInfoCount Number of elements in pathInfo array, returns number of valid topologies, this cannot be null. |
|
//! \param [in,out] pathInfo Array of path information |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
//! specific meaning for this API, they are listed below. |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT - Invalid input parameter. Following can be the reason for this return value: |
|
//! -# pathInfoCount is NULL. |
|
//! -# *pathInfoCount is 0 and pathInfo is not NULL. |
|
//! -# *pathInfoCount is not 0 and pathInfo is NULL. |
|
//! \retval NVAPI_DEVICE_BUSY - ModeSet has not yet completed. Please wait and call it again. |
|
//! |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DISP_GetDisplayConfig(__inout NvU32 *pathInfoCount, __out_ecount_full_opt(*pathInfoCount) NV_DISPLAYCONFIG_PATH_INFO *pathInfo); |
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_DISP_SetDisplayConfig |
|
// |
|
// |
|
//! DESCRIPTION: This API lets caller apply a global display configuration |
|
//! across multiple GPUs. |
|
//! |
|
//! If all sourceIds are zero, then NvAPI will pick up sourceId's based on the following criteria : |
|
//! - If user provides sourceModeInfo then we are trying to assign 0th sourceId always to GDIPrimary. |
|
//! This is needed since active windows always moves along with 0th sourceId. |
|
//! - For rest of the paths, we are incrementally assigning the sourceId per adapter basis. |
|
//! - If user doesn't provide sourceModeInfo then NVAPI just picks up some default sourceId's in incremental order. |
|
//! Note : NVAPI will not intelligently choose the sourceIDs for any configs that does not need a modeset. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \param [in] pathInfoCount Number of supplied elements in pathInfo |
|
//! \param [in] pathInfo Array of path information |
|
//! \param [in] flags Flags for applying settings |
|
//! |
|
//! \retval ::NVAPI_OK - completed request |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED - NVAPI not initialized |
|
//! \retval ::NVAPI_ERROR - miscellaneous error occurred |
|
//! \retval ::NVAPI_INVALID_ARGUMENT - Invalid input parameter. |
|
//! |
|
//! \ingroup dispcontrol |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DISP_SetDisplayConfig(__in NvU32 pathInfoCount, __in_ecount(pathInfoCount) NV_DISPLAYCONFIG_PATH_INFO* pathInfo, __in NvU32 flags); |
|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// MOSAIC allows a multi display target output scanout on a single source. |
|
// |
|
// SAMPLE of MOSAIC 1x4 topo with 8 pixel horizontal overlap |
|
// |
|
//+-------------------------++-------------------------++-------------------------++-------------------------+ |
|
//| || || || | |
|
//| || || || | |
|
//| || || || | |
|
//| DVI1 || DVI2 || DVI3 || DVI4 | |
|
//| || || || | |
|
//| || || || | |
|
//| || || || | |
|
//| || || || | |
|
//+-------------------------++-------------------------++-------------------------++-------------------------+ |
|
|
|
|
|
//! \addtogroup mosaicapi |
|
//! @{ |
|
|
|
#define NVAPI_MAX_MOSAIC_DISPLAY_ROWS 8 |
|
#define NVAPI_MAX_MOSAIC_DISPLAY_COLUMNS 8 |
|
// |
|
// These bits are used to describe the validity of a topo. |
|
// |
|
#define NV_MOSAIC_TOPO_VALIDITY_VALID 0x00000000 //!< The topology is valid |
|
#define NV_MOSAIC_TOPO_VALIDITY_MISSING_GPU 0x00000001 //!< Not enough SLI GPUs were found to fill the entire |
|
//! topology. hPhysicalGPU will be 0 for these. |
|
#define NV_MOSAIC_TOPO_VALIDITY_MISSING_DISPLAY 0x00000002 //!< Not enough displays were found to fill the entire |
|
//! topology. displayOutputId will be 0 for these. |
|
#define NV_MOSAIC_TOPO_VALIDITY_MIXED_DISPLAY_TYPES 0x00000004 //!< The topoogy is only possible with displays of the same |
|
//! NV_GPU_OUTPUT_TYPE. Check displayOutputIds to make |
|
//! sure they are all CRTs, or all DFPs. |
|
|
|
|
|
// |
|
//! This structure defines the topology details. |
|
typedef struct |
|
{ |
|
NvU32 version; //!< Version of this structure |
|
NvLogicalGpuHandle hLogicalGPU; //!< Logical GPU for this topology |
|
NvU32 validityMask; //!< 0 means topology is valid with the current hardware. |
|
//! If not 0, inspect bits against NV_MOSAIC_TOPO_VALIDITY_*. |
|
NvU32 rowCount; //!< Number of displays in a row |
|
NvU32 colCount; //!< Number of displays in a column |
|
|
|
struct |
|
{ |
|
NvPhysicalGpuHandle hPhysicalGPU; //!< Physical GPU to be used in the topology (0 if GPU missing) |
|
NvU32 displayOutputId; //!< Connected display target (0 if no display connected) |
|
NvS32 overlapX; //!< Pixels of overlap on left of target: (+overlap, -gap) |
|
NvS32 overlapY; //!< Pixels of overlap on top of target: (+overlap, -gap) |
|
|
|
} gpuLayout[NVAPI_MAX_MOSAIC_DISPLAY_ROWS][NVAPI_MAX_MOSAIC_DISPLAY_COLUMNS]; |
|
|
|
} NV_MOSAIC_TOPO_DETAILS; |
|
|
|
//! Macro for constructing te vesion field of NV_MOSAIC_TOPO_DETAILS |
|
#define NVAPI_MOSAIC_TOPO_DETAILS_VER MAKE_NVAPI_VERSION(NV_MOSAIC_TOPO_DETAILS,1) |
|
|
|
|
|
// |
|
//! These values refer to the different types of Mosaic topologies that are possible. When |
|
//! getting the supported Mosaic topologies, you can specify one of these types to narrow down |
|
//! the returned list to only those that match the given type. |
|
typedef enum |
|
{ |
|
NV_MOSAIC_TOPO_TYPE_ALL, //!< All mosaic topologies |
|
NV_MOSAIC_TOPO_TYPE_BASIC, //!< Basic Mosaic topologies |
|
NV_MOSAIC_TOPO_TYPE_PASSIVE_STEREO, //!< Passive Stereo topologies |
|
NV_MOSAIC_TOPO_TYPE_SCALED_CLONE, //!< Not supported at this time |
|
NV_MOSAIC_TOPO_TYPE_PASSIVE_STEREO_SCALED_CLONE, //!< Not supported at this time |
|
NV_MOSAIC_TOPO_TYPE_MAX, //!< Always leave this at end of the enum |
|
} NV_MOSAIC_TOPO_TYPE; |
|
|
|
|
|
// |
|
//! This is a complete list of supported Mosaic topologies. |
|
//! |
|
//! Using a "Basic" topology combines multiple monitors to create a single desktop. |
|
//! |
|
//! Using a "Passive" topology combines multiples monitors to create a passive stereo desktop. |
|
//! In passive stereo, two identical topologies combine - one topology is used for the right eye and the other identical //! topology (targeting different displays) is used for the left eye. \n |
|
//! NOTE: common\inc\nvEscDef.h shadows a couple PASSIVE_STEREO enums. If this |
|
//! enum list changes and effects the value of NV_MOSAIC_TOPO_BEGIN_PASSIVE_STEREO |
|
//! please update the corresponding value in nvEscDef.h |
|
typedef enum |
|
{ |
|
NV_MOSAIC_TOPO_NONE, |
|
|
|
// 'BASIC' topos start here |
|
// |
|
// The result of using one of these Mosaic topos is that multiple monitors |
|
// will combine to create a single desktop. |
|
// |
|
NV_MOSAIC_TOPO_BEGIN_BASIC, |
|
NV_MOSAIC_TOPO_1x2_BASIC = NV_MOSAIC_TOPO_BEGIN_BASIC, |
|
NV_MOSAIC_TOPO_2x1_BASIC, |
|
NV_MOSAIC_TOPO_1x3_BASIC, |
|
NV_MOSAIC_TOPO_3x1_BASIC, |
|
NV_MOSAIC_TOPO_1x4_BASIC, |
|
NV_MOSAIC_TOPO_4x1_BASIC, |
|
NV_MOSAIC_TOPO_2x2_BASIC, |
|
NV_MOSAIC_TOPO_2x3_BASIC, |
|
NV_MOSAIC_TOPO_2x4_BASIC, |
|
NV_MOSAIC_TOPO_3x2_BASIC, |
|
NV_MOSAIC_TOPO_4x2_BASIC, |
|
NV_MOSAIC_TOPO_1x5_BASIC, |
|
NV_MOSAIC_TOPO_1x6_BASIC, |
|
NV_MOSAIC_TOPO_7x1_BASIC, |
|
|
|
// Add padding for 10 more entries. 6 will be enough room to specify every |
|
// possible topology with 8 or fewer displays, so this gives us a little |
|
// extra should we need it. |
|
NV_MOSAIC_TOPO_END_BASIC = NV_MOSAIC_TOPO_7x1_BASIC + 9, |
|
|
|
// 'PASSIVE_STEREO' topos start here |
|
// |
|
// The result of using one of these Mosaic topos is that multiple monitors |
|
// will combine to create a single PASSIVE STEREO desktop. What this means is |
|
// that there will be two topos that combine to create the overall desktop. |
|
// One topo will be used for the left eye, and the other topo (of the |
|
// same rows x cols), will be used for the right eye. The difference between |
|
// the two topos is that different GPUs and displays will be used. |
|
// |
|
NV_MOSAIC_TOPO_BEGIN_PASSIVE_STEREO, // value shadowed in nvEscDef.h |
|
NV_MOSAIC_TOPO_1x2_PASSIVE_STEREO = NV_MOSAIC_TOPO_BEGIN_PASSIVE_STEREO, |
|
NV_MOSAIC_TOPO_2x1_PASSIVE_STEREO, |
|
NV_MOSAIC_TOPO_1x3_PASSIVE_STEREO, |
|
NV_MOSAIC_TOPO_3x1_PASSIVE_STEREO, |
|
NV_MOSAIC_TOPO_1x4_PASSIVE_STEREO, |
|
NV_MOSAIC_TOPO_4x1_PASSIVE_STEREO, |
|
NV_MOSAIC_TOPO_2x2_PASSIVE_STEREO, |
|
NV_MOSAIC_TOPO_END_PASSIVE_STEREO = NV_MOSAIC_TOPO_2x2_PASSIVE_STEREO + 4, |
|
|
|
|
|
// |
|
// Total number of topos. Always leave this at the end of the enumeration. |
|
// |
|
NV_MOSAIC_TOPO_MAX //! Total number of topologies. |
|
|
|
} NV_MOSAIC_TOPO; |
|
|
|
|
|
// |
|
//! This is a "topology brief" structure. It tells you what you need to know about |
|
//! a topology at a high level. A list of these is returned when you query for the |
|
//! supported Mosaic information. |
|
//! |
|
//! If you need more detailed information about the topology, call |
|
//! NvAPI_Mosaic_GetTopoGroup() with the topology value from this structure. |
|
typedef struct |
|
{ |
|
NvU32 version; //!< Version of this structure |
|
NV_MOSAIC_TOPO topo; //!< The topology |
|
NvU32 enabled; //!< 1 if topo is enabled, else 0 |
|
NvU32 isPossible; //!< 1 if topo *can* be enabled, else 0 |
|
|
|
} NV_MOSAIC_TOPO_BRIEF; |
|
|
|
//! Macro for constructing the version field of NV_MOSAIC_TOPO_BRIEF |
|
#define NVAPI_MOSAIC_TOPO_BRIEF_VER MAKE_NVAPI_VERSION(NV_MOSAIC_TOPO_BRIEF,1) |
|
|
|
|
|
// |
|
//! Basic per-display settings that are used in setting/getting the Mosaic mode |
|
typedef struct _NV_MOSAIC_DISPLAY_SETTING_V1 |
|
{ |
|
NvU32 version; //!< Version of this structure |
|
NvU32 width; //!< Per-display width |
|
NvU32 height; //!< Per-display height |
|
NvU32 bpp; //!< Bits per pixel |
|
NvU32 freq; //!< Display frequency |
|
} NV_MOSAIC_DISPLAY_SETTING_V1; |
|
|
|
typedef struct NV_MOSAIC_DISPLAY_SETTING_V2 |
|
{ |
|
NvU32 version; //!< Version of this structure |
|
NvU32 width; //!< Per-display width |
|
NvU32 height; //!< Per-display height |
|
NvU32 bpp; //!< Bits per pixel |
|
NvU32 freq; //!< Display frequency |
|
NvU32 rrx1k; //!< Display frequency in x1k |
|
} NV_MOSAIC_DISPLAY_SETTING_V2; |
|
|
|
typedef NV_MOSAIC_DISPLAY_SETTING_V2 NV_MOSAIC_DISPLAY_SETTING; |
|
|
|
//! Macro for constructing the version field of NV_MOSAIC_DISPLAY_SETTING |
|
#define NVAPI_MOSAIC_DISPLAY_SETTING_VER1 MAKE_NVAPI_VERSION(NV_MOSAIC_DISPLAY_SETTING_V1,1) |
|
#define NVAPI_MOSAIC_DISPLAY_SETTING_VER2 MAKE_NVAPI_VERSION(NV_MOSAIC_DISPLAY_SETTING_V2,2) |
|
#define NVAPI_MOSAIC_DISPLAY_SETTING_VER NVAPI_MOSAIC_DISPLAY_SETTING_VER2 |
|
|
|
|
|
// |
|
// Set a reasonable max number of display settings to support |
|
// so arrays are bound. |
|
// |
|
#define NV_MOSAIC_DISPLAY_SETTINGS_MAX 40 //!< Set a reasonable maximum number of display settings to support |
|
//! so arrays are bound. |
|
|
|
|
|
// |
|
//! This structure is used to contain a list of supported Mosaic topologies |
|
//! along with the display settings that can be used. |
|
typedef struct _NV_MOSAIC_SUPPORTED_TOPO_INFO_V1 |
|
{ |
|
NvU32 version; //!< Version of this structure |
|
NvU32 topoBriefsCount; //!< Number of topologies in below array |
|
NV_MOSAIC_TOPO_BRIEF topoBriefs[NV_MOSAIC_TOPO_MAX]; //!< List of supported topologies with only brief details |
|
NvU32 displaySettingsCount; //!< Number of display settings in below array |
|
NV_MOSAIC_DISPLAY_SETTING_V1 displaySettings[NV_MOSAIC_DISPLAY_SETTINGS_MAX]; //!< List of per display settings possible |
|
|
|
} NV_MOSAIC_SUPPORTED_TOPO_INFO_V1; |
|
|
|
typedef struct _NV_MOSAIC_SUPPORTED_TOPO_INFO_V2 |
|
{ |
|
NvU32 version; //!< Version of this structure |
|
NvU32 topoBriefsCount; //!< Number of topologies in below array |
|
NV_MOSAIC_TOPO_BRIEF topoBriefs[NV_MOSAIC_TOPO_MAX]; //!< List of supported topologies with only brief details |
|
NvU32 displaySettingsCount; //!< Number of display settings in below array |
|
NV_MOSAIC_DISPLAY_SETTING_V2 displaySettings[NV_MOSAIC_DISPLAY_SETTINGS_MAX]; //!< List of per display settings possible |
|
|
|
} NV_MOSAIC_SUPPORTED_TOPO_INFO_V2; |
|
|
|
typedef NV_MOSAIC_SUPPORTED_TOPO_INFO_V2 NV_MOSAIC_SUPPORTED_TOPO_INFO; |
|
|
|
//! Macro forconstructing the version field of NV_MOSAIC_SUPPORTED_TOPO_INFO |
|
#define NVAPI_MOSAIC_SUPPORTED_TOPO_INFO_VER1 MAKE_NVAPI_VERSION(NV_MOSAIC_SUPPORTED_TOPO_INFO_V1,1) |
|
#define NVAPI_MOSAIC_SUPPORTED_TOPO_INFO_VER2 MAKE_NVAPI_VERSION(NV_MOSAIC_SUPPORTED_TOPO_INFO_V2,2) |
|
#define NVAPI_MOSAIC_SUPPORTED_TOPO_INFO_VER NVAPI_MOSAIC_SUPPORTED_TOPO_INFO_VER2 |
|
|
|
|
|
// |
|
// Indices to use to access the topos array within the mosaic topology |
|
#define NV_MOSAIC_TOPO_IDX_DEFAULT 0 |
|
|
|
#define NV_MOSAIC_TOPO_IDX_LEFT_EYE 0 |
|
#define NV_MOSAIC_TOPO_IDX_RIGHT_EYE 1 |
|
#define NV_MOSAIC_TOPO_NUM_EYES 2 |
|
|
|
|
|
// |
|
//! This defines the maximum number of topos that can be in a topo group. |
|
//! At this time, it is set to 2 because our largest topo group (passive |
|
//! stereo) only needs 2 topos (left eye and right eye). |
|
//! |
|
//! If a new topo group with more than 2 topos is added above, then this |
|
//! number will also have to be incremented. |
|
#define NV_MOSAIC_MAX_TOPO_PER_TOPO_GROUP 2 |
|
|
|
|
|
// |
|
//! This structure defines a group of topologies that work together to create one |
|
//! overall layout. All of the supported topologies are represented with this |
|
//! structure. |
|
//! |
|
//! For example, a 'Passive Stereo' topology would be represented with this |
|
//! structure, and would have separate topology details for the left and right eyes. |
|
//! The count would be 2. A 'Basic' topology is also represented by this structure, |
|
//! with a count of 1. |
|
//! |
|
//! The structure is primarily used internally, but is exposed to applications in a |
|
//! read-only fashion because there are some details in it that might be useful |
|
//! (like the number of rows/cols, or connected display information). A user can |
|
//! get the filled-in structure by calling NvAPI_Mosaic_GetTopoGroup(). |
|
//! |
|
//! You can then look at the detailed values within the structure. There are no |
|
//! entrypoints which take this structure as input (effectively making it read-only). |
|
typedef struct |
|
{ |
|
NvU32 version; //!< Version of this structure |
|
NV_MOSAIC_TOPO_BRIEF brief; //!< The brief details of this topo |
|
NvU32 count; //!< Number of topos in array below |
|
NV_MOSAIC_TOPO_DETAILS topos[NV_MOSAIC_MAX_TOPO_PER_TOPO_GROUP]; |
|
|
|
} NV_MOSAIC_TOPO_GROUP; |
|
|
|
//! Macro for constructing the version field of NV_MOSAIC_TOPO_GROUP |
|
#define NVAPI_MOSAIC_TOPO_GROUP_VER MAKE_NVAPI_VERSION(NV_MOSAIC_TOPO_GROUP,1) |
|
|
|
//! @} |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Mosaic_GetSupportedTopoInfo |
|
// |
|
//! DESCRIPTION: This API returns information on the topologies and display resolutions |
|
//! supported by Mosaic mode. |
|
//! |
|
//! NOTE: Not all topologies returned can be set immediately. |
|
//! See 'OUT' Notes below. |
|
//! |
|
//! Once you get the list of supported topologies, you can call |
|
//! NvAPI_Mosaic_GetTopoGroup() with one of the Mosaic topologies if you need |
|
//! more information about it. |
|
//! |
|
//! <b>'IN' Notes:</b> pSupportedTopoInfo->version must be set before calling this function. |
|
//! If the specified version is not supported by this implementation, |
|
//! an error will be returned (NVAPI_INCOMPATIBLE_STRUCT_VERSION). |
|
//! |
|
//! <b>'OUT' Notes:</b> Some of the topologies returned might not be valid for one reason or |
|
//! another. It could be due to mismatched or missing displays. It |
|
//! could also be because the required number of GPUs is not found. |
|
//! At a high level, you can see if the topology is valid and can be enabled |
|
//! by looking at the pSupportedTopoInfo->topoBriefs[xxx].isPossible flag. |
|
//! If this is true, the topology can be enabled. If it |
|
//! is false, you can find out why it cannot be enabled by getting the |
|
//! details of the topology via NvAPI_Mosaic_GetTopoGroup(). From there, |
|
//! look at the validityMask of the individual topologies. The bits can |
|
//! be tested against the NV_MOSAIC_TOPO_VALIDITY_* bits. |
|
//! |
|
//! It is possible for this function to return NVAPI_OK with no topologies |
|
//! listed in the return structure. If this is the case, it means that |
|
//! the current hardware DOES support Mosaic, but with the given configuration |
|
//! no valid topologies were found. This most likely means that SLI was not |
|
//! enabled for the hardware. Once enabled, you should see valid topologies |
|
//! returned from this function. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 185 |
|
//! |
|
//! |
|
//! \param [in,out] pSupportedTopoInfo Information about what topologies and display resolutions |
|
//! are supported for Mosaic. |
|
//! \param [in] type The type of topologies the caller is interested in |
|
//! getting. See NV_MOSAIC_TOPO_TYPE for possible values. |
|
//! |
|
//! \retval ::NVAPI_OK No errors in returning supported topologies. |
|
//! \retval ::NVAPI_NOT_SUPPORTED Mosaic is not supported with the existing hardware. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT One or more arguments passed in are invalid. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED The NvAPI API needs to be initialized first. |
|
//! \retval ::NVAPI_NO_IMPLEMENTATION This entrypoint not available. |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION The version of the structure passed in is not |
|
// compatible with this entry point. |
|
//! \retval ::NVAPI_ERROR: Miscellaneous error occurred. |
|
//! |
|
//! \ingroup mosaicapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Mosaic_GetSupportedTopoInfo(NV_MOSAIC_SUPPORTED_TOPO_INFO *pSupportedTopoInfo, NV_MOSAIC_TOPO_TYPE type); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Mosaic_GetTopoGroup |
|
// |
|
//! DESCRIPTION: This API returns a structure filled with the details |
|
//! of the specified Mosaic topology. |
|
//! |
|
//! If the pTopoBrief passed in matches the current topology, |
|
//! then information in the brief and group structures |
|
//! will reflect what is current. Thus the brief would have |
|
//! the current 'enable' status, and the group would have the |
|
//! current overlap values. If there is no match, then the |
|
//! returned brief has an 'enable' status of FALSE (since it |
|
//! is obviously not enabled), and the overlap values will be 0. |
|
//! |
|
//! <b>'IN' Notes:</b> pTopoGroup->version must be set before calling this function. |
|
//! If the specified version is not supported by this implementation, |
|
//! an error will be returned (NVAPI_INCOMPATIBLE_STRUCT_VERSION). |
|
//! |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 185 |
|
//! |
|
//! \param [in] pTopoBrief The topology for getting the details |
|
//! This must be one of the topology briefs |
|
//! returned from NvAPI_Mosaic_GetSupportedTopoInfo(). |
|
//! \param [in,out] pTopoGroup The topology details matching the brief |
|
//! |
|
//! \retval ::NVAPI_OK Details were retrieved successfully. |
|
//! \retval ::NVAPI_NOT_SUPPORTED Mosaic is not supported with the existing hardware. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT One or more argumentss passed in are invalid. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED The NvAPI API needs to be initialized first. |
|
//! \retval ::NVAPI_NO_IMPLEMENTATION This entrypoint not available. |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION The version of the structure passed in is not |
|
// compatible with this entry point. |
|
//! \retval ::NVAPI_ERROR: Miscellaneous error occurred. |
|
//! |
|
//! \ingroup mosaicapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Mosaic_GetTopoGroup(NV_MOSAIC_TOPO_BRIEF *pTopoBrief, NV_MOSAIC_TOPO_GROUP *pTopoGroup); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Mosaic_GetOverlapLimits |
|
// |
|
//! DESCRIPTION: This API returns the X and Y overlap limits required if |
|
//! the given Mosaic topology and display settings are to be used. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 185 |
|
//! |
|
//! \param [in] pTopoBrief The topology for getting limits |
|
//! This must be one of the topo briefs |
|
//! returned from NvAPI_Mosaic_GetSupportedTopoInfo(). |
|
//! \param [in] pDisplaySetting The display settings for getting the limits. |
|
//! This must be one of the settings |
|
//! returned from NvAPI_Mosaic_GetSupportedTopoInfo(). |
|
//! \param [out] pMinOverlapX X overlap minimum |
|
//! \param [out] pMaxOverlapX X overlap maximum |
|
//! \param [out] pMinOverlapY Y overlap minimum |
|
//! \param [out] pMaxOverlapY Y overlap maximum |
|
//! |
|
//! \retval ::NVAPI_OK Details were retrieved successfully. |
|
//! \retval ::NVAPI_NOT_SUPPORTED Mosaic is not supported with the existing hardware. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT One or more argumentss passed in are invalid. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED The NvAPI API needs to be initialized first. |
|
//! \retval ::NVAPI_NO_IMPLEMENTATION This entrypoint not available. |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION The version of the structure passed in is not |
|
//! compatible with this entry point. |
|
//! \retval ::NVAPI_ERROR Miscellaneous error occurred. |
|
//! |
|
//! \ingroup mosaicapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Mosaic_GetOverlapLimits(NV_MOSAIC_TOPO_BRIEF *pTopoBrief, NV_MOSAIC_DISPLAY_SETTING *pDisplaySetting, NvS32 *pMinOverlapX, NvS32 *pMaxOverlapX, NvS32 *pMinOverlapY, NvS32 *pMaxOverlapY); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Mosaic_SetCurrentTopo |
|
// |
|
//! DESCRIPTION: This API sets the Mosaic topology and performs a mode switch |
|
//! using the given display settings. |
|
//! |
|
//! If NVAPI_OK is returned, the current Mosaic topology was set |
|
//! correctly. Any other status returned means the |
|
//! topology was not set, and remains what it was before this |
|
//! function was called. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 185 |
|
//! |
|
//! \param [in] pTopoBrief The topology to set. This must be one of the topologies returned from |
|
//! NvAPI_Mosaic_GetSupportedTopoInfo(), and it must have an isPossible value of 1. |
|
//! \param [in] pDisplaySetting The per display settings to be used in the Mosaic mode. This must be one of the |
|
//! settings returned from NvAPI_Mosaic_GetSupportedTopoInfo(). |
|
//! \param [in] overlapX The pixel overlap to use between horizontal displays (use positive a number for |
|
//! overlap, or a negative number to create a gap.) If the overlap is out of bounds |
|
//! for what is possible given the topo and display setting, the overlap will be clamped. |
|
//! \param [in] overlapY The pixel overlap to use between vertical displays (use positive a number for |
|
//! overlap, or a negative number to create a gap.) If the overlap is out of bounds for |
|
//! what is possible given the topo and display setting, the overlap will be clamped. |
|
//! \param [in] enable If 1, the topology being set will also be enabled, meaning that the mode set will |
|
//! occur. \n |
|
//! If 0, you don't want to be in Mosaic mode right now, but want to set the current |
|
//! Mosaic topology so you can enable it later with NvAPI_Mosaic_EnableCurrentTopo(). |
|
//! |
|
//! \retval ::NVAPI_OK The Mosaic topology was set. |
|
//! \retval ::NVAPI_NOT_SUPPORTED Mosaic is not supported with the existing hardware. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT One or more argumentss passed in are invalid. |
|
//! \retval ::NVAPI_TOPO_NOT_POSSIBLE The topology passed in is not currently possible. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED The NvAPI API needs to be initialized first. |
|
//! \retval ::NVAPI_NO_IMPLEMENTATION This entrypoint not available. |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION The version of the structure passed in is not |
|
//! compatible with this entrypoint. |
|
//! \retval ::NVAPI_MODE_CHANGE_FAILED There was an error changing the display mode. |
|
//! \retval ::NVAPI_ERROR Miscellaneous error occurred. |
|
//! |
|
//! \ingroup mosaicapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Mosaic_SetCurrentTopo(NV_MOSAIC_TOPO_BRIEF *pTopoBrief, NV_MOSAIC_DISPLAY_SETTING *pDisplaySetting, NvS32 overlapX, NvS32 overlapY, NvU32 enable); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Mosaic_GetCurrentTopo |
|
// |
|
//! DESCRIPTION: This API returns information for the current Mosaic topology. |
|
//! This includes topology, display settings, and overlap values. |
|
//! |
|
//! You can call NvAPI_Mosaic_GetTopoGroup() with the topology |
|
//! if you require more information. |
|
//! |
|
//! If there isn't a current topology, then pTopoBrief->topo will |
|
//! be NV_MOSAIC_TOPO_NONE. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 185 |
|
//! |
|
//! \param [out] pTopoBrief The current Mosaic topology |
|
//! \param [out] pDisplaySetting The current per-display settings |
|
//! \param [out] pOverlapX The pixel overlap between horizontal displays |
|
//! \param [out] pOverlapY The pixel overlap between vertical displays |
|
//! |
|
//! \retval ::NVAPI_OK Success getting current info. |
|
//! \retval ::NVAPI_NOT_SUPPORTED Mosaic is not supported with the existing hardware. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT One or more argumentss passed in are invalid. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED The NvAPI API needs to be initialized first. |
|
//! \retval ::NVAPI_NO_IMPLEMENTATION This entry point not available. |
|
//! \retval ::NVAPI_ERROR Miscellaneous error occurred. |
|
//! |
|
//! \ingroup mosaicapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Mosaic_GetCurrentTopo(NV_MOSAIC_TOPO_BRIEF *pTopoBrief, NV_MOSAIC_DISPLAY_SETTING *pDisplaySetting, NvS32 *pOverlapX, NvS32 *pOverlapY); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Mosaic_EnableCurrentTopo |
|
// |
|
//! DESCRIPTION: This API enables or disables the current Mosaic topology |
|
//! based on the setting of the incoming 'enable' parameter. |
|
//! |
|
//! An "enable" setting enables the current (previously set) Mosaic topology. |
|
//! Note that when the current Mosaic topology is retrieved, it must have an isPossible value of 1 or |
|
//! an error will occur. |
|
//! |
|
//! A "disable" setting disables the current Mosaic topology. |
|
//! The topology information will persist, even across reboots. |
|
//! To re-enable the Mosaic topology, call this function |
|
//! again with the enable parameter set to 1. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 185 |
|
//! |
|
//! \param [in] enable 1 to enable the current Mosaic topo, 0 to disable it. |
|
//! |
|
//! \retval ::NVAPI_OK The Mosaic topo was enabled/disabled. |
|
//! \retval ::NVAPI_NOT_SUPPORTED Mosaic is not supported with the existing hardware. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT One or more arguments passed in are invalid. |
|
//! \retval ::NVAPI_TOPO_NOT_POSSIBLE The current topology is not currently possible. |
|
//! \retval ::NVAPI_MODE_CHANGE_FAILED There was an error changing the display mode. |
|
//! \retval ::NVAPI_ERROR: Miscellaneous error occurred. |
|
//! |
|
//! \ingroup mosaicapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Mosaic_EnableCurrentTopo(NvU32 enable); |
|
|
|
//! \ingroup mosaicapi |
|
//! @{ |
|
typedef struct _NV_MOSAIC_GRID_TOPO_DISPLAY_V1 |
|
{ |
|
NvU32 displayId; //!< DisplayID of the display |
|
NvS32 overlapX; //!< (+overlap, -gap) |
|
NvS32 overlapY; //!< (+overlap, -gap) |
|
NV_ROTATE rotation; //!< Rotation of display |
|
NvU32 cloneGroup; //!< Reserved, must be 0 |
|
} NV_MOSAIC_GRID_TOPO_DISPLAY_V1; |
|
|
|
typedef enum _NV_PIXEL_SHIFT_TYPE |
|
{ |
|
NV_PIXEL_SHIFT_TYPE_NO_PIXEL_SHIFT = 0, //!< No pixel shift will be applied to this display. |
|
NV_PIXEL_SHIFT_TYPE_2x2_TOP_LEFT_PIXELS = 1, //!< This display will be used to scanout top left pixels in 2x2 PixelShift configuration |
|
NV_PIXEL_SHIFT_TYPE_2x2_BOTTOM_RIGHT_PIXELS = 2, //!< This display will be used to scanout bottom right pixels in 2x2 PixelShift configuration |
|
} NV_PIXEL_SHIFT_TYPE; |
|
|
|
typedef struct _NV_MOSAIC_GRID_TOPO_DISPLAY_V2 |
|
{ |
|
NvU32 version; //!< Version of this structure |
|
|
|
NvU32 displayId; //!< DisplayID of the display |
|
NvS32 overlapX; //!< (+overlap, -gap) |
|
NvS32 overlapY; //!< (+overlap, -gap) |
|
NV_ROTATE rotation; //!< Rotation of display |
|
NvU32 cloneGroup; //!< Reserved, must be 0 |
|
NV_PIXEL_SHIFT_TYPE pixelShiftType; //!< Type of the pixel shift enabled display |
|
} NV_MOSAIC_GRID_TOPO_DISPLAY_V2; |
|
|
|
#ifndef NV_MOSAIC_GRID_TOPO_DISPLAY_VER |
|
|
|
typedef NV_MOSAIC_GRID_TOPO_DISPLAY_V1 NV_MOSAIC_GRID_TOPO_DISPLAY; |
|
|
|
#endif |
|
|
|
typedef struct _NV_MOSAIC_GRID_TOPO_V1 |
|
{ |
|
NvU32 version; //!< Version of this structure |
|
NvU32 rows; //!< Number of rows |
|
NvU32 columns; //!< Number of columns |
|
NvU32 displayCount; //!< Number of display details |
|
NvU32 applyWithBezelCorrect : 1; //!< When enabling and doing the modeset, do we switch to the bezel-corrected resolution |
|
NvU32 immersiveGaming : 1; //!< Enable as immersive gaming instead of Mosaic SLI (for Quadro-boards only) |
|
NvU32 baseMosaic : 1; //!< Enable as Base Mosaic (Panoramic) instead of Mosaic SLI (for NVS and Quadro-boards only) |
|
NvU32 driverReloadAllowed : 1; //!< If necessary, reloading the driver is permitted (for Vista and above only). Will not be persisted. Value undefined on get. |
|
NvU32 acceleratePrimaryDisplay : 1; //!< Enable SLI acceleration on the primary display while in single-wide mode (For Immersive Gaming only). Will not be persisted. Value undefined on get. |
|
NvU32 reserved : 27; //!< Reserved, must be 0 |
|
NV_MOSAIC_GRID_TOPO_DISPLAY_V1 displays[NV_MOSAIC_MAX_DISPLAYS]; //!< Displays are done as [(row * columns) + column] |
|
NV_MOSAIC_DISPLAY_SETTING_V1 displaySettings; //!< Display settings |
|
} NV_MOSAIC_GRID_TOPO_V1; |
|
|
|
typedef struct _NV_MOSAIC_GRID_TOPO_V2 |
|
{ |
|
NvU32 version; //!< Version of this structure |
|
NvU32 rows; //!< Number of rows |
|
NvU32 columns; //!< Number of columns |
|
NvU32 displayCount; //!< Number of display details |
|
NvU32 applyWithBezelCorrect : 1; //!< When enabling and doing the modeset, do we switch to the bezel-corrected resolution |
|
NvU32 immersiveGaming : 1; //!< Enable as immersive gaming instead of Mosaic SLI (for Quadro-boards only) |
|
NvU32 baseMosaic : 1; //!< Enable as Base Mosaic (Panoramic) instead of Mosaic SLI (for NVS and Quadro-boards only) |
|
NvU32 driverReloadAllowed : 1; //!< If necessary, reloading the driver is permitted (for Vista and above only). Will not be persisted. Value undefined on get. |
|
NvU32 acceleratePrimaryDisplay : 1; //!< Enable SLI acceleration on the primary display while in single-wide mode (For Immersive Gaming only). Will not be persisted. Value undefined on get. |
|
NvU32 pixelShift : 1; //!< Enable Pixel shift |
|
NvU32 reserved : 26; //!< Reserved, must be 0 |
|
NV_MOSAIC_GRID_TOPO_DISPLAY_V2 displays[NV_MOSAIC_MAX_DISPLAYS]; //!< Displays are done as [(row * columns) + column] |
|
NV_MOSAIC_DISPLAY_SETTING_V1 displaySettings; //!< Display settings |
|
} NV_MOSAIC_GRID_TOPO_V2; |
|
|
|
//! Macro for constructing the version field of ::NV_MOSAIC_GRID_TOPO |
|
#define NV_MOSAIC_GRID_TOPO_VER1 MAKE_NVAPI_VERSION(NV_MOSAIC_GRID_TOPO_V1,1) |
|
#define NV_MOSAIC_GRID_TOPO_VER2 MAKE_NVAPI_VERSION(NV_MOSAIC_GRID_TOPO_V2,2) |
|
#ifndef NV_MOSAIC_GRID_TOPO_VER |
|
|
|
typedef NV_MOSAIC_GRID_TOPO_V2 NV_MOSAIC_GRID_TOPO; |
|
|
|
//! Macro for constructing the version field of ::NV_MOSAIC_GRID_TOPO |
|
#define NV_MOSAIC_GRID_TOPO_VER NV_MOSAIC_GRID_TOPO_VER2 |
|
|
|
#endif |
|
|
|
//! @} |
|
|
|
//! since Release R290 |
|
|
|
#define NV_MOSAIC_DISPLAYCAPS_PROBLEM_DISPLAY_ON_INVALID_GPU NV_BIT(0) |
|
#define NV_MOSAIC_DISPLAYCAPS_PROBLEM_DISPLAY_ON_WRONG_CONNECTOR NV_BIT(1) |
|
#define NV_MOSAIC_DISPLAYCAPS_PROBLEM_NO_COMMON_TIMINGS NV_BIT(2) |
|
#define NV_MOSAIC_DISPLAYCAPS_PROBLEM_NO_EDID_AVAILABLE NV_BIT(3) |
|
#define NV_MOSAIC_DISPLAYCAPS_PROBLEM_MISMATCHED_OUTPUT_TYPE NV_BIT(4) |
|
#define NV_MOSAIC_DISPLAYCAPS_PROBLEM_NO_DISPLAY_CONNECTED NV_BIT(5) |
|
#define NV_MOSAIC_DISPLAYCAPS_PROBLEM_NO_GPU_TOPOLOGY NV_BIT(6) |
|
#define NV_MOSAIC_DISPLAYCAPS_PROBLEM_NOT_SUPPORTED NV_BIT(7) |
|
#define NV_MOSAIC_DISPLAYCAPS_PROBLEM_NO_SLI_BRIDGE NV_BIT(8) |
|
#define NV_MOSAIC_DISPLAYCAPS_PROBLEM_ECC_ENABLED NV_BIT(9) |
|
#define NV_MOSAIC_DISPLAYCAPS_PROBLEM_GPU_TOPOLOGY_NOT_SUPPORTED NV_BIT(10) |
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Mosaic_SetDisplayGrids |
|
// |
|
//! DESCRIPTION: Sets a new display topology, replacing any existing topologies |
|
//! that use the same displays. |
|
//! |
|
//! This function will look for an SLI configuration that will |
|
//! allow the display topology to work. |
|
//! |
|
//! To revert to a single display, specify that display as a 1x1 |
|
//! grid. |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \param [in] pGridTopologies The topology details to set. |
|
//! \param [in] gridCount The number of elements in the pGridTopologies array. |
|
//! \param [in] setTopoFlags Zero or more of the NVAPI_MOSAIC_SETDISPLAYTOPO_FLAG_* |
|
//! flags. |
|
//! |
|
//! |
|
//! \retval ::NVAPI_OK Capabilities have been returned. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT One or more args passed in are invalid. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED The NvAPI API needs to be initialized first |
|
//! \retval ::NVAPI_NO_IMPLEMENTATION This entrypoint not available |
|
//! \retval ::NVAPI_NO_ACTIVE_SLI_TOPOLOGY No matching GPU topologies could be found. |
|
//! \retval ::NVAPI_TOPO_NOT_POSSIBLE One or more of the display grids are not valid. |
|
//! \retval ::NVAPI_ERROR Miscellaneous error occurred |
|
//! \ingroup mosaicapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
|
|
//! Do not change the current GPU topology. If the NO_DRIVER_RELOAD bit is not |
|
//! specified, then it may still require a driver reload. |
|
#define NV_MOSAIC_SETDISPLAYTOPO_FLAG_CURRENT_GPU_TOPOLOGY NV_BIT(0) |
|
|
|
//! Do not allow a driver reload. That is, stick with the same master GPU as well as the |
|
//! same SLI configuration. |
|
#define NV_MOSAIC_SETDISPLAYTOPO_FLAG_NO_DRIVER_RELOAD NV_BIT(1) |
|
|
|
//! When choosing a GPU topology, choose the topology with the best performance. |
|
//! Without this flag, it will choose the topology that uses the smallest number |
|
//! of GPU's. |
|
#define NV_MOSAIC_SETDISPLAYTOPO_FLAG_MAXIMIZE_PERFORMANCE NV_BIT(2) |
|
|
|
//! Do not return an error if no configuration will work with all of the grids. |
|
#define NV_MOSAIC_SETDISPLAYTOPO_FLAG_ALLOW_INVALID NV_BIT(3) |
|
|
|
NVAPI_INTERFACE NvAPI_Mosaic_SetDisplayGrids(__in_ecount(gridCount) NV_MOSAIC_GRID_TOPO *pGridTopologies, __in NvU32 gridCount, __in NvU32 setTopoFlags); |
|
|
|
|
|
//! \ingroup mosaicapi |
|
//! Indicates that a display's position in the grid is sub-optimal. |
|
#define NV_MOSAIC_DISPLAYTOPO_WARNING_DISPLAY_POSITION NV_BIT(0) |
|
|
|
//! \ingroup mosaicapi |
|
//! Indicates that SetDisplaySettings would need to perform a driver reload. |
|
#define NV_MOSAIC_DISPLAYTOPO_WARNING_DRIVER_RELOAD_REQUIRED NV_BIT(1) |
|
|
|
//! \ingroup mosaicapi |
|
typedef struct |
|
{ |
|
NvU32 version; |
|
NvU32 errorFlags; //!< (OUT) Any of the NV_MOSAIC_DISPLAYTOPO_ERROR_* flags. |
|
NvU32 warningFlags; //!< (OUT) Any of the NV_MOSAIC_DISPLAYTOPO_WARNING_* flags. |
|
|
|
NvU32 displayCount; //!< (OUT) The number of valid entries in the displays array. |
|
struct |
|
{ |
|
NvU32 displayId; //!< (OUT) The DisplayID of this display. |
|
NvU32 errorFlags; //!< (OUT) Any of the NV_MOSAIC_DISPLAYCAPS_PROBLEM_* flags. |
|
NvU32 warningFlags; //!< (OUT) Any of the NV_MOSAIC_DISPLAYTOPO_WARNING_* flags. |
|
|
|
NvU32 supportsRotation : 1; //!< (OUT) This display can be rotated |
|
NvU32 reserved : 31; //!< (OUT) reserved |
|
} displays[NVAPI_MAX_DISPLAYS]; |
|
} NV_MOSAIC_DISPLAY_TOPO_STATUS; |
|
|
|
//! \ingroup mosaicapi |
|
#define NV_MOSAIC_DISPLAY_TOPO_STATUS_VER MAKE_NVAPI_VERSION(NV_MOSAIC_DISPLAY_TOPO_STATUS,1) |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Mosaic_ValidateDisplayGrids |
|
// |
|
//! DESCRIPTION: Determines if a list of grid topologies is valid. It will choose an SLI |
|
//! configuration in the same way that NvAPI_Mosaic_SetDisplayGrids() does. |
|
//! |
|
//! On return, each element in the pTopoStatus array will contain any errors or |
|
//! warnings about each grid topology. If any error flags are set, then the topology |
|
//! is not valid. If any warning flags are set, then the topology is valid, but |
|
//! sub-optimal. |
|
//! |
|
//! If the ALLOW_INVALID flag is set, then it will continue to validate the grids |
|
//! even if no SLI configuration will allow all of the grids. In this case, a grid |
|
//! grid with no matching GPU topology will have the error |
|
//! flags NO_GPU_TOPOLOGY or NOT_SUPPORTED set. |
|
//! |
|
//! If the ALLOW_INVALID flag is not set and no matching SLI configuration is |
|
//! found, then it will skip the rest of the validation and return |
|
//! NVAPI_NO_ACTIVE_SLI_TOPOLOGY. |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \param [in] setTopoFlags Zero or more of the NVAPI_MOSAIC_SETDISPLAYTOPO_FLAG_* |
|
//! flags. |
|
//! \param [in] pGridTopologies The array of grid topologies to verify. |
|
//! \param [in,out] pTopoStatus The array of problems and warnings with each grid topology. |
|
//! \param [in] gridCount The number of elements in the pGridTopologies and |
|
//! pTopoStatus arrays. |
|
//! |
|
//! |
|
//! \retval ::NVAPI_OK: Capabilities have been returned. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT: One or more args passed in are invalid. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED: The NvAPI API needs to be initialized first |
|
//! \retval ::NVAPI_NO_IMPLEMENTATION: This entrypoint not available |
|
//! \retval ::NVAPI_NO_ACTIVE_SLI_TOPOLOGY: No matching GPU topologies could be found. |
|
//! \retval ::NVAPI_ERROR: Miscellaneous error occurred |
|
//! |
|
//! \ingroup mosaicapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Mosaic_ValidateDisplayGrids(__in NvU32 setTopoFlags, |
|
__in_ecount(gridCount) NV_MOSAIC_GRID_TOPO *pGridTopologies, |
|
__inout_ecount_full(gridCount) NV_MOSAIC_DISPLAY_TOPO_STATUS *pTopoStatus, |
|
__in NvU32 gridCount); |
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Mosaic_EnumDisplayModes |
|
// |
|
//! DESCRIPTION: Determines the set of available display modes for a given grid topology. |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \param [in] pGridTopology The grid topology to use. |
|
//! \param [in,out] pDisplaySettings A pointer to an array of display settings to populate, |
|
//! or NULL to find out the total number of available modes. |
|
//! \param [in,out] pDisplayCount If pDisplaySettings is not NULL, then pDisplayCount |
|
//! should point to the number of elements in the |
|
//! pDisplaySettings array. On return, it will contain the |
|
//! number of modes that were actually returned. If |
|
//! pDisplaySettings is NULL, then pDisplayCount will receive |
|
//! the total number of modes that are available. |
|
//! |
|
//! |
|
//! \retval ::NVAPI_OK Capabilities have been returned. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT One or more args passed in are invalid. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED The NvAPI API needs to be initialized first |
|
//! \retval ::NVAPI_NO_IMPLEMENTATION This entrypoint not available |
|
//! \retval ::NVAPI_ERROR Miscellaneous error occurred |
|
//! |
|
//! \ingroup mosaciapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Mosaic_EnumDisplayModes(__in NV_MOSAIC_GRID_TOPO *pGridTopology, |
|
__inout_ecount_part_opt(*pDisplayCount, *pDisplayCount) NV_MOSAIC_DISPLAY_SETTING *pDisplaySettings, |
|
__inout NvU32 *pDisplayCount); |
|
|
|
|
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Mosaic_EnumDisplayGrids |
|
// |
|
//! DESCRIPTION: Enumerates the current active grid topologies. This includes Mosaic, IG, and |
|
//! Panoramic topologies, as well as single displays. |
|
//! |
|
//! If pGridTopologies is NULL, then pGridCount will be set to the number of active |
|
//! grid topologies. |
|
//! |
|
//! If pGridTopologies is not NULL, then pGridCount contains the maximum number of |
|
//! grid topologies to return. On return, pGridCount will be set to the number of |
|
//! grid topologies that were returned. |
|
//! |
|
//! \param [out] pGridTopologies The list of active grid topologies. |
|
//! \param [in,out] pGridCount A pointer to the number of grid topologies returned. |
|
//! |
|
//! \retval ::NVAPI_OK Capabilties have been returned. |
|
//! \retval ::NVAPI_END_ENUMERATION There are no more topologies to return. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT One or more args passed in are invalid. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED The NvAPI API needs to be initialized first |
|
//! \retval ::NVAPI_NO_IMPLEMENTATION This entrypoint not available |
|
//! \retval ::NVAPI_ERROR Miscellaneous error occurred |
|
//! |
|
//! \ingroup mosaicapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Mosaic_EnumDisplayGrids(__inout_ecount_part_opt(*pGridCount, *pGridCount) NV_MOSAIC_GRID_TOPO *pGridTopologies, |
|
__inout NvU32 *pGridCount); |
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// ########################################################################### |
|
// DELME_RUSS - DELME_RUSS - DELME_RUSS - DELME_RUSS - DELME_RUSS - DELME_RUSS |
|
// |
|
// Below is the Phase 1 Mosaic stuff, the Phase 2 stuff above is what will remain |
|
// once Phase 2 is complete. For a small amount of time, the two will co-exist. As |
|
// soon as apps (nvapichk, NvAPITestMosaic, and CPL) are updated to use the Phase 2 |
|
// entrypoints, the code below will be deleted. |
|
// |
|
// DELME_RUSS - DELME_RUSS - DELME_RUSS - DELME_RUSS - DELME_RUSS - DELME_RUSS |
|
// ########################################################################### |
|
// |
|
// Supported topos 1x4, 4x1 and 2x2 to start with. |
|
// |
|
// Selected scan out targets can be one per GPU or more than one on the same GPU. |
|
// |
|
// SAMPLE of MOSAIC 1x4 SCAN OUT TOPO with 8 pixel horizontal overlap |
|
// |
|
//+-------------------------++-------------------------++-------------------------++-------------------------+ |
|
//| || || || | |
|
//| || || || | |
|
//| || || || | |
|
//| DVI1 || DVI2 || DVI3 || DVI4 | |
|
//| || || || | |
|
//| || || || | |
|
//| || || || | |
|
//| || || || | |
|
//+-------------------------++-------------------------++-------------------------++-------------------------+ |
|
|
|
|
|
//! \addtogroup mosaicapi |
|
//! @{ |
|
|
|
//! Used in NV_MOSAIC_TOPOLOGY. |
|
#define NVAPI_MAX_MOSAIC_DISPLAY_ROWS 8 |
|
|
|
//! Used in NV_MOSAIC_TOPOLOGY. |
|
#define NVAPI_MAX_MOSAIC_DISPLAY_COLUMNS 8 |
|
|
|
//! Used in NV_MOSAIC_TOPOLOGY. |
|
#define NVAPI_MAX_MOSAIC_TOPOS 16 |
|
|
|
//! Used in NvAPI_GetCurrentMosaicTopology() and NvAPI_SetCurrentMosaicTopology(). |
|
typedef struct |
|
{ |
|
NvU32 version; //!< Version number of the mosaic topology |
|
NvU32 rowCount; //!< Horizontal display count |
|
NvU32 colCount; //!< Vertical display count |
|
|
|
struct |
|
{ |
|
NvPhysicalGpuHandle hPhysicalGPU; //!< Physical GPU to be used in the topology |
|
NvU32 displayOutputId; //!< Connected display target |
|
NvS32 overlapX; //!< Pixels of overlap on the left of target: (+overlap, -gap) |
|
NvS32 overlapY; //!< Pixels of overlap on the top of target: (+overlap, -gap) |
|
|
|
} gpuLayout[NVAPI_MAX_MOSAIC_DISPLAY_ROWS][NVAPI_MAX_MOSAIC_DISPLAY_COLUMNS]; |
|
|
|
} NV_MOSAIC_TOPOLOGY; |
|
|
|
//! Used in NV_MOSAIC_TOPOLOGY. |
|
#define NVAPI_MOSAIC_TOPOLOGY_VER MAKE_NVAPI_VERSION(NV_MOSAIC_TOPOLOGY,1) |
|
|
|
//! Used in NvAPI_GetSupportedMosaicTopologies(). |
|
typedef struct |
|
{ |
|
NvU32 version; |
|
NvU32 totalCount; //!< Count of valid topologies |
|
NV_MOSAIC_TOPOLOGY topos[NVAPI_MAX_MOSAIC_TOPOS]; //!< Maximum number of topologies |
|
|
|
} NV_MOSAIC_SUPPORTED_TOPOLOGIES; |
|
|
|
//! Used in NV_MOSAIC_SUPPORTED_TOPOLOGIES. |
|
#define NVAPI_MOSAIC_SUPPORTED_TOPOLOGIES_VER MAKE_NVAPI_VERSION(NV_MOSAIC_SUPPORTED_TOPOLOGIES,1) |
|
|
|
//!@} |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetSupportedMosaicTopologies |
|
// |
|
//! DESCRIPTION: This API returns all valid Mosaic topologies. |
|
//! |
|
//! SUPPORTED OS: Windows XP |
|
//! |
|
//! |
|
//! \since Release: 177 |
|
//! |
|
//! \param [out] pMosaicTopos An array of valid Mosaic topologies. |
|
//! |
|
//! \retval NVAPI_OK Call succeeded; 1 or more topologies were returned |
|
//! \retval NVAPI_INVALID_ARGUMENT One or more arguments are invalid |
|
//! \retval NVAPI_MIXED_TARGET_TYPES Mosaic topology is only possible with all targets of the same NV_GPU_OUTPUT_TYPE. |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \retval NVAPI_NOT_SUPPORTED Mosaic is not supported with GPUs on this system. |
|
//! \retval NVAPI_NO_ACTIVE_SLI_TOPOLOGY SLI is not enabled, yet needs to be, in order for this function to succeed. |
|
//! |
|
//! \ingroup mosaicapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GetSupportedMosaicTopologies(NV_MOSAIC_SUPPORTED_TOPOLOGIES *pMosaicTopos); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetCurrentMosaicTopology |
|
// |
|
//! DESCRIPTION: This API gets the current Mosaic topology. |
|
//! |
|
//! SUPPORTED OS: Windows XP |
|
//! |
|
//! |
|
//! \since Release: 177 |
|
//! |
|
//! \param [out] pMosaicTopo The current Mosaic topology |
|
//! \param [out] pEnabled TRUE if returned topology is currently enabled, else FALSE |
|
//! |
|
//! \retval NVAPI_OK Call succeeded |
|
//! \retval NVAPI_INVALID_ARGUMENT One or more arguments are invalid |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \retval NVAPI_NOT_SUPPORTED Mosaic is not supported with GPUs on this system. |
|
//! \retval NVAPI_NO_ACTIVE_SLI_TOPOLOGY SLI is not enabled, yet needs to be, in order for this function to succeed. |
|
//! |
|
//! \ingroup mosaicapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GetCurrentMosaicTopology(NV_MOSAIC_TOPOLOGY *pMosaicTopo, NvU32 *pEnabled); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_SetCurrentMosaicTopology |
|
// |
|
//! DESCRIPTION: This API sets the Mosaic topology, and enables it so that the |
|
//! Mosaic display settings are enumerated upon request. |
|
//! |
|
//! SUPPORTED OS: Windows XP |
|
//! |
|
//! |
|
//! \since Release: 177 |
|
//! |
|
//! \param [in] pMosaicTopo A valid Mosaic topology |
|
//! |
|
//! \retval NVAPI_OK Call succeeded |
|
//! \retval NVAPI_INVALID_ARGUMENT One or more arguments are invalid |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \retval NVAPI_NOT_SUPPORTED Mosaic is not supported with GPUs on this system. |
|
//! \retval NVAPI_NO_ACTIVE_SLI_TOPOLOGY SLI is not enabled, yet needs to be, in order for this function to succeed. |
|
//! |
|
//! \ingroup mosaicapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_SetCurrentMosaicTopology(NV_MOSAIC_TOPOLOGY *pMosaicTopo); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_EnableCurrentMosaicTopology |
|
// |
|
//! DESCRIPTION: This API enables or disables the current Mosaic topology. |
|
//! When enabling, the last Mosaic topology will be set. |
|
//! |
|
//! - If enabled, enumeration of display settings will include valid Mosaic resolutions. |
|
//! - If disabled, enumeration of display settings will not include Mosaic resolutions. |
|
//! |
|
//! SUPPORTED OS: Windows XP |
|
//! |
|
//! |
|
//! \since Release: 177 |
|
//! |
|
//! \param [in] enable TRUE to enable the Mosaic Topology, FALSE to disable it. |
|
//! |
|
//! \retval NVAPI_OK Call succeeded |
|
//! \retval NVAPI_INVALID_ARGUMENT One or more arguments are invalid |
|
//! \retval NVAPI_NVIDIA_DEVICE_NOT_FOUND No NVIDIA GPU driving a display was found |
|
//! \retval NVAPI_NOT_SUPPORTED Mosaic is not supported with GPUs on this system. |
|
//! \retval NVAPI_NO_ACTIVE_SLI_TOPOLOGY SLI is not enabled, yet needs to be, in order for this function to succeed. |
|
//! |
|
//! \ingroup mosaicapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_EnableCurrentMosaicTopology(NvU32 enable); |
|
|
|
|
|
#define NVAPI_MAX_GSYNC_DEVICES 4 |
|
|
|
|
|
// Sync Display APIs |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GSync_EnumSyncDevices |
|
// |
|
//! DESCRIPTION: This API returns an array of Sync device handles. A Sync device handle represents a |
|
//! single Sync device on the system. |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! \param [out] nvGSyncHandles- The caller provides an array of handles, which must contain at least |
|
//! NVAPI_MAX_GSYNC_DEVICES elements. The API will zero out the entire array and then fill in one |
|
//! or more handles. If an error occurs, the array is invalid. |
|
//! \param [out] *gsyncCount- The caller provides the storage space. NvAPI_GSync_EnumSyncDevices |
|
//! sets *gsyncCount to indicate how many of the elements in the nvGSyncHandles[] array are valid. |
|
//! If an error occurs, *gsyncCount will be set to zero. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT nvGSyncHandles or gsyncCount is NULL. |
|
//! \retval ::NVAPI_NVIDIA_DEVICE_NOT_FOUND The queried Graphics system does not have any Sync Device. |
|
//! |
|
//! \ingroup gsyncapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GSync_EnumSyncDevices(__out NvGSyncDeviceHandle nvGSyncHandles[NVAPI_MAX_GSYNC_DEVICES], __out NvU32 *gsyncCount); |
|
|
|
|
|
|
|
// GSync boardId values |
|
#define NVAPI_GSYNC_BOARD_ID_P358 856 //!< GSync board ID 0x358, see NV_GSYNC_CAPABILITIES |
|
#define NVAPI_GSYNC_BOARD_ID_P2060 8288 //!< GSync board ID 0x2060, see NV_GSYNC_CAPABILITIES |
|
|
|
|
|
//! Used in NvAPI_GSync_QueryCapabilities(). |
|
typedef struct _NV_GSYNC_CAPABILITIES_V1 |
|
{ |
|
NvU32 version; //!< Version of the structure |
|
NvU32 boardId; //!< Board ID |
|
NvU32 revision; //!< FPGA Revision |
|
NvU32 capFlags; //!< Capabilities of the Sync board. Reserved for future use |
|
} NV_GSYNC_CAPABILITIES_V1; |
|
|
|
typedef NV_GSYNC_CAPABILITIES_V1 NV_GSYNC_CAPABILITIES; |
|
|
|
|
|
//! \ingroup gsyncapi |
|
//! Macro for constructing the version field of NV_GSYNC_CAPABILITIES. |
|
#define NV_GSYNC_CAPABILITIES_VER1 MAKE_NVAPI_VERSION(NV_GSYNC_CAPABILITIES_V1,1) |
|
#define NV_GSYNC_CAPABILITIES_VER NV_GSYNC_CAPABILITIES_VER1 |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GSync_QueryCapabilities |
|
// |
|
//! DESCRIPTION: This API returns the capabilities of the Sync device. |
|
//! |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! \param [in] hNvGSyncDevice- The handle for a Sync device for which the capabilities will be queried. |
|
//! \param [inout] *pNvGSyncCapabilities- The caller provides the storage space. NvAPI_GSync_QueryCapabilities() sets |
|
//! *pNvGSyncCapabilities to the version and capabilities details of the Sync device |
|
//! If an error occurs, *pNvGSyncCapabilities will be set to NULL. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT hNvGSyncDevice is NULL. |
|
//! \retval ::NVAPI_NVIDIA_DEVICE_NOT_FOUND The queried Graphics system does not have any Sync Device. |
|
//! |
|
//! \ingroup gsyncapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GSync_QueryCapabilities(__in NvGSyncDeviceHandle hNvGSyncDevice, __inout NV_GSYNC_CAPABILITIES *pNvGSyncCapabilities); |
|
|
|
|
|
|
|
//! Connector values for a GPU. Used in NV_GSYNC_GPU. |
|
typedef enum _NVAPI_GSYNC_GPU_TOPOLOGY_CONNECTOR |
|
{ |
|
NVAPI_GSYNC_GPU_TOPOLOGY_CONNECTOR_NONE = 0, |
|
NVAPI_GSYNC_GPU_TOPOLOGY_CONNECTOR_PRIMARY = 1, |
|
NVAPI_GSYNC_GPU_TOPOLOGY_CONNECTOR_SECONDARY = 2, |
|
NVAPI_GSYNC_GPU_TOPOLOGY_CONNECTOR_TERTIARY = 3, |
|
NVAPI_GSYNC_GPU_TOPOLOGY_CONNECTOR_QUARTERNARY = 4, |
|
} NVAPI_GSYNC_GPU_TOPOLOGY_CONNECTOR; |
|
|
|
//! Display sync states. Used in NV_GSYNC_DISPLAY. |
|
typedef enum _NVAPI_GSYNC_DISPLAY_SYNC_STATE |
|
{ |
|
NVAPI_GSYNC_DISPLAY_SYNC_STATE_UNSYNCED = 0, |
|
NVAPI_GSYNC_DISPLAY_SYNC_STATE_SLAVE = 1, |
|
NVAPI_GSYNC_DISPLAY_SYNC_STATE_MASTER = 2, |
|
} NVAPI_GSYNC_DISPLAY_SYNC_STATE; |
|
|
|
typedef struct _NV_GSYNC_GPU |
|
{ |
|
NvU32 version; //!< Version of the structure |
|
NvPhysicalGpuHandle hPhysicalGpu; //!< GPU handle |
|
NVAPI_GSYNC_GPU_TOPOLOGY_CONNECTOR connector; //!< Indicates which connector on the device the GPU is connected to. |
|
NvPhysicalGpuHandle hProxyPhysicalGpu; //!< GPU through which hPhysicalGpu is connected to the Sync device (if not directly connected) |
|
//!< - this is NULL otherwise |
|
NvU32 isSynced : 1; //!< Whether this GPU is sync'd or not. |
|
NvU32 reserved : 31; //!< Should be set to ZERO |
|
} NV_GSYNC_GPU; |
|
|
|
typedef struct _NV_GSYNC_DISPLAY |
|
{ |
|
NvU32 version; //!< Version of the structure |
|
NvU32 displayId; //!< display identifier for displays.The GPU to which it is connected, can be retireved from NvAPI_SYS_GetPhysicalGpuFromDisplayId |
|
NvU32 isMasterable : 1; //!< Can this display be the master? (Read only) |
|
NvU32 reserved : 31; //!< Should be set to ZERO |
|
NVAPI_GSYNC_DISPLAY_SYNC_STATE syncState; //!< Is this display slave/master |
|
//!< (Retrieved with topology or set by caller for enable/disable sync) |
|
} NV_GSYNC_DISPLAY; |
|
|
|
#define NV_GSYNC_DISPLAY_VER MAKE_NVAPI_VERSION(NV_GSYNC_DISPLAY,1) |
|
#define NV_GSYNC_GPU_VER MAKE_NVAPI_VERSION(NV_GSYNC_GPU,1) |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GSync_GetTopology |
|
// |
|
//! DESCRIPTION: This API returns the topology for the specified Sync device. |
|
//! |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! \param [in] hNvGSyncDevice- The caller provides the handle for a Sync device for which the topology will be queried. |
|
//! \param [in, out] gsyncGpuCount- It returns number of GPUs connected to Sync device |
|
//! \param [in, out] gsyncGPUs- It returns info about GPUs connected to Sync device |
|
//! \param [in, out] gsyncDisplayCount- It returns number of active displays that belongs to Sync device |
|
//! \param [in, out] gsyncDisplays- It returns info about all active displays that belongs to Sync device |
|
//! |
|
//! HOW TO USE: 1) make a call to get the number of GPUs connected OR displays synced through Sync device |
|
//! by passing the gsyncGPUs OR gsyncDisplays as NULL respectively. Both gsyncGpuCount and gsyncDisplayCount can be retrieved in same call by passing |
|
//! both gsyncGPUs and gsyncDisplays as NULL |
|
//! On call success: |
|
//! 2) Allocate memory based on gsyncGpuCount(for gsyncGPUs) and/or gsyncDisplayCount(for gsyncDisplays) then make a call to populate gsyncGPUs and/or gsyncDisplays respectively. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT hNvGSyncDevice is NULL. |
|
//! \retval ::NVAPI_NVIDIA_DEVICE_NOT_FOUND The queried Graphics system does not have any Sync Device. |
|
//! \retval ::NVAPI_INSUFFICIENT_BUFFER When the actual number of GPUs/displays in the topology exceed the number of elements allocated for SyncGPUs/SyncDisplays respectively. |
|
//! |
|
//! \ingroup gsyncapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GSync_GetTopology(__in NvGSyncDeviceHandle hNvGSyncDevice, __inout_opt NvU32 *gsyncGpuCount, __inout_ecount_part_opt(*gsyncGpuCount, *gsyncGpuCount) NV_GSYNC_GPU *gsyncGPUs, |
|
__inout_opt NvU32 *gsyncDisplayCount, __inout_ecount_part_opt(*gsyncDisplayCount, *gsyncDisplayCount) NV_GSYNC_DISPLAY *gsyncDisplays); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GSync_SetSyncStateSettings |
|
// |
|
//! DESCRIPTION: Sets a new sync state for the displays in system. |
|
//! |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! \param [in] gsyncDisplayCount- The number of displays in gsyncDisplays. |
|
//! \param [in] pGsyncDisplays- The caller provides the structure containing all displays that need to be synchronized in the system. |
|
//! The displays that are not part of pGsyncDisplays, will be un-synchronized. |
|
//! \param [in] flags- Reserved for future use. |
|
//! |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! |
|
//! \retval ::NVAPI_INVALID_ARGUMENT If the display topology or count not valid. |
|
//! \retval ::NVAPI_NVIDIA_DEVICE_NOT_FOUND The queried Graphics system does not have any Sync Device. |
|
//! \retval ::NVAPI_INVALID_SYNC_TOPOLOGY 1.If any mosaic grid is partial. |
|
//! 2.If timing(HVisible/VVisible/refreshRate) applied of any display is different. |
|
//! 3.If There is a across GPU mosaic grid in system and that is not a part of pGsyncDisplays. |
|
//! |
|
//! \ingroup gsyncapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GSync_SetSyncStateSettings(__in NvU32 gsyncDisplayCount, __in_ecount(gsyncDisplayCount) NV_GSYNC_DISPLAY *pGsyncDisplays, __in NvU32 flags); |
|
|
|
|
|
//! \ingroup gsyncapi |
|
|
|
//! Source signal edge to be used for output pulse. See NV_GSYNC_CONTROL_PARAMS. |
|
typedef enum _NVAPI_GSYNC_POLARITY |
|
{ |
|
NVAPI_GSYNC_POLARITY_RISING_EDGE = 0, |
|
NVAPI_GSYNC_POLARITY_FALLING_EDGE = 1, |
|
NVAPI_GSYNC_POLARITY_BOTH_EDGES = 2, |
|
} NVAPI_GSYNC_POLARITY; |
|
|
|
//! Used in NV_GSYNC_CONTROL_PARAMS. |
|
typedef enum _NVAPI_GSYNC_VIDEO_MODE |
|
{ |
|
NVAPI_GSYNC_VIDEO_MODE_NONE = 0, |
|
NVAPI_GSYNC_VIDEO_MODE_TTL = 1, |
|
NVAPI_GSYNC_VIDEO_MODE_NTSCPALSECAM = 2, |
|
NVAPI_GSYNC_VIDEO_MODE_HDTV = 3, |
|
NVAPI_GSYNC_VIDEO_MODE_COMPOSITE = 4, |
|
} NVAPI_GSYNC_VIDEO_MODE; |
|
|
|
//! Used in NV_GSYNC_CONTROL_PARAMS. |
|
typedef enum _NVAPI_GSYNC_SYNC_SOURCE |
|
{ |
|
NVAPI_GSYNC_SYNC_SOURCE_VSYNC = 0, |
|
NVAPI_GSYNC_SYNC_SOURCE_HOUSESYNC = 1, |
|
} NVAPI_GSYNC_SYNC_SOURCE; |
|
|
|
//! Used in NV_GSYNC_CONTROL_PARAMS. |
|
typedef struct _NV_GSYNC_DELAY |
|
{ |
|
NvU32 version; //!< Version of the structure |
|
NvU32 numLines; //!< delay to be induced in number of horizontal lines. |
|
NvU32 numPixels; //!< delay to be induced in number of pixels. |
|
NvU32 maxLines; //!< maximum number of lines supported at current display mode to induce delay. Updated by NvAPI_GSync_GetControlParameters(). Read only. |
|
NvU32 minPixels; //!< minimum number of pixels required at current display mode to induce delay. Updated by NvAPI_GSync_GetControlParameters(). Read only. |
|
} NV_GSYNC_DELAY; |
|
|
|
#define NV_GSYNC_DELAY_VER MAKE_NVAPI_VERSION(NV_GSYNC_DELAY,1) |
|
|
|
//! Used in NvAPI_GSync_GetControlParameters() and NvAPI_GSync_SetControlParameters(). |
|
typedef struct _NV_GSYNC_CONTROL_PARAMS |
|
{ |
|
NvU32 version; //!< Version of the structure |
|
NVAPI_GSYNC_POLARITY polarity; //!< Leading edge / Falling edge / both |
|
NVAPI_GSYNC_VIDEO_MODE vmode; //!< None, TTL, NTSCPALSECAM, HDTV |
|
NvU32 interval; //!< Number of pulses to wait between framelock signal generation |
|
NVAPI_GSYNC_SYNC_SOURCE source; //!< VSync/House sync |
|
NvU32 interlaceMode:1; //!< interlace mode for a Sync device |
|
NvU32 reserved:31; //!< should be set zero |
|
NV_GSYNC_DELAY syncSkew; //!< The time delay between the frame sync signal and the GPUs signal. |
|
NV_GSYNC_DELAY startupDelay; //!< Sync start delay for master. |
|
} NV_GSYNC_CONTROL_PARAMS; |
|
|
|
#define NV_GSYNC_CONTROL_PARAMS_VER MAKE_NVAPI_VERSION(NV_GSYNC_CONTROL_PARAMS,1) |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GSync_GetControlParameters |
|
// |
|
//! DESCRIPTION: This API queries for sync control parameters as defined in NV_GSYNC_CONTROL_PARAMS. |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! \param [in] hNvGSyncDevice- The caller provides the handle of the Sync device for which to get parameters |
|
//! \param [inout] *pGsyncControls- The caller provides the storage space. NvAPI_GSync_GetControlParameters() populates *pGsyncControls with values. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT hNvGSyncDevice is NULL. |
|
//! \retval ::NVAPI_NVIDIA_DEVICE_NOT_FOUND The queried Graphics system does not have any Sync Device. |
|
//! |
|
//! \ingroup gsyncapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GSync_GetControlParameters(__in NvGSyncDeviceHandle hNvGSyncDevice, __inout NV_GSYNC_CONTROL_PARAMS *pGsyncControls); |
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GSync_SetControlParameters |
|
// |
|
//! DESCRIPTION: This API sets control parameters as defined in NV_SYNC_CONTROL_PARAMS. |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! \param [in] hNvGSyncDevice- The caller provides the handle of the Sync device for which to get parameters |
|
//! \param [inout] *pGsyncControls- The caller provides NV_GSYNC_CONTROL_PARAMS. skew and startDelay will be updated to the applied values. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT hNvGSyncDevice is NULL. |
|
//! \retval ::NVAPI_NVIDIA_DEVICE_NOT_FOUND The queried Graphics system does not have any Sync Device. |
|
//! \retval ::NVAPI_SYNC_MASTER_NOT_FOUND Control Parameters can only be set if there is a Sync Master enabled on the Gsync card. |
|
//! |
|
//! \ingroup gsyncapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GSync_SetControlParameters(__in NvGSyncDeviceHandle hNvGSyncDevice, __inout NV_GSYNC_CONTROL_PARAMS *pGsyncControls); |
|
|
|
|
|
|
|
|
|
//! Used in NvAPI_GSync_AdjustSyncDelay() |
|
typedef enum _NVAPI_GSYNC_DELAY_TYPE |
|
{ |
|
NVAPI_GSYNC_DELAY_TYPE_UNKNOWN = 0, |
|
NVAPI_GSYNC_DELAY_TYPE_SYNC_SKEW = 1, |
|
NVAPI_GSYNC_DELAY_TYPE_STARTUP = 2 |
|
} NVAPI_GSYNC_DELAY_TYPE; |
|
|
|
////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GSync_AdjustSyncDelay |
|
// |
|
//! DESCRIPTION: This API adjusts the skew and startDelay to the closest possible values. Use this API before calling NvAPI_GSync_SetControlParameters for skew or startDelay. |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \since Release: 319 |
|
//! |
|
//! \param [in] hNvGSyncDevice- The caller provides the handle of the Sync device for which to get parameters |
|
//! \param [in] delayType- Specifies whether the delay is syncSkew or startupDelay. |
|
//! \param [inout] *pGsyncDelay- The caller provides NV_GSYNC_DELAY. skew and startDelay will be adjusted and updated to the closest values. |
|
//! \param [out] *syncSteps- This parameter is optional. It returns the sync delay in unit steps. If 0, it means either the NV_GSYNC_DELAY::numPixels is less than NV_GSYNC_DELAY::minPixels or NV_GSYNC_DELAY::numOfLines exceeds the NV_GSYNC_DELAY::maxLines. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! |
|
//! \ingroup gsyncapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GSync_AdjustSyncDelay(__in NvGSyncDeviceHandle hNvGSyncDevice, __in NVAPI_GSYNC_DELAY_TYPE delayType, __inout NV_GSYNC_DELAY *pGsyncDelay, __out_opt NvU32* syncSteps); |
|
|
|
|
|
|
|
//! Used in NvAPI_GSync_GetSyncStatus(). |
|
typedef struct _NV_GSYNC_STATUS |
|
{ |
|
NvU32 version; //!< Version of the structure |
|
NvU32 bIsSynced; //!< Is timing in sync? |
|
NvU32 bIsStereoSynced; //!< Does the phase of the timing signal from the GPU = the phase of the master sync signal? |
|
NvU32 bIsSyncSignalAvailable; //!< Is the sync signal available? |
|
} NV_GSYNC_STATUS; |
|
|
|
//! Macro for constructing the version field for NV_GSYNC_STATUS. |
|
#define NV_GSYNC_STATUS_VER MAKE_NVAPI_VERSION(NV_GSYNC_STATUS,1) |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GSync_GetSyncStatus |
|
// |
|
//! DESCRIPTION: This API queries the sync status of a GPU - timing, stereosync and sync signal availability. |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! \param [in] hNvGSyncDevice- Handle of the Sync device |
|
//! \param [in] hPhysicalGpu- GPU to be queried for sync status. |
|
//! \param [out] *status- The caller provides the storage space. NvAPI_GSync_GetSyncStatus() populates *status with |
|
//! values - timing, stereosync and signal availability. On error, *status is set to NULL. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT hNvGSyncDevice is NULL / SyncTarget is NULL. |
|
//! \retval ::NVAPI_NVIDIA_DEVICE_NOT_FOUND The queried Graphics system does not have any G-Sync Device. |
|
//! |
|
//! \ingroup gsyncapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GSync_GetSyncStatus(__in NvGSyncDeviceHandle hNvGSyncDevice, __in NvPhysicalGpuHandle hPhysicalGpu, __inout NV_GSYNC_STATUS *status); |
|
|
|
|
|
//! \ingroup gsyncapi |
|
|
|
#define NVAPI_MAX_RJ45_PER_GSYNC 2 |
|
|
|
//! Used in NV_GSYNC_STATUS_PARAMS. |
|
typedef enum _NVAPI_GSYNC_RJ45_IO |
|
{ |
|
NVAPI_GSYNC_RJ45_OUTPUT = 0, |
|
NVAPI_GSYNC_RJ45_INPUT = 1, |
|
NVAPI_GSYNC_RJ45_UNUSED = 2 //!< This field is used to notify that the framelock is not actually present. |
|
|
|
} NVAPI_GSYNC_RJ45_IO; |
|
|
|
//! \ingroup gsyncapi |
|
//! Used in NvAPI_GSync_GetStatusParameters(). |
|
typedef struct _NV_GSYNC_STATUS_PARAMS |
|
{ |
|
NvU32 version; |
|
NvU32 refreshRate; //!< The refresh rate |
|
NVAPI_GSYNC_RJ45_IO RJ45_IO[NVAPI_MAX_RJ45_PER_GSYNC]; //!< Configured as input / output |
|
NvU32 RJ45_Ethernet[NVAPI_MAX_RJ45_PER_GSYNC]; //!< Connected to ethernet hub? [ERRONEOUSLY CONNECTED!] |
|
NvU32 houseSyncIncoming; //!< Incoming house sync frequency in Hz |
|
NvU32 bHouseSync; //!< Is house sync connected? |
|
} NV_GSYNC_STATUS_PARAMS; |
|
|
|
|
|
//! \ingroup gsyncapi |
|
//! Macro for constructing the version field of NV_GSYNC_STATUS_PARAMS |
|
#define NV_GSYNC_STATUS_PARAMS_VER MAKE_NVAPI_VERSION(NV_GSYNC_STATUS_PARAMS,1) |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GSync_GetStatusParameters |
|
// |
|
//! DESCRIPTION: This API queries for sync status parameters as defined in NV_GSYNC_STATUS_PARAMS. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! \param [in] hNvGSyncDevice The caller provides the handle of the GSync device for which to get parameters |
|
//! \param [out] *pStatusParams The caller provides the storage space. NvAPI_GSync_GetStatusParameters populates *pStatusParams with |
|
//! values. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT hNvGSyncDevice is NULL / pStatusParams is NULL. |
|
//! \retval ::NVAPI_NVIDIA_DEVICE_NOT_FOUND The queried Graphics system does not have any GSync Device. |
|
//! |
|
//! \ingroup gsyncapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_GSync_GetStatusParameters(NvGSyncDeviceHandle hNvGSyncDevice, NV_GSYNC_STATUS_PARAMS *pStatusParams); |
|
|
|
//! @} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(_D3D9_H_) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D9_RegisterResource |
|
// |
|
//! DESCRIPTION: This API binds a resource (surface/texture) so that it can be retrieved |
|
//! internally by NVAPI. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! \param [in] pResource surface/texture |
|
//! |
|
//! \return ::NVAPI_OK, ::NVAPI_ERROR |
|
//! |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D9_RegisterResource(IDirect3DResource9* pResource); |
|
#endif //defined(_D3D9_H_) |
|
#if defined(_D3D9_H_) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D9_UnregisterResource |
|
// |
|
//! DESCRIPTION: This API unbinds a resource (surface/texture) after use. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] pResource surface/texture |
|
//! |
|
//! \return ::NVAPI_OK, ::NVAPI_ERROR |
|
//! |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D9_UnregisterResource(IDirect3DResource9* pResource); |
|
|
|
#endif //defined(_D3D9_H_) |
|
|
|
|
|
|
|
#if defined(_D3D9_H_) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D9_AliasSurfaceAsTexture |
|
// |
|
//! \fn NvAPI_D3D9_AliasSurfaceAsTexture(IDirect3DDevice9* pDev, |
|
//! IDirect3DSurface9* pSurface, |
|
//! IDirect3DTexture9 **ppTexture, |
|
//! DWORD dwFlag); |
|
//! DESCRIPTION: Create a texture that is an alias of a surface registered with NvAPI. The |
|
//! new texture can be bound with IDirect3DDevice9::SetTexture(). Note that the texture must |
|
//! be unbound before drawing to the surface again. |
|
//! Unless the USE_SUPER flag is passed, MSAA surfaces will be resolved before |
|
//! being used as a texture. MSAA depth buffers are resolved with a point filter, |
|
//! and non-depth MSAA surfaces are resolved with a linear filter. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] pDev The D3D device that owns the objects |
|
//! \param [in] pSurface Pointer to a surface that has been registered with NvAPI |
|
//! to which a texture alias is to be provided |
|
//! \param [out] ppTexture Fill with the texture created |
|
//! \param [in] dwFlag NVAPI_ALIAS_SURFACE_FLAG to describe how to handle the texture |
|
//! |
|
//! \retval ::NVAPI_OK completed request |
|
//! \retval ::NVAPI_INVALID_POINTER A null pointer was passed as an argument |
|
//! \retval ::NVAPI_INVALID_ARGUMENT One of the arguments was invalid, probably dwFlag. |
|
//! \retval ::NVAPI_UNREGISTERED_RESOURCE pSurface has not been registered with NvAPI |
|
//! \retval ::NVAPI_ERROR error occurred |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
|
|
//! \ingroup dx |
|
//! See NvAPI_D3D9_AliasSurfaceAsTexture(). |
|
typedef enum { |
|
NVAPI_ALIAS_SURFACE_FLAG_NONE = 0x00000000, |
|
NVAPI_ALIAS_SURFACE_FLAG_USE_SUPER = 0x00000001, //!< Use the surface's msaa buffer directly as a texture, rather than resolving. (This is much slower, but potentially has higher quality.) |
|
NVAPI_ALIAS_SURFACE_FLAG_MASK = 0x00000001 |
|
} NVAPI_ALIAS_SURFACE_FLAG; |
|
|
|
|
|
//! \ingroup dx |
|
NVAPI_INTERFACE NvAPI_D3D9_AliasSurfaceAsTexture(IDirect3DDevice9* pDev, |
|
IDirect3DSurface9* pSurface, |
|
IDirect3DTexture9 **ppTexture, |
|
DWORD dwFlag); |
|
#endif //defined(_D3D9_H_) |
|
#if defined(_D3D9_H_) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D9_StretchRectEx |
|
// |
|
//! DESCRIPTION: This API copies the contents of the source resource to the destination |
|
//! resource. This function can convert |
|
//! between a wider range of surfaces than |
|
//! IDirect3DDevice9::StretchRect. For example, it can copy |
|
//! from a depth/stencil surface to a texture. |
|
//! |
|
//! The source and destination resources *must* be registered |
|
//! with NvAPI before being used with NvAPI_D3D9_StretchRectEx(). |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] pDevice The D3D device that owns the objects. |
|
//! \param [in] pSourceResource Pointer to the source resource. |
|
//! \param [in] pSrcRect Defines the rectangle on the source to copy from. If NULL, copy from the entire resource. |
|
//! \param [in] pDestResource Pointer to the destination resource. |
|
//! \param [in] pDstRect Defines the rectangle on the destination to copy to. If NULL, copy to the entire resource. |
|
//! \param [in] Filter Choose a filtering method: D3DTEXF_NONE, D3DTEXF_POINT, D3DTEXF_LINEAR. |
|
//! |
|
//! \retval ::NVAPI_OK completed request |
|
//! \retval ::NVAPI_INVALID_POINTER An invalid pointer was passed as an argument (probably NULL) |
|
//! \retval ::NVAPI_INVALID_ARGUMENT One of the arguments was invalid |
|
//! \retval ::NVAPI_UNREGISTERED_RESOURCE a resource was passed in without being registered |
|
//! \retval ::NVAPI_ERROR error occurred |
|
//! |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D9_StretchRectEx(IDirect3DDevice9 * pDevice, |
|
IDirect3DResource9 * pSourceResource, |
|
CONST RECT * pSourceRect, |
|
IDirect3DResource9 * pDestResource, |
|
CONST RECT * pDestRect, |
|
D3DTEXTUREFILTERTYPE Filter); |
|
|
|
#endif //defined(_D3D9_H_) |
|
#if defined(_D3D9_H_) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D9_ClearRT |
|
// |
|
//! DESCRIPTION: This API Clears the currently bound render target(s) with the |
|
//! given color |
|
//! |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] pDevice The D3D device that owns the objects. |
|
//! \param [in] dwNumRects The no of rectangles to clear. If 0, clear the entire surface (clipped to viewport) |
|
//! \param [in] pRects Defines the rectangles to clear. Should be NULL if dwNumRects == 0 |
|
//! \param [in] r red component of the clear color |
|
//! \param [in] g green component of the clear color |
|
//! \param [in] b blue component of the clear color |
|
//! \param [in] a alpha component of the clear color |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D9_ClearRT(IDirect3DDevice9 * pDevice, |
|
NvU32 dwNumRects, |
|
CONST RECT * pRects, |
|
float r, float g, float b, float a); |
|
#endif //if defined(_D3D9_H_) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(_D3D9_H_) && defined(__cplusplus) |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D9_GetSurfaceHandle |
|
// |
|
//! This function gets the handle of a given surface. This handle uniquely |
|
//! identifies the surface through all NvAPI entries. |
|
//! |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! \param [in] pSurface Surface to be identified |
|
//! \param [out] pHandle Will be filled by the return handle |
|
//! |
|
//! \return An int which could be an NvAPI status or DX HRESULT code |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D9_GetSurfaceHandle(IDirect3DSurface9 *pSurface, |
|
NVDX_ObjectHandle *pHandle); |
|
|
|
#endif //defined(_D3D9_H_) && defined(__cplusplus) |
|
|
|
#if defined(_D3D9_H_) && defined(__cplusplus) |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! \addtogroup dxvidcontrol |
|
//! @{ |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION_NAME: NvAPI_D3D9_VideoSetStereoInfo |
|
// |
|
//! \fn NvAPI_D3D9_VideoSetStereoInfo(IDirect3DDevice9 *pDev, |
|
//! NV_DX_VIDEO_STEREO_INFO *pStereoInfo); |
|
//! \code |
|
//! DESCRIPTION: This api specifies the stereo format of a surface, so that the |
|
//! surface could be used for stereo video processing or compositing. |
|
//! In particular, this api could be used to link the left and right |
|
//! views of a decoded picture. |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! INPUT: pDev - The device on which the stereo surface will be used |
|
//! pStereoInfo - The stereo format of the surface |
|
//! |
|
//! RETURN STATUS: an int which could be an NvAPI status or DX HRESULT code |
|
//! \endcode |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
#ifndef NV_STEREO_VIDEO_FORMAT_DEFINE |
|
#define NV_STEREO_VIDEO_FORMAT_DEFINE |
|
|
|
|
|
typedef enum _NV_STEREO_VIDEO_FORMAT |
|
{ |
|
NV_STEREO_VIDEO_FORMAT_NOT_STEREO = 0, |
|
|
|
NV_STEREO_VIDEO_FORMAT_SIDE_BY_SIDE_LR = 1, |
|
NV_STEREO_VIDEO_FORMAT_SIDE_BY_SIDE_RL = 2, |
|
NV_STEREO_VIDEO_FORMAT_TOP_BOTTOM_LR = 3, |
|
NV_STEREO_VIDEO_FORMAT_TOP_BOTTOM_RL = 4, |
|
NV_STEREO_VIDEO_FORMAT_ROW_INTERLEAVE_LR = 5, |
|
NV_STEREO_VIDEO_FORMAT_ROW_INTERLEAVE_RL = 6, |
|
NV_STEREO_VIDEO_FORMAT_TWO_FRAMES_LR = 7, |
|
NV_STEREO_VIDEO_FORMAT_MONO_PLUS_OFFSET = 8, |
|
|
|
NV_STEREO_VIDEO_FORMAT_LAST = 9, |
|
} NV_STEREO_VIDEO_FORMAT; |
|
|
|
#endif // NV_STEREO_VIDEO_FORMAT_DEFINE |
|
|
|
|
|
typedef struct _NV_DX_VIDEO_STEREO_INFO { |
|
NvU32 dwVersion; //!< Must be NV_DX_VIDEO_STEREO_INFO_VER |
|
NVDX_ObjectHandle hSurface; //!< The surface whose stereo format is to be set |
|
NVDX_ObjectHandle hLinkedSurface; //!< The linked surface (must be valid when eFormat==NV_STEREO_VIDEO_FORMAT_TWO_FRAMES_LR) |
|
NV_STEREO_VIDEO_FORMAT eFormat; //!< Stereo format of the surface |
|
NvS32 sViewOffset; //!< Signed offset of each view (positive offset indicating left view is shifted left) |
|
BOOL bStereoEnable; //!< Whether stereo rendering should be enabled (if FALSE, only left view will be used) |
|
} NV_DX_VIDEO_STEREO_INFO; |
|
|
|
//! Macro for constructing the version field of ::NV_DX_VIDEO_STEREO_INFO |
|
#define NV_DX_VIDEO_STEREO_INFO_VER MAKE_NVAPI_VERSION(NV_DX_VIDEO_STEREO_INFO,1) |
|
|
|
NVAPI_INTERFACE NvAPI_D3D9_VideoSetStereoInfo(IDirect3DDevice9 *pDev, |
|
NV_DX_VIDEO_STEREO_INFO *pStereoInfo); |
|
|
|
//! @} |
|
#endif //defined(_D3D9_H_) && defined(__cplusplus) |
|
|
|
|
|
|
|
|
|
|
|
|
|
#if defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D11_IsNvShaderExtnOpCodeSupported |
|
// |
|
//! DESCRIPTION: This function checks if a nv HLSL shader extension opcode is |
|
//! supported on current hardware. List of opcodes is in nvShaderExtnEnums.h |
|
//! To use Nvidia HLSL extensions the application must include nvHLSLExtns.h |
|
//! in the hlsl shader code. See nvHLSLExtns.h for more details on supported opcodes. |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \param [in] pDev The device on which to query for support, |
|
//! should be a ID3D11Device+ device |
|
//! \param [in] opCode the opcode to check |
|
//! \param [out] pSupported true if supported, false otherwise |
|
//! |
|
//! RETURN STATUS: This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! \retval :: NVAPI_OK if the call succeeded |
|
//! |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D11_IsNvShaderExtnOpCodeSupported(__in IUnknown *pDev, |
|
__in NvU32 opCode, |
|
__out bool *pSupported); |
|
|
|
#endif //defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
|
|
#if defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D11_SetNvShaderExtnSlot |
|
// |
|
//! DESCRIPTION: This function sets the fake UAV slot that is used by Nvidia HLSL |
|
//! shader extensions. All createShader calls made to the driver after |
|
//! setting this slot would treat writes/reads to this UAV in a |
|
//! different way. Applications are expected to bind null UAV to this slot. |
|
//! The same slot is used for all shader stages. |
|
//! To disable shader extensions the app may set this uav slot |
|
//! to some value that is bigger than the max allowed slot index |
|
//! e.g, 128 or 0xFFFFFFFF. |
|
//! To use Nvidia HLSL extensions the application must include nvHLSLExtns.h |
|
//! in the hlsl shader code. See nvHLSLExtns.h for more details. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \param [in] pDev The device for which to set the extension slot |
|
//! should be a ID3D11Device+ device |
|
//! \param [in] uavSlot the uav slot to use |
|
//! |
|
//! RETURN STATUS: This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! \retval :: NVAPI_OK : success, the uavSlot was set sucessfully |
|
//! |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D11_SetNvShaderExtnSlot(__in IUnknown *pDev, |
|
__in NvU32 uavSlot); |
|
|
|
#endif //defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
|
|
|
|
#if defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D11_BeginUAVOverlapEx |
|
// |
|
//! DESCRIPTION: Causes the driver to skip synchronization that is normally needed when accessing UAVs. |
|
//! Applications must use this with caution otherwise this might cause data hazards when |
|
//! multiple draw calls/compute shader launches are accessing same memory locations |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \param [in] *pDeviceOrContext pointer to D3D11 device, or D3D11 device context |
|
//! \param [in] insertWFIFlags bit fields to indicate which WFI would be inserted (gfx / compute / both). |
|
//! |
|
//! RETURN STATUS: This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
typedef enum _NVAPI_D3D11_INSERTWFI_FLAG |
|
{ |
|
NVAPI_D3D_BEGIN_UAV_OVERLAP_NO_WFI = 0x00000000, //!< no WFI |
|
NVAPI_D3D_BEGIN_UAV_OVERLAP_GFX_WFI = 0x00000001, //!< (bit 0) force graphics WFI |
|
NVAPI_D3D_BEGIN_UAV_OVERLAP_COMP_WFI = 0x00000002, //!< (bit 1) force compute WFI |
|
} NVAPI_D3D11_INSERTWFI_FLAG; |
|
|
|
NVAPI_INTERFACE NvAPI_D3D11_BeginUAVOverlapEx(__in IUnknown *pDeviceOrContext, __in NvU32 insertWFIFlags); |
|
|
|
#endif //defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
|
|
#if defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D11_BeginUAVOverlap |
|
// |
|
//! DESCRIPTION: Causes the driver to skip synchronization that is normally needed when accessing UAVs. |
|
//! Applications must use this with caution otherwise this might cause data hazards when |
|
//! multiple draw calls/compute shader launches are accessing same memory locations |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \param [in] *pDeviceOrContext pointer to D3D11 device, or D3D11 device context |
|
//! |
|
//! RETURN STATUS: This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D11_BeginUAVOverlap(__in IUnknown *pDeviceOrContext); |
|
|
|
#endif //defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
|
|
#if defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D11_EndUAVOverlap |
|
// |
|
//! DESCRIPTION: Re-enables driver synchronization between calls that access same UAVs |
|
//! See NvAPI_D3D_BeginUAVOverlap for more details. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \param [in] *pDeviceOrContext pointer to D3D11 device, or D3D11 device context |
|
//! |
|
//! RETURN STATUS: This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D11_EndUAVOverlap(__in IUnknown *pDeviceOrContext); |
|
|
|
#endif //defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
|
|
#if defined(_D3D9_H_) || defined(__d3d10_h__) || defined(__d3d10_1_h__) || defined(__d3d11_h__) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D_SetFPSIndicatorState |
|
// |
|
//! DESCRIPTION: Display an overlay that tracks the number of times the app presents per second, or, |
|
//! the number of frames-per-second (FPS) |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] bool Whether or not to enable the fps indicator. |
|
//! |
|
//! \return ::NVAPI_OK, |
|
//! ::NVAPI_ERROR |
|
//! |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D_SetFPSIndicatorState(IUnknown *pDev, NvU8 doEnable); |
|
|
|
#endif //if defined(_D3D9_H_) || defined(__d3d10_h__) || defined(__d3d10_1_h__) || defined(__d3d11_h__) |
|
|
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
#if defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__) || defined(__d3d12_h__)) |
|
|
|
enum NVAPI_QUAD_FILLMODE |
|
{ |
|
NVAPI_QUAD_FILLMODE_DISABLED = 0, |
|
NVAPI_QUAD_FILLMODE_BBOX = 1, |
|
NVAPI_QUAD_FILLMODE_FULL_VIEWPORT = 2, |
|
}; |
|
|
|
#endif //defined(__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__) || defined(__d3d12_h__)) |
|
|
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
#if defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
|
|
typedef struct NvAPI_D3D11_RASTERIZER_DESC_EX |
|
{ |
|
// D3D11_RASTERIZER_DESC member variables |
|
D3D11_FILL_MODE FillMode; |
|
D3D11_CULL_MODE CullMode; |
|
BOOL FrontCounterClockwise; |
|
INT DepthBias; |
|
FLOAT DepthBiasClamp; |
|
FLOAT SlopeScaledDepthBias; |
|
BOOL DepthClipEnable; |
|
BOOL ScissorEnable; |
|
BOOL MultisampleEnable; |
|
BOOL AntialiasedLineEnable; |
|
|
|
// NvAPI_D3D11_RASTERIZER_DESC_EX specific member variables |
|
NvU32 ForcedSampleCount; //<! Added DX 11.1, part of _DESC1 version of this struct. |
|
bool ProgrammableSamplePositionsEnable; //<! enable Programmable Samples feature |
|
bool InterleavedSamplingEnable; //<! when jitter is enabled, an app need to fill the whole arrays below, otherwise only as much entries as samples |
|
NvU8 SampleCount; //<! number of samples. In TIR N->1 it needs to match N, in non-TIR it needs to match RT sample count. Ignored if ForcePerSampleInterlock is set |
|
NvU8 SamplePositionsX[16]; //<! x positions in API sample order |
|
NvU8 SamplePositionsY[16]; //<! y positions in API sample order |
|
bool ConservativeRasterEnable; //<! rasterize all pixels a primitive touches in any way instead of just those with the centroid covered. |
|
NVAPI_QUAD_FILLMODE QuadFillMode; //<! Fill a triangle outside its bounds as a screen-aligned quad, matching the tri's bounding-box or filling the full viewport. |
|
bool PostZCoverageEnable; //<! Enable pixel-shader input SV_COVERAGE to account for z-test in early-z mode. |
|
bool CoverageToColorEnable; //<! Enable output of coverage to a color render-target. |
|
NvU8 CoverageToColorRTIndex; //<! Index of RT for coverage-to-color. |
|
NvU32 reserved[16]; //<! reserved for expansion, set to zero. |
|
} NvAPI_D3D11_RASTERIZER_DESC_EX; |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D11_CreateRasterizerState |
|
// |
|
//! \code |
|
//! DESCRIPTION: This function is an extension of ID3D11Device::CreateRasterizerState with additional raster states |
|
//! |
|
//! \param [in] pDevice current d3d device |
|
//! \param [in] pRasterizerDesc Rasterizer state description of type NVAPI_D3D11_RASTERIZER_DESC_EX |
|
//! \param [out] ppRasterizerState ID3D11RasterizerState |
|
//! |
|
//! |
|
//! \return ::NVAPI_OK if the call succeeds. |
|
//! \endcode |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D11_CreateRasterizerState(__in ID3D11Device *pDevice, |
|
__in const NvAPI_D3D11_RASTERIZER_DESC_EX *pRasterizerDesc, |
|
__out ID3D11RasterizerState **ppRasterizerState); |
|
|
|
#endif //defined(__cplusplus) && defined(__d3d11_h__) |
|
|
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
|
|
#if defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D11_AliasMSAATexture2DAsNonMSAA |
|
// |
|
//! \code |
|
//! DESCRIPTION: This function allows creating (aliasing) a non-MSAA Texture2D object using the same memory as the given multi-sampled |
|
//! texture (pInputTex). The surface created would be bloated in width and height but it will have SampleCount = 1 |
|
//! For 2X MSAA: OutTex.Width = InputTex.Width * 2, outTex.Height = InputTex.Height |
|
//! For 4X MSAA: OutTex.Width = InputTex.Width * 2, outTex.Height = InputTex.Height * 2 |
|
//! For 8X MSAA: OutTex.Width = InputTex.Width * 4, outTex.Height = InputTex.Height * 2 |
|
//! Only textures SampleQuality = 0 can be aliased as Non MSAA |
|
//! The app should ensure that original texture is released only after the aliased copy is released. |
|
//! |
|
//! \param [in] pDevice current d3d device |
|
//! \param [in] pInputTex The MultiSampled Texture2D resource that is being aliased |
|
//! \param [out] ppOutTex The aliased non AA copy MultiSampled Texture2D resource |
|
//! |
|
//! |
|
//! \return :: NVAPI_OK if the call succeeds. |
|
//! \endcode |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D11_AliasMSAATexture2DAsNonMSAA(__in ID3D11Device *pDevice, |
|
__in ID3D11Texture2D *pInputTex, |
|
__out ID3D11Texture2D **ppOutTex); |
|
|
|
#endif //defined(__cplusplus) && defined(__d3d11_h__) |
|
|
|
#if defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d12_h__)) && (!defined(CINTERFACE)) |
|
typedef UINT NvAPI_D3D11_SWIZZLE_MODE; |
|
|
|
typedef enum _NV_SWIZZLE_MODE |
|
{ |
|
NV_SWIZZLE_POS_X = 0, |
|
NV_SWIZZLE_NEG_X = 1, |
|
NV_SWIZZLE_POS_Y = 2, |
|
NV_SWIZZLE_NEG_Y = 3, |
|
NV_SWIZZLE_POS_Z = 4, |
|
NV_SWIZZLE_NEG_Z = 5, |
|
NV_SWIZZLE_POS_W = 6, |
|
NV_SWIZZLE_NEG_W = 7 |
|
}NV_SWIZZLE_MODE; |
|
|
|
typedef enum _NV_SWIZZLE_OFFSET |
|
{ |
|
NV_SWIZZLE_OFFSET_X = 0, |
|
NV_SWIZZLE_OFFSET_Y = 4, |
|
NV_SWIZZLE_OFFSET_Z = 8, |
|
NV_SWIZZLE_OFFSET_W = 12 |
|
}NV_SWIZZLE_OFFSET; |
|
|
|
#endif //defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d12_h__)) && (!defined(CINTERFACE)) |
|
|
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
|
|
#if defined (__cplusplus) && defined(__d3d11_h__) && (!defined(CINTERFACE) ) |
|
|
|
typedef enum _NV_FASTGS_FLAGS |
|
{ |
|
NV_FASTGS_USE_VIEWPORT_MASK = 0x01, // Causes SV_ViewportArrayIndex value to be interpreted as a bitmask of viewports to broadcast to. |
|
NV_FASTGS_OFFSET_RT_INDEX_BY_VP_INDEX = 0x02, // Causes SV_RenderTargetArrayIndex value to be offset by the viewport index when broadcasting. |
|
NV_FASTGS_STRICT_API_ORDER = 0x04, // Causes broadcast primitives to be rendered strictly in API order (slow). |
|
// By default, primitives may be batched per viewport to improve performance. |
|
} NV_FASTGS_FLAGS; |
|
|
|
struct NvAPI_D3D11_CREATE_FASTGS_EXPLICIT_DESC_V1 |
|
{ |
|
NvU32 version; // ALWAYS == NVAPI_D3D11_CREATEFASTGSEXPLICIT_VER |
|
NvU32 flags; // A combination of flags from NV_FASTGS_FLAGS |
|
NvAPI_D3D11_SWIZZLE_MODE *pCoordinateSwizzling; // [optional] Array of 16 coordinate swizzle modes, one per viewport. NULL if not used. |
|
// The output x, y, z, and w coordinates of all vertices can be set to any of the coordinates or their |
|
// negated versions i.e. {x, y, z, w, -x, -y, -z, -w}. Coordinates are swizzled before any viewport |
|
// operation occurs i.e. before frustum clipping, scaling, and viewport clipping. And after |
|
// last of vertex/tesselation/geometry shader stage, stream-out and viewport broadcast expansion (see NV_FASTGS_USE_VIEWPORT_MASK) |
|
// pCoordinateSwizzling[i] sets the swizzle-mode of each component for viewport i. |
|
// See NV_SWIZZLE_MODE for values of allowed swizzle modes. |
|
// See NV_SWIZZLE_OFFSET for bit offset from where NV_SWIZZLE_MODE to be set for each component. |
|
// For example : |
|
// 1. To set swizzle for viewport 0 such that - w and z are unchanged and values of x and y are swapped : |
|
// pCoordinateSwizzling[0] = (NV_SWIZZLE_POS_W << NV_SWIZZLE_OFFSET_W) | |
|
// (NV_SWIZZLE_POS_Z << NV_SWIZZLE_OFFSET_Z) | |
|
// (NV_SWIZZLE_POS_X << NV_SWIZZLE_OFFSET_Y) | |
|
// (NV_SWIZZLE_POS_Y << NV_SWIZZLE_OFFSET_X); |
|
// 2. To set swizzle for viewport 0 such that - w, z and y are unchanged and value of x is negated : |
|
// pCoordinateSwizzling[0] = (NV_SWIZZLE_POS_W << NV_SWIZZLE_OFFSET_W) | |
|
// (NV_SWIZZLE_POS_Z << NV_SWIZZLE_OFFSET_Z) | |
|
// (NV_SWIZZLE_POS_Y << NV_SWIZZLE_OFFSET_Y) | |
|
// (NV_SWIZZLE_NEG_X << NV_SWIZZLE_OFFSET_X); |
|
// Need to set some valid combination of swizzle-modes for all viewports, irrespective of whether that viewport is set. |
|
// Invalid swizzle-mode for any viewport (even if that viewport is not set) may result in removal of device. |
|
}; |
|
|
|
#define NVAPI_D3D11_CREATEFASTGSEXPLICIT_VER1 MAKE_NVAPI_VERSION(NvAPI_D3D11_CREATE_FASTGS_EXPLICIT_DESC_V1, 1) |
|
#define NVAPI_D3D11_CREATEFASTGSEXPLICIT_VER NVAPI_D3D11_CREATEFASTGSEXPLICIT_VER1 |
|
|
|
typedef NvAPI_D3D11_CREATE_FASTGS_EXPLICIT_DESC_V1 NvAPI_D3D11_CREATE_FASTGS_EXPLICIT_DESC; |
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D11_CreateFastGeometryShaderExplicit |
|
// |
|
//! \fn NvAPI_D3D11_CreateFastGeometryShaderExplicit |
|
//! |
|
//! DESCRIPTION: This function will create a fast geometry shader written using an "explicit" |
|
//! coding style, rather than converting a standard GS. For the explicit coding |
|
//! style, the GS must be written with maxvertexcount(1), and must pass-through |
|
//! input vertex 0 to the output without modification. |
|
//! |
|
//! Additional per-primitive outputs may also be computed and written to the single |
|
//! output vertex. If these outputs are read by the pixel shader, they must be |
|
//! declared with the "nointerpolation" attribute in the PS input signature; |
|
//! otherwise, visual corruption may occur. Also, unlike D3D API, there is no guarantee |
|
//! that pixel shader will get the default value of an attribute if that attribute is not written |
|
//! by the earlier shader stage in the pipeline. |
|
//! |
|
//! The first four parameters are identical to ID3D11Device::CreateGeometryShader(), |
|
//! so please refer to its documentation for their usage. |
|
//! |
|
//! \since Release: |
|
//! |
|
//! \param [in] pDevice The device pointer |
|
//! \param [in] pShaderBytecode A pointer to the compiled shader. |
|
//! \param [in] BytecodeLength Size of the compiled geometry shader. |
|
//! \param [in] pClassLinkage A pointer to a class linkage interface. Can be NULL. |
|
//! \param [in] pCreateFastGSArgs A pointer to a NvAPI_D3D11_CREATE_FASTGS_EXPLICIT struct. |
|
//! \param [out] ppGeometryShader Address of a pointer to a ID3D11GeometryShader interface. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in |
|
//! #NvAPI_Status. If there are return error codes with specific |
|
//! meaning for this API, they are listed below. |
|
// |
|
//////////////////////////////////////////////////////////////////////////////////////////////////// |
|
|
|
NVAPI_INTERFACE NvAPI_D3D11_CreateFastGeometryShaderExplicit(__in ID3D11Device *pDevice, __in const void *pShaderBytecode, |
|
__in SIZE_T BytecodeLength, __in_opt ID3D11ClassLinkage *pClassLinkage, |
|
__in const NvAPI_D3D11_CREATE_FASTGS_EXPLICIT_DESC *pCreateFastGSArgs, |
|
__out ID3D11GeometryShader **ppGeometryShader); |
|
|
|
#endif //defined(__cplusplus) && defined(__d3d11_h__) && (!defined(CINTERFACE)) |
|
|
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
|
|
#if defined (__cplusplus) && defined(__d3d11_h__) && (!defined(CINTERFACE) ) |
|
//////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D11_CreateFastGeometryShader |
|
// |
|
//! \fn NvAPI_D3D11_CreateFastGeometryShader |
|
//! |
|
//! DESCRIPTION: This function will convert a regular geometry shader into a fast GS variant if possible. |
|
//! It will not do any validation regarding the compatibility of the resulting fast GS with any |
|
//! Pixel shader. The validation has to be done by the application manually. |
|
//! |
|
//! The parameters are identical to ID3D11Device::CreateGeometryShader() |
|
//! so please refer to its documentation for their usage. |
|
//! |
|
//! If the shader is too complex or is not in adequate form to be converted to fast GS |
|
//! this function will simply fail. You should then call ID3D11Device::CreateGeometryShader() |
|
//! to create the regular geometry shader. |
|
//! |
|
//! \since Release: |
|
//! |
|
//! \param [in] pDevice The device pointer |
|
//! \param [in] pShaderBytecode A pointer to the compiled shader. |
|
//! \param [in] BytecodeLength Size of the compiled geometry shader. |
|
//! \param [in] pClassLinkage A pointer to a class linkage interface. Can be NULL. |
|
//! \param [out] ppGeometryShader Address of a pointer to a ID3D11GeometryShader interface. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in |
|
//! #NvAPI_Status. If there are return error codes with specific |
|
//! meaning for this API, they are listed below. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
NVAPI_INTERFACE NvAPI_D3D11_CreateFastGeometryShader(__in ID3D11Device *pDevice, __in const void *pShaderBytecode, |
|
__in SIZE_T BytecodeLength, __in_opt ID3D11ClassLinkage *pClassLinkage, |
|
__out ID3D11GeometryShader **ppGeometryShader); |
|
|
|
#endif //defined(__cplusplus) && defined(__d3d11_h__) && (!defined(CINTERFACE)) |
|
|
|
|
|
#if defined (__cplusplus) && defined(__d3d12_h__) |
|
|
|
//! Enum for CreatePSO extensions. |
|
//! \ingroup dx |
|
typedef enum _NV_PSO_EXTENSION |
|
{ |
|
NV_PSO_RASTER_EXTENSION = 0, |
|
NV_PSO_REQUEST_FASTGS_EXTENSION = 1, |
|
NV_PSO_ENABLE_DEPTH_BOUND_TEST_EXTENSION = 3, |
|
NV_PSO_EXPLICIT_FASTGS_EXTENSION = 4, |
|
}NV_PSO_EXTENSION; |
|
|
|
struct NVAPI_D3D12_PSO_EXTENSION_DESC_V1 |
|
{ |
|
NvU32 baseVersion; //<! Always use NV_PSO_EXTENSION_DESC_VER |
|
NV_PSO_EXTENSION psoExtension; |
|
}; |
|
|
|
#define NV_PSO_EXTENSION_DESC_VER_1 MAKE_NVAPI_VERSION(NVAPI_D3D12_PSO_EXTENSION_DESC_V1, 1) |
|
#define NV_PSO_EXTENSION_DESC_VER NV_PSO_EXTENSION_DESC_VER_1 |
|
|
|
typedef NVAPI_D3D12_PSO_EXTENSION_DESC_V1 NVAPI_D3D12_PSO_EXTENSION_DESC; |
|
|
|
|
|
struct NVAPI_D3D12_PSO_RASTERIZER_STATE_DESC_V1 : public NVAPI_D3D12_PSO_EXTENSION_DESC |
|
{ |
|
NvU32 version; //<! Always use NV_RASTERIZER_PSO_EXTENSION_DESC_VER |
|
// These are additional parameters on the top of D3D12_RASTERIZER_DESC |
|
bool ProgrammableSamplePositionsEnable; //<! enable Programmable Samples feature |
|
bool InterleavedSamplingEnable; //<! when jitter is enabled, an app need to fill the whole arrays below, otherwise only as much entries as samples |
|
NvU8 SampleCount; //<! number of samples. In TIR N->1 it needs to match N, in non-TIR it needs to match RT sample count. Ignored if ForcePerSampleInterlock is set |
|
NvU8 SamplePositionsX[16]; //<! x positions in API sample order |
|
NvU8 SamplePositionsY[16]; //<! y positions in API sample order |
|
NVAPI_QUAD_FILLMODE QuadFillMode; //<! Fill a triangle outside its bounds as a screen-aligned quad, matching the tri's bounding-box or filling the full viewport. |
|
bool PostZCoverageEnable; //<! Enable pixel-shader input SV_COVERAGE to account for z-test in early-z mode. |
|
bool CoverageToColorEnable; //<! Enable output of coverage to a color render-target. |
|
NvU8 CoverageToColorRTIndex; //<! Index of RT for coverage-to-color. |
|
NvU32 reserved[16]; //<! reserved for expansion, set to zero. |
|
}; |
|
|
|
#define NV_RASTERIZER_PSO_EXTENSION_DESC_VER_1 MAKE_NVAPI_VERSION(NVAPI_D3D12_PSO_RASTERIZER_STATE_DESC_V1, 1) |
|
#define NV_RASTERIZER_PSO_EXTENSION_DESC_VER NV_RASTERIZER_PSO_EXTENSION_DESC_VER_1 |
|
|
|
typedef NVAPI_D3D12_PSO_RASTERIZER_STATE_DESC_V1 NVAPI_D3D12_PSO_RASTERIZER_STATE_DESC; |
|
|
|
struct NVAPI_D3D12_PSO_CREATE_FASTGS_EXPLICIT_DESC_V1 : public NVAPI_D3D12_PSO_EXTENSION_DESC |
|
{ |
|
NvU32 version; // ALWAYS == NV_FASTGS_EXPLICIT_PSO_EXTENSION_VER |
|
NvU32 flags; // A combination of flags from NV_FASTGS_FLAGS |
|
NvAPI_D3D11_SWIZZLE_MODE *pCoordinateSwizzling; // [optional] Array of 16 coordinate swizzle modes, one per viewport. NULL if not used. |
|
// The output x, y, z, and w coordinates of all vertices can be set to any of the coordinates or their |
|
// negated versions i.e. {x, y, z, w, -x, -y, -z, -w}. Coordinates are swizzled before any viewport |
|
// operation occurs i.e. before frustum clipping, scaling, and viewport clipping. And after |
|
// last of vertex/tesselation/geometry shader stage, stream-out and viewport broadcast expansion (see NV_FASTGS_USE_VIEWPORT_MASK) |
|
// pCoordinateSwizzling[i] sets the swizzle-mode of each component for viewport i. |
|
// See NV_SWIZZLE_MODE for values of allowed swizzle modes. |
|
// See NV_SWIZZLE_OFFSET for bit offset from where NV_SWIZZLE_MODE to be set for each component. |
|
// For example : |
|
// 1. To set swizzle for viewport 0 such that - w and z are unchanged and values of x and y are swapped : |
|
// pCoordinateSwizzling[0] = (NV_SWIZZLE_POS_W << NV_SWIZZLE_OFFSET_W) | |
|
// (NV_SWIZZLE_POS_Z << NV_SWIZZLE_OFFSET_Z) | |
|
// (NV_SWIZZLE_POS_X << NV_SWIZZLE_OFFSET_Y) | |
|
// (NV_SWIZZLE_POS_Y << NV_SWIZZLE_OFFSET_X); |
|
// 2. To set swizzle for viewport 0 such that - w, z and y are unchanged and value of x is negated : |
|
// pCoordinateSwizzling[0] = (NV_SWIZZLE_POS_W << NV_SWIZZLE_OFFSET_W) | |
|
// (NV_SWIZZLE_POS_Z << NV_SWIZZLE_OFFSET_Z) | |
|
// (NV_SWIZZLE_POS_Y << NV_SWIZZLE_OFFSET_Y) | |
|
// (NV_SWIZZLE_NEG_X << NV_SWIZZLE_OFFSET_X); |
|
// Need to set some valid combination of swizzle-modes for all viewports, irrespective of whether that viewport is set. |
|
// Invalid swizzle-mode for any viewport (even if that viewport is not set) may result in removal of device. |
|
}; |
|
|
|
#define NV_FASTGS_EXPLICIT_PSO_EXTENSION_VER_1 MAKE_NVAPI_VERSION(NVAPI_D3D12_PSO_CREATE_FASTGS_EXPLICIT_DESC_V1, 1) |
|
#define NV_FASTGS_EXPLICIT_PSO_EXTENSION_VER NV_FASTGS_EXPLICIT_PSO_EXTENSION_VER_1 |
|
|
|
typedef NVAPI_D3D12_PSO_CREATE_FASTGS_EXPLICIT_DESC_V1 NVAPI_D3D12_PSO_CREATE_FASTGS_EXPLICIT_DESC; |
|
|
|
|
|
struct NVAPI_D3D12_PSO_REQUEST_FAST_GEOMETRY_SHADER_DESC_V1 : public NVAPI_D3D12_PSO_EXTENSION_DESC |
|
{ |
|
NvU32 version; //<! Always use NV_FAST_GEOMETRY_SHADER_PSO_EXTENSION_VER |
|
}; |
|
|
|
#define NV_FAST_GEOMETRY_SHADER_PSO_EXTENSION_VER_1 MAKE_NVAPI_VERSION(NVAPI_D3D12_PSO_REQUEST_FAST_GEOMETRY_SHADER_DESC_V1, 1) |
|
#define NV_FAST_GEOMETRY_SHADER_PSO_EXTENSION_VER NV_FAST_GEOMETRY_SHADER_PSO_EXTENSION_VER_1 |
|
|
|
typedef NVAPI_D3D12_PSO_REQUEST_FAST_GEOMETRY_SHADER_DESC_V1 NVAPI_D3D12_PSO_REQUEST_FAST_GEOMETRY_SHADER_DESC; |
|
|
|
|
|
struct NVAPI_D3D12_PSO_ENABLE_DEPTH_BOUND_TEST_DESC_V1 : public NVAPI_D3D12_PSO_EXTENSION_DESC |
|
{ |
|
NvU32 version; //<! Always use NV_ENABLE_DEPTH_BOUND_TEST_PSO_EXTENSION_DESC_VER |
|
bool EnableDBT; |
|
}; |
|
|
|
#define NV_ENABLE_DEPTH_BOUND_TEST_PSO_EXTENSION_DESC_VER_1 MAKE_NVAPI_VERSION(NVAPI_D3D12_PSO_ENABLE_DEPTH_BOUND_TEST_DESC_V1, 1) |
|
#define NV_ENABLE_DEPTH_BOUND_TEST_PSO_EXTENSION_DESC_VER NV_ENABLE_DEPTH_BOUND_TEST_PSO_EXTENSION_DESC_VER_1 |
|
|
|
typedef NVAPI_D3D12_PSO_ENABLE_DEPTH_BOUND_TEST_DESC_V1 NVAPI_D3D12_PSO_ENABLE_DEPTH_BOUND_TEST_DESC; |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D12_CreateGraphicsPipelineState |
|
// |
|
//! \code |
|
//! DESCRIPTION: This function will create PSO with provided extensions |
|
//! |
|
//! \param [in] pDevice Current d3d device |
|
//! \param [in] pPSODesc PSO description of type D3D12_GRAPHICS_PIPELINE_STATE_DESC |
|
//! \param [in] numExtensions Number of extensions |
|
//! \param [in] ppExtensions Array of PSO extensions (see NV_PSO_EXTENSION for possible extensions) |
|
//! \param [out] ppPSO Output PSO object of type ID3D12PipelineState |
|
//! |
|
//! SUPPORTED OS: Windows 10 |
|
//! |
|
//! \return ::NVAPI_OK if the call succeeds. |
|
//! \endcode |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
NVAPI_INTERFACE NvAPI_D3D12_CreateGraphicsPipelineState(__in ID3D12Device *pDevice, |
|
__in const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pPSODesc, |
|
NvU32 numExtensions, |
|
__in const NVAPI_D3D12_PSO_EXTENSION_DESC** ppExtensions, |
|
__out ID3D12PipelineState **ppPSO); |
|
|
|
|
|
#endif //defined(__cplusplus) && defined(__d3d12_h__) |
|
|
|
|
|
#if defined (__cplusplus) && defined(__d3d12_h__) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D12_SetDepthBoundsTestValues |
|
// |
|
//! \code |
|
//! DESCRIPTION: This function will set the minDepth and maxDepth values for depth bounds test |
|
//! To enable/ disable depth bounds test use PSO extension NV_PSO_ENABLE_DEPTH_BOUND_TEST_EXTENSION |
|
//! in the nvapi NvAPI_D3D12_CreateGraphicsPipelineState |
|
//! |
|
//! \param [in] pCommandList Command List to set depth bounds test |
|
//! \param [in] minDepth min value for depth bound test |
|
//! \param [in] maxDepth max value for depth bound test |
|
//! |
|
//! The valid values for minDepth and maxDepth are such that 0 <= minDepth <= maxDepth <= 1 |
|
//! |
|
//! SUPPORTED OS: Windows 10 |
|
//! |
|
//! \return ::NVAPI_OK if the call succeeds. |
|
//! \endcode |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
NVAPI_INTERFACE NvAPI_D3D12_SetDepthBoundsTestValues(__in ID3D12GraphicsCommandList *pCommandList, |
|
__in const float minDepth, |
|
__in const float maxDepth); |
|
|
|
#endif //defined(__cplusplus) && defined(__d3d12_h__) |
|
|
|
|
|
#if defined(_D3D9_H_) || defined(__d3d10_h__) || defined(__d3d11_h__) |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! |
|
//! FUNCTION NAME: NvAPI_D3D_IsGSyncCapable |
|
//! DESCRIPTION: This API gets G-Sync capability for the given device context. |
|
//! This is only reliable after the first present call has completed. |
|
//! \param [in] pDeviceOrContext The D3D9, D3D10, D3D11 device, or D3D11 device context |
|
//! \param [in] NVDX_ObjectHandle The handle of primary surface |
|
//! \param [out] pIsGsyncCapable if G-Sync can be enabled, *pIsGsyncCapable is true. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! RETURN STATUS: This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D_IsGSyncCapable(__in IUnknown *pDeviceOrContext, __in NVDX_ObjectHandle primarySurface, __out BOOL *pIsGsyncCapable); |
|
#endif //if defined(_D3D9_H_) || defined(__d3d10_h__) || defined(__d3d11_h__) |
|
|
|
|
|
|
|
#if defined(_D3D9_H_) || defined(__d3d10_h__) || defined(__d3d11_h__) |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! |
|
//! FUNCTION NAME: NvAPI_D3D_IsGSyncActive |
|
//! DESCRIPTION: This API get the G-Sync state for the given device context. |
|
//! This is only reliable after the first present call has completed. |
|
//! As it is a bit time consuming, It should not be called per frame. |
|
//! \param [in] pDeviceOrContext The D3D9, D3D10, D3D11 device, or D3D11 device context |
|
//! \param [in] NVDX_ObjectHandle The handle of primary surface |
|
//! \param [out] pIsGsyncActive if G-Sync is active, *pisGsyncActive is true. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! RETURN STATUS: This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D_IsGSyncActive(__in IUnknown *pDeviceOrContext, __in NVDX_ObjectHandle primarySurface, __out BOOL *pIsGsyncActive); |
|
#endif //if defined(_D3D9_H_) || defined(__d3d10_h__) || defined(__d3d11_h__) |
|
|
|
|
|
|
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
#if defined (__cplusplus) && ( defined(__d3d10_h__) || defined(__d3d10_1_h__) ||defined(__d3d11_h__) ) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D1x_DisableShaderDiskCache |
|
// |
|
//! DESCRIPTION: Disables driver managed caching of shader compilations to disk |
|
//! |
|
//! \param [in] pDevice Device to disabled the shader disk cache on |
|
//! |
|
//! |
|
//! \retval ::NVAPI_OK Shader disk cache was disabled |
|
//! \retval ::NVAPI_ERROR The operation failed. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Argument passed in is invalid. |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D1x_DisableShaderDiskCache(IUnknown *pDevice); |
|
|
|
#endif //defined(__cplusplus) && ( defined(__d3d10_h__) || defined(__d3d10_1_h__) ||defined(__d3d11_h__) ) |
|
|
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
#if defined (__cplusplus) && ( defined(__d3d10_h__) || defined(__d3d10_1_h__) ||defined(__d3d11_h__) ) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D1x_HintCreateLowLatencyDevice |
|
// |
|
//! DESCRIPTION: Hint driver what type of D3D1x device has to be created |
|
//! |
|
//! \param [in] bool true - Next CreateDevice call has to create low latency device. |
|
//! false - Next CreateDevice call has to create normal device. |
|
//! Caller has explicitely change state of the hint from true to false |
|
//! after low latency device is created. |
|
//! Default hint state is false. |
|
//! \retval ::NVAPI_OK Hint is set. |
|
//! \retval ::NVAPI_ERROR Hint was not set. |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D1x_HintCreateLowLatencyDevice(bool bCreateLowLatencyDevice); |
|
|
|
#endif //defined(__cplusplus) && ( defined(__d3d10_h__) || defined(__d3d10_1_h__) ||defined(__d3d11_h__) ) |
|
|
|
|
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
#if defined (__cplusplus) && defined(__d3d11_h__) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D11_MultiGPU_GetCaps |
|
// |
|
//! DESCRIPTION: Request to get multi GPU extension caps. |
|
//! |
|
//! \param [out] pMultiGPUCaps Pointer to a structure returning multi GPU caps |
|
//! \retval ::NVAPI_OK Call succeeded. |
|
//! \retval ::NVAPI_ERROR Call failed. |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! \ingroup dx |
|
typedef struct |
|
{ |
|
NvU32 multiGPUVersion; |
|
NvU32 reserved; |
|
NvU32 nTotalGPUs; |
|
NvU32 nSLIGPUs; |
|
NvU32 videoBridgePresent; |
|
} NV_MULTIGPU_CAPS, *PNV_MULTIGPU_CAPS; |
|
|
|
//! \ingroup dx |
|
NVAPI_INTERFACE NvAPI_D3D11_MultiGPU_GetCaps(__out PNV_MULTIGPU_CAPS pMultiGPUCaps); |
|
|
|
#endif //defined(__cplusplus) && defined(__d3d11_h__) |
|
|
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
#if defined (__cplusplus) && defined(__d3d11_h__) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D11_MultiGPU_Init |
|
// |
|
//! DESCRIPTION: Request to enable/disable multi GPU extension. Also if enabled automatically disables auto stereo. |
|
//! |
|
//! \param [in] bEnable if true enables the extension for all subsequently created devices. Otherwise disables it |
|
//! \retval ::NVAPI_OK Call succeeded. |
|
//! \retval ::NVAPI_ERROR Call failed. |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D11_MultiGPU_Init(__in bool bEnable); |
|
|
|
#endif //defined(__cplusplus) && defined(__d3d11_h__) |
|
|
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
#if defined (__cplusplus) && defined(__d3d11_h__) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D11_CreateMultiGPUDevice |
|
//! \code |
|
//! DESCRIPTION: This function returns ID3D11MultiGPUDevice used for multi GPU VR support |
|
//! |
|
//! \param [in] pDevice current d3d device |
|
//! \param [in] version version of requested ID3D11MultiGPUDevice. |
|
//! \param [out] currentVersion pointer to returned current version of ID3D11MultiGPUDevice. |
|
//! \param [out] ppD3D11MultiGPUDevice pointer to returned ID3D11MultiGPUDevice. |
|
//! \param [in] maxGpus max number of gpus this ID3D11MultiGPUDevice is allowed to use |
|
//! |
|
//! |
|
//! \return ::NVAPI_OK if the call succeeds. |
|
//! \endcode |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
|
|
//! \ingroup dx |
|
|
|
#define NVAPI_COPY_ASYNCHRONOUSLY 1 |
|
#define NVAPI_CPU_RESOURCE 0xffffffff |
|
|
|
DECLARE_INTERFACE(ID3D11MultiGPUDevice_V1) |
|
{ |
|
STDMETHOD_(void,Destroy)(THIS) PURE; |
|
STDMETHOD_(UINT,SetGPUMask)(THIS_ __in UINT GPUMask) PURE; |
|
STDMETHOD_(NvAPI_Status,CopySubresourceRegion)(THIS_ __in ID3D11DeviceContext *pContext, __in ID3D11Resource *pDstResource, __in UINT DstSubresource, |
|
__in UINT DstGPUIndex, __in UINT DstX, __in UINT DstY, __in UINT DstZ, |
|
__in ID3D11Resource *pSrcResource, __in UINT SrcSubresource, __in UINT SrcGPUIndex, |
|
__in const D3D11_BOX *pSrcBox, __in UINT ExtendedFlags = 0) PURE; |
|
#if defined(__d3d11_1_h__) |
|
STDMETHOD_(NvAPI_Status,CopySubresourceRegion1)(THIS_ __in ID3D11DeviceContext1 *pContext1, __in ID3D11Resource *pDstResource, __in UINT DstSubresource, |
|
__in UINT DstGPUIndex, __in UINT DstX, __in UINT DstY, __in UINT DstZ, |
|
__in ID3D11Resource *pSrcResource, __in UINT SrcSubresource, __in UINT SrcGPUIndex, |
|
__in const D3D11_BOX *pSrcBox, __in UINT CopyFlags, __in UINT ExtendedFlags = 0 ) PURE; |
|
#else |
|
STDMETHOD_(NvAPI_Status,CopySubresourceRegion1)(THIS_ __in void *pContext1, __in ID3D11Resource *pDstResource, __in UINT DstSubresource, |
|
__in UINT DstGPUIndex, __in UINT DstX, __in UINT DstY, __in UINT DstZ, |
|
__in ID3D11Resource *pSrcResource, __in UINT SrcSubresource, __in UINT SrcGPUIndex, |
|
__in const D3D11_BOX *pSrcBox, __in UINT CopyFlags, __in UINT ExtendedFlags = 0 ) PURE; |
|
#endif |
|
STDMETHOD_(NvAPI_Status,UpdateSubresource)(THIS_ __in ID3D11DeviceContext *pContext,__in ID3D11Resource *pDstResource, __in UINT DstSubresource, __in UINT DstGPUIndex, |
|
__in const D3D11_BOX *pDstBox, __in const void *pSrcData, __in UINT SrcRowPitch, __in UINT SrcDepthPitch) PURE; |
|
STDMETHOD_(NvAPI_Status,VSSetConstantBuffers)(THIS_ __in ID3D11DeviceContext *pContext, __in UINT GPUMask, __in UINT StartSlot, |
|
__in UINT NumBuffers, __in ID3D11Buffer *const *ppConstantBuffers, |
|
__in UINT *const pFirstConstant = NULL, __in UINT *const pNumConstants = NULL) PURE; |
|
STDMETHOD_(NvAPI_Status,PSSetConstantBuffers)(THIS_ __in ID3D11DeviceContext *pContext, __in UINT GPUMask, __in UINT StartSlot, |
|
__in UINT NumBuffers, __in ID3D11Buffer *const *ppConstantBuffers, |
|
__in UINT *const pFirstConstant = NULL, __in UINT *const pNumConstants = NULL) PURE; |
|
STDMETHOD_(NvAPI_Status,GSSetConstantBuffers)(THIS_ __in ID3D11DeviceContext *pContext, __in UINT GPUMask, __in UINT StartSlot, |
|
__in UINT NumBuffers, __in ID3D11Buffer *const *ppConstantBuffers, |
|
__in UINT *const pFirstConstant = NULL, __in UINT *const pNumConstants = NULL) PURE; |
|
STDMETHOD_(NvAPI_Status,DSSetConstantBuffers)(THIS_ __in ID3D11DeviceContext *pContext, __in UINT GPUMask, __in UINT StartSlot, |
|
__in UINT NumBuffers, __in ID3D11Buffer *const *ppConstantBuffers, |
|
__in UINT *const pFirstConstant = NULL, __in UINT *const pNumConstants = NULL) PURE; |
|
STDMETHOD_(NvAPI_Status,HSSetConstantBuffers)(THIS_ __in ID3D11DeviceContext *pContext, __in UINT GPUMask, __in UINT StartSlot, |
|
__in UINT NumBuffers, __in ID3D11Buffer *const *ppConstantBuffers, |
|
__in UINT *const pFirstConstant = NULL, __in UINT *const pNumConstants = NULL) PURE; |
|
STDMETHOD_(NvAPI_Status,CSSetConstantBuffers)(THIS_ __in ID3D11DeviceContext *pContext, __in UINT GPUMask, __in UINT StartSlot, |
|
__in UINT NumBuffers, __in ID3D11Buffer *const *ppConstantBuffers, |
|
__in UINT *const pFirstConstant = NULL, __in UINT *const pNumConstants = NULL) PURE; |
|
STDMETHOD_(NvAPI_Status,SetViewports)(THIS_ __in ID3D11DeviceContext *pContext, __in UINT GPUMask, __in UINT NumViewports, |
|
__in const D3D11_VIEWPORT *pViewports) PURE; |
|
STDMETHOD_(NvAPI_Status,SetScissorRects)(THIS_ __in ID3D11DeviceContext *pContext, __in UINT GPUMask, __in UINT NumRects, |
|
__in const D3D11_RECT *pRects) PURE; |
|
STDMETHOD_(HRESULT,GetData)(THIS_ __in ID3D11DeviceContext *pContext, __in ID3D11Asynchronous *pAsync, __in UINT GPUIndex, |
|
__out void *pData, __in UINT DataSize, __in UINT GetDataFlags) PURE; |
|
#if defined(__d3d11_2_h__) |
|
STDMETHOD_(NvAPI_Status,UpdateTiles)(THIS_ __in ID3D11DeviceContext2 *pContext2, __in ID3D11Resource *pDestTiledResource, |
|
__in UINT GPUMask, __in const D3D11_TILED_RESOURCE_COORDINATE *pDestTileRegionStartCoordinate, |
|
__in const D3D11_TILE_REGION_SIZE *pDestTileRegionSize, __in const void *pSourceTileData, |
|
__in UINT Flags) PURE; |
|
#else |
|
STDMETHOD_(NvAPI_Status,UpdateTiles)(THIS_ __in void *pContext2, __in ID3D11Resource *pDestTiledResource, |
|
__in UINT GPUMask, __in const void *pDestTileRegionStartCoordinate, |
|
__in const void *pDestTileRegionSize, __in const void *pSourceTileData, |
|
__in UINT Flags) PURE; |
|
#endif |
|
|
|
STDMETHOD_(NvAPI_Status,CreateFences)(THIS_ __in UINT count, __out void **ppFences) PURE; |
|
STDMETHOD_(NvAPI_Status,SetFence)(THIS_ __in UINT GPUIndex, __in void *hFence, __in UINT64 value) PURE; |
|
STDMETHOD_(NvAPI_Status,WaitForFence)(THIS_ __in UINT GPUIMask, __in void *hFence, __in UINT64 value) PURE; |
|
STDMETHOD_(NvAPI_Status,FreeFences)(THIS_ __in UINT count, __in void **ppFences) PURE; |
|
STDMETHOD_(NvAPI_Status,PresentCompositingConfig )(THIS_ __in IUnknown *pSwapChain, __in UINT GPUMask, |
|
__in const D3D11_RECT *pRects, __in UINT flags) PURE; |
|
STDMETHOD_(NvAPI_Status,SetContextGPUMask)(THIS_ __in ID3D11DeviceContext *pContext, __in UINT GPUMask) PURE; |
|
STDMETHOD_(NvAPI_Status,GetVideoBridgeStatus)(THIS_ __in IUnknown *pSwapChain, __in UINT* pVideoBridgeStatus) PURE; |
|
}; |
|
|
|
//! Synchronization macros based on fences. |
|
#define FENCE_SYNCHRONIZATION_START(pMultiGPUDevice, hFence, Value, srcGpu, dstGpu) \ |
|
pMultiGPUDevice->SetFence(dstGpu, hFence, Value); \ |
|
pMultiGPUDevice->WaitForFence(1 << (srcGpu), hFence, Value); \ |
|
Value++; |
|
|
|
#define FENCE_SYNCHRONIZATION_END(pMultiGPUDevice, hFence, Value, srcGpu, dstGpu) \ |
|
pMultiGPUDevice->SetFence(srcGpu, hFence, Value); \ |
|
pMultiGPUDevice->WaitForFence(1 << (dstGpu), hFence, Value); \ |
|
Value++; |
|
|
|
//! PresentCompositingConfig method flags. |
|
#define NVAPI_PRESENT_COMPOSITING_CONFIG_FLAG_USE_VIDEO_BRIDGE 0x01 |
|
#define NVAPI_PRESENT_COMPOSITING_CONFIG_FLAG_CLEAR_OUTBANDS 0x02 |
|
#define NVAPI_PRESENT_COMPOSITING_CONFIG_FLAG_GET_VIDEO_BRIDGE_STATUS 0x80000000 |
|
|
|
#define NVAPI_VIDEO_BRIDGE_STATUS_AVAILABLE 0 |
|
#define NVAPI_VIDEO_BRIDGE_STATUS_NOT_AVAILABLE 1 |
|
#define NVAPI_VIDEO_BRIDGE_STATUS_FAILED_ACCESS 2 |
|
#define NVAPI_VIDEO_BRIDGE_STATUS_UNKNOWN 3 |
|
|
|
#define NVAPI_ALL_GPUS 0 |
|
typedef ID3D11MultiGPUDevice_V1 ID3D11MultiGPUDevice; |
|
|
|
#define ID3D11MultiGPUDevice_VER1 MAKE_NVAPI_VERSION(ID3D11MultiGPUDevice_V1, 1) |
|
#define ID3D11MultiGPUDevice_VER2 MAKE_NVAPI_VERSION(ID3D11MultiGPUDevice_V1, 2) |
|
#define ID3D11MultiGPUDevice_VER ID3D11MultiGPUDevice_VER2 |
|
|
|
#define ALL_GPUS 0 |
|
|
|
//! \ingroup dx |
|
NVAPI_INTERFACE NvAPI_D3D11_CreateMultiGPUDevice(__in ID3D11Device *pDevice, __in ULONG version, __out ULONG *currentVersion, __out ID3D11MultiGPUDevice **ppD3D11MultiGPUDevice, __in UINT maxGpus=ALL_GPUS); |
|
|
|
#endif //defined(__cplusplus) && defined(__d3d11_h__) |
|
|
|
#if defined (__cplusplus) && (defined(__d3d10_h__) || defined(__d3d10_1_h__) || defined(__d3d11_h__)) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D_RegisterDevice |
|
// |
|
//! DESCRIPTION: Tells NvAPI about a D3D device. This must be called prior to using any DX1x |
|
//! deferred-context calls. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \param [in] pDev The ID3D10Device or ID3D11Device to use. |
|
//! |
|
//! RETURN STATUS: This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D_RegisterDevice(__in IUnknown *pDev); |
|
|
|
#endif //if defined(__cplusplus) && (defined(__d3d10_h__) || defined(__d3d10_1_h__) || defined(__d3d11_h__)) |
|
|
|
|
|
|
|
#if defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D11_MultiDrawInstancedIndirect |
|
// |
|
//! DESCRIPTION: Extension of DrawInstancedIndirect that takes a draw count in. The effect of this function is to loop over |
|
//! that draw count and perform the DrawInstancedIndirect operation each time, incrementing the buffer offset |
|
//! by the supplied stride each time. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \param [in] *pDevContext11 Pointer to D3D11 device context (IC or DC) |
|
//! \param [in] drawCount Do DrawInstancedIndirect operation this many times |
|
//! \param [in] *pBuffer ID3D11Buffer that contains the command parameters |
|
//! \param [in] alignedByteOffsetForArgs Start in pBuffer of the command parameters |
|
//! \param [in] alignedByteStrideForArgs Stride of the command parameters - must be >= 4 * sizeof(NvU32) |
|
//! |
|
//! RETURN STATUS: This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! |
|
//! \retval NVAPI_D3D_DEVICE_NOT_REGISTERED When MultiDraw is called on a deferred context, and the device has not yet |
|
//! been registered (NvAPI_D3D_RegisterDevice), this error is returned. |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
NVAPI_INTERFACE NvAPI_D3D11_MultiDrawInstancedIndirect(__in ID3D11DeviceContext *pDevContext11, |
|
__in NvU32 drawCount, |
|
__in ID3D11Buffer *pBuffer, |
|
__in NvU32 alignedByteOffsetForArgs, |
|
__in NvU32 alignedByteStrideForArgs); |
|
|
|
#endif //defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
|
|
|
|
#if defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D11_MultiDrawIndexedInstancedIndirect |
|
// |
|
//! DESCRIPTION: Extension of DrawIndexedInstancedIndirect that takes a draw count in. The effect of this function is to loop over |
|
//! that draw count and perform the DrawIndexedInstancedIndirect operation each time, incrementing the buffer offset |
|
//! by the supplied stride each time. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \param [in] *pDevContext11 Pointer to D3D11 device context (IC or DC) |
|
//! \param [in] drawCount Do DrawIndexedInstancedIndirect operation this many times |
|
//! \param [in] *pBuffer ID3D11Buffer that contains the command parameters |
|
//! \param [in] alignedByteOffsetForArgs Start in pBuffer of the command parameters |
|
//! \param [in] alignedByteStrideForArgs Stride of the command parameters - must be >= 5 * sizeof(NvU32) |
|
//! |
|
//! RETURN STATUS: This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, they are listed below. |
|
//! |
|
//! \retval NVAPI_D3D_DEVICE_NOT_REGISTERED When MultiDraw is called on a deferred context, and the device has not yet |
|
//! been registered (NvAPI_D3D_RegisterDevice), this error is returned. |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
NVAPI_INTERFACE NvAPI_D3D11_MultiDrawIndexedInstancedIndirect(__in ID3D11DeviceContext *pDevContext11, |
|
__in NvU32 drawCount, |
|
__in ID3D11Buffer *pBuffer, |
|
__in NvU32 alignedByteOffsetForArgs, |
|
__in NvU32 alignedByteStrideForArgs); |
|
|
|
#endif //defined (__cplusplus) && (defined(__d3d11_h__) || defined(__d3d11_1_h__)) |
|
|
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
#if defined (__cplusplus) && ( defined(_D3D9_H_) || defined(__d3d10_h__) || defined(__d3d10_1_h__) ||defined(__d3d11_h__) ) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D_ImplicitSLIControl |
|
// |
|
//! This function enables/disables the SLI rendering mode. It has to be called prior to D3D device creation. Once this function is called with DISABLE_IMPLICIT_SLI |
|
//! parameter all subsequently created devices will be forced to run in a single gpu mode until the same function is called with ENABLE_IMPLICIT_SLI parameter. The enable |
|
//! call will force all subsequently created devices to run in default implicit SLI mode being determined by an application profile or a global control panel SLI setting. |
|
//! This NvAPI call is supported in all DX10+ versions of the driver. It is supported on all Windows versions. |
|
//! |
|
//! \retval NVAPI_OK Completed request |
|
//! \retval NVAPI_ERROR Error occurred |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup dx |
|
typedef enum _IMPLICIT_SLI_CONTROL |
|
{ |
|
DISABLE_IMPLICIT_SLI = 0, |
|
ENABLE_IMPLICIT_SLI = 1, |
|
} IMPLICIT_SLI_CONTROL; |
|
|
|
//! \ingroup dx |
|
NVAPI_INTERFACE NvAPI_D3D_ImplicitSLIControl(__in IMPLICIT_SLI_CONTROL implicitSLIControl); |
|
|
|
#endif //defined (__cplusplus) && ( defined(_D3D9_H_) || defined(__d3d10_h__) || defined(__d3d10_1_h__) ||defined(__d3d11_h__) ) |
|
|
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
#if defined(__cplusplus) && ( defined(__d3d10_h__) || defined(__d3d10_1_h__) || defined(__d3d11_h__) ) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D1x_GetLowLatencySupport |
|
// |
|
//! DESCRIPTION: Query support for low latency nodes |
|
//! |
|
//! |
|
//! \param [in] adapterId The adapter ID that specifies the GPU to query. |
|
//! \param [out] pIsLowLatencySupported Returns true if and only if low latency nodes are supported. |
|
//! |
|
//! \retval NVAPI_OK Call succeeded. |
|
//! \retval NVAPI_ERROR Call failed. |
|
//! \retval NVAPI_INVALID_ARGUMENT One or more arguments are invalid. |
|
//! \retval NVAPI_INVALID_POINTER A NULL pointer was passed |
|
//! |
|
//! \ingroup dx |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D1x_GetLowLatencySupport(__in LUID pAdapterId, |
|
__out BOOL *pIsLowLatencySupported); |
|
|
|
#endif //defined(__cplusplus) && ( defined(__d3d10_h__) || defined(__d3d10_1_h__) || defined(__d3d11_h__) ) |
|
|
|
///////////////////////////////////////////////////////////////////////// |
|
// Video Input Output (VIO) API |
|
///////////////////////////////////////////////////////////////////////// |
|
|
|
|
|
|
|
//! \ingroup vidio |
|
//! Unique identifier for VIO owner (process identifier or NVVIOOWNERID_NONE) |
|
typedef NvU32 NVVIOOWNERID; |
|
|
|
|
|
//! \addtogroup vidio |
|
//! @{ |
|
|
|
|
|
#define NVVIOOWNERID_NONE 0 //!< Unregistered ownerId |
|
|
|
|
|
//! Owner type for device |
|
typedef enum _NVVIOOWNERTYPE |
|
{ |
|
NVVIOOWNERTYPE_NONE , //!< No owner for the device |
|
NVVIOOWNERTYPE_APPLICATION , //!< Application owns the device |
|
NVVIOOWNERTYPE_DESKTOP , //!< Desktop transparent mode owns the device (not applicable for video input) |
|
}NVVIOOWNERTYPE; |
|
|
|
// Access rights for NvAPI_VIO_Open() |
|
|
|
//! Read access (not applicable for video output) |
|
#define NVVIO_O_READ 0x00000000 |
|
|
|
//! Write exclusive access (not applicable for video input) |
|
#define NVVIO_O_WRITE_EXCLUSIVE 0x00010001 |
|
|
|
//! |
|
#define NVVIO_VALID_ACCESSRIGHTS (NVVIO_O_READ | \ |
|
NVVIO_O_WRITE_EXCLUSIVE ) |
|
|
|
|
|
//! VIO_DATA.ulOwnerID high-bit is set only if device has been initialized by VIOAPI |
|
//! examined at NvAPI_GetCapabilities|NvAPI_VIO_Open to determine if settings need to be applied from registry or POR state read |
|
#define NVVIO_OWNERID_INITIALIZED 0x80000000 |
|
|
|
//! VIO_DATA.ulOwnerID next-bit is set only if device is currently in exclusive write access mode from NvAPI_VIO_Open() |
|
#define NVVIO_OWNERID_EXCLUSIVE 0x40000000 |
|
|
|
//! VIO_DATA.ulOwnerID lower bits are: |
|
//! NVGVOOWNERTYPE_xxx enumerations indicating use context |
|
#define NVVIO_OWNERID_TYPEMASK 0x0FFFFFFF //!< mask for NVVIOOWNERTYPE_xxx |
|
|
|
|
|
//! @} |
|
|
|
//--------------------------------------------------------------------- |
|
// Enumerations |
|
//--------------------------------------------------------------------- |
|
|
|
|
|
//! \addtogroup vidio |
|
//! @{ |
|
|
|
//! Video signal format and resolution |
|
typedef enum _NVVIOSIGNALFORMAT |
|
{ |
|
NVVIOSIGNALFORMAT_NONE, //!< Invalid signal format |
|
NVVIOSIGNALFORMAT_487I_59_94_SMPTE259_NTSC, //!< 01 487i 59.94Hz (SMPTE259) NTSC |
|
NVVIOSIGNALFORMAT_576I_50_00_SMPTE259_PAL, //!< 02 576i 50.00Hz (SMPTE259) PAL |
|
NVVIOSIGNALFORMAT_1035I_60_00_SMPTE260, //!< 03 1035i 60.00Hz (SMPTE260) |
|
NVVIOSIGNALFORMAT_1035I_59_94_SMPTE260, //!< 04 1035i 59.94Hz (SMPTE260) |
|
NVVIOSIGNALFORMAT_1080I_50_00_SMPTE295, //!< 05 1080i 50.00Hz (SMPTE295) |
|
NVVIOSIGNALFORMAT_1080I_60_00_SMPTE274, //!< 06 1080i 60.00Hz (SMPTE274) |
|
NVVIOSIGNALFORMAT_1080I_59_94_SMPTE274, //!< 07 1080i 59.94Hz (SMPTE274) |
|
NVVIOSIGNALFORMAT_1080I_50_00_SMPTE274, //!< 08 1080i 50.00Hz (SMPTE274) |
|
NVVIOSIGNALFORMAT_1080P_30_00_SMPTE274, //!< 09 1080p 30.00Hz (SMPTE274) |
|
NVVIOSIGNALFORMAT_1080P_29_97_SMPTE274, //!< 10 1080p 29.97Hz (SMPTE274) |
|
NVVIOSIGNALFORMAT_1080P_25_00_SMPTE274, //!< 11 1080p 25.00Hz (SMPTE274) |
|
NVVIOSIGNALFORMAT_1080P_24_00_SMPTE274, //!< 12 1080p 24.00Hz (SMPTE274) |
|
NVVIOSIGNALFORMAT_1080P_23_976_SMPTE274, //!< 13 1080p 23.976Hz (SMPTE274) |
|
NVVIOSIGNALFORMAT_720P_60_00_SMPTE296, //!< 14 720p 60.00Hz (SMPTE296) |
|
NVVIOSIGNALFORMAT_720P_59_94_SMPTE296, //!< 15 720p 59.94Hz (SMPTE296) |
|
NVVIOSIGNALFORMAT_720P_50_00_SMPTE296, //!< 16 720p 50.00Hz (SMPTE296) |
|
NVVIOSIGNALFORMAT_1080I_48_00_SMPTE274, //!< 17 1080I 48.00Hz (SMPTE274) |
|
NVVIOSIGNALFORMAT_1080I_47_96_SMPTE274, //!< 18 1080I 47.96Hz (SMPTE274) |
|
NVVIOSIGNALFORMAT_720P_30_00_SMPTE296, //!< 19 720p 30.00Hz (SMPTE296) |
|
NVVIOSIGNALFORMAT_720P_29_97_SMPTE296, //!< 20 720p 29.97Hz (SMPTE296) |
|
NVVIOSIGNALFORMAT_720P_25_00_SMPTE296, //!< 21 720p 25.00Hz (SMPTE296) |
|
NVVIOSIGNALFORMAT_720P_24_00_SMPTE296, //!< 22 720p 24.00Hz (SMPTE296) |
|
NVVIOSIGNALFORMAT_720P_23_98_SMPTE296, //!< 23 720p 23.98Hz (SMPTE296) |
|
NVVIOSIGNALFORMAT_2048P_30_00_SMPTE372, //!< 24 2048p 30.00Hz (SMPTE372) |
|
NVVIOSIGNALFORMAT_2048P_29_97_SMPTE372, //!< 25 2048p 29.97Hz (SMPTE372) |
|
NVVIOSIGNALFORMAT_2048I_60_00_SMPTE372, //!< 26 2048i 60.00Hz (SMPTE372) |
|
NVVIOSIGNALFORMAT_2048I_59_94_SMPTE372, //!< 27 2048i 59.94Hz (SMPTE372) |
|
NVVIOSIGNALFORMAT_2048P_25_00_SMPTE372, //!< 28 2048p 25.00Hz (SMPTE372) |
|
NVVIOSIGNALFORMAT_2048I_50_00_SMPTE372, //!< 29 2048i 50.00Hz (SMPTE372) |
|
NVVIOSIGNALFORMAT_2048P_24_00_SMPTE372, //!< 30 2048p 24.00Hz (SMPTE372) |
|
NVVIOSIGNALFORMAT_2048P_23_98_SMPTE372, //!< 31 2048p 23.98Hz (SMPTE372) |
|
NVVIOSIGNALFORMAT_2048I_48_00_SMPTE372, //!< 32 2048i 48.00Hz (SMPTE372) |
|
NVVIOSIGNALFORMAT_2048I_47_96_SMPTE372, //!< 33 2048i 47.96Hz (SMPTE372) |
|
|
|
NVVIOSIGNALFORMAT_1080PSF_25_00_SMPTE274, //!< 34 1080PsF 25.00Hz (SMPTE274) |
|
NVVIOSIGNALFORMAT_1080PSF_29_97_SMPTE274, //!< 35 1080PsF 29.97Hz (SMPTE274) |
|
NVVIOSIGNALFORMAT_1080PSF_30_00_SMPTE274, //!< 36 1080PsF 30.00Hz (SMPTE274) |
|
NVVIOSIGNALFORMAT_1080PSF_24_00_SMPTE274, //!< 37 1080PsF 24.00Hz (SMPTE274) |
|
NVVIOSIGNALFORMAT_1080PSF_23_98_SMPTE274, //!< 38 1080PsF 23.98Hz (SMPTE274) |
|
|
|
NVVIOSIGNALFORMAT_1080P_50_00_SMPTE274_3G_LEVEL_A, //!< 39 1080P 50.00Hz (SMPTE274) 3G Level A |
|
NVVIOSIGNALFORMAT_1080P_59_94_SMPTE274_3G_LEVEL_A, //!< 40 1080P 59.94Hz (SMPTE274) 3G Level A |
|
NVVIOSIGNALFORMAT_1080P_60_00_SMPTE274_3G_LEVEL_A, //!< 41 1080P 60.00Hz (SMPTE274) 3G Level A |
|
|
|
NVVIOSIGNALFORMAT_1080P_60_00_SMPTE274_3G_LEVEL_B, //!< 42 1080p 60.00Hz (SMPTE274) 3G Level B |
|
NVVIOSIGNALFORMAT_1080I_60_00_SMPTE274_3G_LEVEL_B, //!< 43 1080i 60.00Hz (SMPTE274) 3G Level B |
|
NVVIOSIGNALFORMAT_2048I_60_00_SMPTE372_3G_LEVEL_B, //!< 44 2048i 60.00Hz (SMPTE372) 3G Level B |
|
NVVIOSIGNALFORMAT_1080P_50_00_SMPTE274_3G_LEVEL_B, //!< 45 1080p 50.00Hz (SMPTE274) 3G Level B |
|
NVVIOSIGNALFORMAT_1080I_50_00_SMPTE274_3G_LEVEL_B, //!< 46 1080i 50.00Hz (SMPTE274) 3G Level B |
|
NVVIOSIGNALFORMAT_2048I_50_00_SMPTE372_3G_LEVEL_B, //!< 47 2048i 50.00Hz (SMPTE372) 3G Level B |
|
NVVIOSIGNALFORMAT_1080P_30_00_SMPTE274_3G_LEVEL_B, //!< 48 1080p 30.00Hz (SMPTE274) 3G Level B |
|
NVVIOSIGNALFORMAT_2048P_30_00_SMPTE372_3G_LEVEL_B, //!< 49 2048p 30.00Hz (SMPTE372) 3G Level B |
|
NVVIOSIGNALFORMAT_1080P_25_00_SMPTE274_3G_LEVEL_B, //!< 50 1080p 25.00Hz (SMPTE274) 3G Level B |
|
NVVIOSIGNALFORMAT_2048P_25_00_SMPTE372_3G_LEVEL_B, //!< 51 2048p 25.00Hz (SMPTE372) 3G Level B |
|
NVVIOSIGNALFORMAT_1080P_24_00_SMPTE274_3G_LEVEL_B, //!< 52 1080p 24.00Hz (SMPTE274) 3G Level B |
|
NVVIOSIGNALFORMAT_2048P_24_00_SMPTE372_3G_LEVEL_B, //!< 53 2048p 24.00Hz (SMPTE372) 3G Level B |
|
NVVIOSIGNALFORMAT_1080I_48_00_SMPTE274_3G_LEVEL_B, //!< 54 1080i 48.00Hz (SMPTE274) 3G Level B |
|
NVVIOSIGNALFORMAT_2048I_48_00_SMPTE372_3G_LEVEL_B, //!< 55 2048i 48.00Hz (SMPTE372) 3G Level B |
|
NVVIOSIGNALFORMAT_1080P_59_94_SMPTE274_3G_LEVEL_B, //!< 56 1080p 59.94Hz (SMPTE274) 3G Level B |
|
NVVIOSIGNALFORMAT_1080I_59_94_SMPTE274_3G_LEVEL_B, //!< 57 1080i 59.94Hz (SMPTE274) 3G Level B |
|
NVVIOSIGNALFORMAT_2048I_59_94_SMPTE372_3G_LEVEL_B, //!< 58 2048i 59.94Hz (SMPTE372) 3G Level B |
|
NVVIOSIGNALFORMAT_1080P_29_97_SMPTE274_3G_LEVEL_B, //!< 59 1080p 29.97Hz (SMPTE274) 3G Level B |
|
NVVIOSIGNALFORMAT_2048P_29_97_SMPTE372_3G_LEVEL_B, //!< 60 2048p 29.97Hz (SMPTE372) 3G Level B |
|
NVVIOSIGNALFORMAT_1080P_23_98_SMPTE274_3G_LEVEL_B, //!< 61 1080p 29.98Hz (SMPTE274) 3G Level B |
|
NVVIOSIGNALFORMAT_2048P_23_98_SMPTE372_3G_LEVEL_B, //!< 62 2048p 29.98Hz (SMPTE372) 3G Level B |
|
NVVIOSIGNALFORMAT_1080I_47_96_SMPTE274_3G_LEVEL_B, //!< 63 1080i 47.96Hz (SMPTE274) 3G Level B |
|
NVVIOSIGNALFORMAT_2048I_47_96_SMPTE372_3G_LEVEL_B, //!< 64 2048i 47.96Hz (SMPTE372) 3G Level B |
|
|
|
NVVIOSIGNALFORMAT_END //!< 65 To indicate end of signal format list |
|
|
|
}NVVIOSIGNALFORMAT; |
|
|
|
//! SMPTE standards format |
|
typedef enum _NVVIOVIDEOSTANDARD |
|
{ |
|
NVVIOVIDEOSTANDARD_SMPTE259 , //!< SMPTE259 |
|
NVVIOVIDEOSTANDARD_SMPTE260 , //!< SMPTE260 |
|
NVVIOVIDEOSTANDARD_SMPTE274 , //!< SMPTE274 |
|
NVVIOVIDEOSTANDARD_SMPTE295 , //!< SMPTE295 |
|
NVVIOVIDEOSTANDARD_SMPTE296 , //!< SMPTE296 |
|
NVVIOVIDEOSTANDARD_SMPTE372 , //!< SMPTE372 |
|
}NVVIOVIDEOSTANDARD; |
|
|
|
//! HD or SD video type |
|
typedef enum _NVVIOVIDEOTYPE |
|
{ |
|
NVVIOVIDEOTYPE_SD , //!< Standard-definition (SD) |
|
NVVIOVIDEOTYPE_HD , //!< High-definition (HD) |
|
}NVVIOVIDEOTYPE; |
|
|
|
//! Interlace mode |
|
typedef enum _NVVIOINTERLACEMODE |
|
{ |
|
NVVIOINTERLACEMODE_PROGRESSIVE , //!< Progressive (p) |
|
NVVIOINTERLACEMODE_INTERLACE , //!< Interlace (i) |
|
NVVIOINTERLACEMODE_PSF , //!< Progressive Segment Frame (psf) |
|
}NVVIOINTERLACEMODE; |
|
|
|
//! Video data format |
|
typedef enum _NVVIODATAFORMAT |
|
{ |
|
NVVIODATAFORMAT_UNKNOWN = -1 , //!< Invalid DataFormat |
|
NVVIODATAFORMAT_R8G8B8_TO_YCRCB444 , //!< R8:G8:B8 => YCrCb (4:4:4) |
|
NVVIODATAFORMAT_R8G8B8A8_TO_YCRCBA4444 , //!< R8:G8:B8:A8 => YCrCbA (4:4:4:4) |
|
NVVIODATAFORMAT_R8G8B8Z10_TO_YCRCBZ4444 , //!< R8:G8:B8:Z10 => YCrCbZ (4:4:4:4) |
|
NVVIODATAFORMAT_R8G8B8_TO_YCRCB422 , //!< R8:G8:B8 => YCrCb (4:2:2) |
|
NVVIODATAFORMAT_R8G8B8A8_TO_YCRCBA4224 , //!< R8:G8:B8:A8 => YCrCbA (4:2:2:4) |
|
NVVIODATAFORMAT_R8G8B8Z10_TO_YCRCBZ4224 , //!< R8:G8:B8:Z10 => YCrCbZ (4:2:2:4) |
|
NVVIODATAFORMAT_X8X8X8_444_PASSTHRU , //!< R8:G8:B8 => RGB (4:4:4) |
|
NVVIODATAFORMAT_X8X8X8A8_4444_PASSTHRU , //!< R8:G8:B8:A8 => RGBA (4:4:4:4) |
|
NVVIODATAFORMAT_X8X8X8Z10_4444_PASSTHRU , //!< R8:G8:B8:Z10 => RGBZ (4:4:4:4) |
|
NVVIODATAFORMAT_X10X10X10_444_PASSTHRU , //!< Y10:CR10:CB10 => YCrCb (4:4:4) |
|
NVVIODATAFORMAT_X10X8X8_444_PASSTHRU , //!< Y10:CR8:CB8 => YCrCb (4:4:4) |
|
NVVIODATAFORMAT_X10X8X8A10_4444_PASSTHRU , //!< Y10:CR8:CB8:A10 => YCrCbA (4:4:4:4) |
|
NVVIODATAFORMAT_X10X8X8Z10_4444_PASSTHRU , //!< Y10:CR8:CB8:Z10 => YCrCbZ (4:4:4:4) |
|
NVVIODATAFORMAT_DUAL_R8G8B8_TO_DUAL_YCRCB422 , //!< R8:G8:B8 + R8:G8:B8 => YCrCb (4:2:2 + 4:2:2) |
|
NVVIODATAFORMAT_DUAL_X8X8X8_TO_DUAL_422_PASSTHRU , //!< Y8:CR8:CB8 + Y8:CR8:CB8 => YCrCb (4:2:2 + 4:2:2) |
|
NVVIODATAFORMAT_R10G10B10_TO_YCRCB422 , //!< R10:G10:B10 => YCrCb (4:2:2) |
|
NVVIODATAFORMAT_R10G10B10_TO_YCRCB444 , //!< R10:G10:B10 => YCrCb (4:4:4) |
|
NVVIODATAFORMAT_X12X12X12_444_PASSTHRU , //!< X12:X12:X12 => XXX (4:4:4) |
|
NVVIODATAFORMAT_X12X12X12_422_PASSTHRU , //!< X12:X12:X12 => XXX (4:2:2) |
|
NVVIODATAFORMAT_Y10CR10CB10_TO_YCRCB422 , //!< Y10:CR10:CB10 => YCrCb (4:2:2) |
|
NVVIODATAFORMAT_Y8CR8CB8_TO_YCRCB422 , //!< Y8:CR8:CB8 => YCrCb (4:2:2) |
|
NVVIODATAFORMAT_Y10CR8CB8A10_TO_YCRCBA4224 , //!< Y10:CR8:CB8:A10 => YCrCbA (4:2:2:4) |
|
NVVIODATAFORMAT_R10G10B10_TO_RGB444 , //!< R10:G10:B10 => RGB (4:4:4) |
|
NVVIODATAFORMAT_R12G12B12_TO_YCRCB444 , //!< R12:G12:B12 => YCrCb (4:4:4) |
|
NVVIODATAFORMAT_R12G12B12_TO_YCRCB422 , //!< R12:G12:B12 => YCrCb (4:2:2) |
|
}NVVIODATAFORMAT; |
|
|
|
//! Video output area |
|
typedef enum _NVVIOOUTPUTAREA |
|
{ |
|
NVVIOOUTPUTAREA_FULLSIZE , //!< Output to entire video resolution (full size) |
|
NVVIOOUTPUTAREA_SAFEACTION , //!< Output to centered 90% of video resolution (safe action) |
|
NVVIOOUTPUTAREA_SAFETITLE , //!< Output to centered 80% of video resolution (safe title) |
|
}NVVIOOUTPUTAREA; |
|
|
|
//! Synchronization source |
|
typedef enum _NVVIOSYNCSOURCE |
|
{ |
|
NVVIOSYNCSOURCE_SDISYNC , //!< SDI Sync (Digital input) |
|
NVVIOSYNCSOURCE_COMPSYNC , //!< COMP Sync (Composite input) |
|
}NVVIOSYNCSOURCE; |
|
|
|
//! Composite synchronization type |
|
typedef enum _NVVIOCOMPSYNCTYPE |
|
{ |
|
NVVIOCOMPSYNCTYPE_AUTO , //!< Auto-detect |
|
NVVIOCOMPSYNCTYPE_BILEVEL , //!< Bi-level signal |
|
NVVIOCOMPSYNCTYPE_TRILEVEL , //!< Tri-level signal |
|
}NVVIOCOMPSYNCTYPE; |
|
|
|
//! Video input output status |
|
typedef enum _NVVIOINPUTOUTPUTSTATUS |
|
{ |
|
NVINPUTOUTPUTSTATUS_OFF , //!< Not in use |
|
NVINPUTOUTPUTSTATUS_ERROR , //!< Error detected |
|
NVINPUTOUTPUTSTATUS_SDI_SD , //!< SDI (standard-definition) |
|
NVINPUTOUTPUTSTATUS_SDI_HD , //!< SDI (high-definition) |
|
}NVVIOINPUTOUTPUTSTATUS; |
|
|
|
//! Synchronization input status |
|
typedef enum _NVVIOSYNCSTATUS |
|
{ |
|
NVVIOSYNCSTATUS_OFF , //!< Sync not detected |
|
NVVIOSYNCSTATUS_ERROR , //!< Error detected |
|
NVVIOSYNCSTATUS_SYNCLOSS , //!< Genlock in use, format mismatch with output |
|
NVVIOSYNCSTATUS_COMPOSITE , //!< Composite sync |
|
NVVIOSYNCSTATUS_SDI_SD , //!< SDI sync (standard-definition) |
|
NVVIOSYNCSTATUS_SDI_HD , //!< SDI sync (high-definition) |
|
}NVVIOSYNCSTATUS; |
|
|
|
//! Video Capture Status |
|
typedef enum _NVVIOCAPTURESTATUS |
|
{ |
|
NVVIOSTATUS_STOPPED , //!< Sync not detected |
|
NVVIOSTATUS_RUNNING , //!< Error detected |
|
NVVIOSTATUS_ERROR , //!< Genlock in use, format mismatch with output |
|
}NVVIOCAPTURESTATUS; |
|
|
|
//! Video Capture Status |
|
typedef enum _NVVIOSTATUSTYPE |
|
{ |
|
NVVIOSTATUSTYPE_IN , //!< Input Status |
|
NVVIOSTATUSTYPE_OUT , //!< Output Status |
|
}NVVIOSTATUSTYPE; |
|
|
|
|
|
//! Assumption, maximum 4 SDI input and 4 SDI output cards supported on a system |
|
#define NVAPI_MAX_VIO_DEVICES 8 |
|
|
|
//! 4 physical jacks supported on each SDI input card. |
|
#define NVAPI_MAX_VIO_JACKS 4 |
|
|
|
|
|
//! Each physical jack an on SDI input card can have |
|
//! two "channels" in the case of "3G" VideoFormats, as specified |
|
//! by SMPTE 425; for non-3G VideoFormats, only the first channel within |
|
//! a physical jack is valid. |
|
#define NVAPI_MAX_VIO_CHANNELS_PER_JACK 2 |
|
|
|
//! 4 Streams, 1 per physical jack |
|
#define NVAPI_MAX_VIO_STREAMS 4 |
|
|
|
#define NVAPI_MIN_VIO_STREAMS 1 |
|
|
|
//! SDI input supports a max of 2 links per stream |
|
#define NVAPI_MAX_VIO_LINKS_PER_STREAM 2 |
|
|
|
|
|
#define NVAPI_MAX_FRAMELOCK_MAPPING_MODES 20 |
|
|
|
//! Min number of capture images |
|
#define NVAPI_GVI_MIN_RAW_CAPTURE_IMAGES 1 |
|
|
|
//! Max number of capture images |
|
#define NVAPI_GVI_MAX_RAW_CAPTURE_IMAGES 32 |
|
|
|
//! Default number of capture images |
|
#define NVAPI_GVI_DEFAULT_RAW_CAPTURE_IMAGES 5 |
|
|
|
|
|
|
|
// Data Signal notification events. These need a event handler in RM. |
|
// Register/Unregister and PopEvent NVAPI's are already available. |
|
|
|
//! Device configuration |
|
typedef enum _NVVIOCONFIGTYPE |
|
{ |
|
NVVIOCONFIGTYPE_IN , //!< Input Status |
|
NVVIOCONFIGTYPE_OUT , //!< Output Status |
|
}NVVIOCONFIGTYPE; |
|
|
|
typedef enum _NVVIOCOLORSPACE |
|
{ |
|
NVVIOCOLORSPACE_UNKNOWN, |
|
NVVIOCOLORSPACE_YCBCR, |
|
NVVIOCOLORSPACE_YCBCRA, |
|
NVVIOCOLORSPACE_YCBCRD, |
|
NVVIOCOLORSPACE_GBR, |
|
NVVIOCOLORSPACE_GBRA, |
|
NVVIOCOLORSPACE_GBRD, |
|
} NVVIOCOLORSPACE; |
|
|
|
//! Component sampling |
|
typedef enum _NVVIOCOMPONENTSAMPLING |
|
{ |
|
NVVIOCOMPONENTSAMPLING_UNKNOWN, |
|
NVVIOCOMPONENTSAMPLING_4444, |
|
NVVIOCOMPONENTSAMPLING_4224, |
|
NVVIOCOMPONENTSAMPLING_444, |
|
NVVIOCOMPONENTSAMPLING_422 |
|
} NVVIOCOMPONENTSAMPLING; |
|
|
|
typedef enum _NVVIOBITSPERCOMPONENT |
|
{ |
|
NVVIOBITSPERCOMPONENT_UNKNOWN, |
|
NVVIOBITSPERCOMPONENT_8, |
|
NVVIOBITSPERCOMPONENT_10, |
|
NVVIOBITSPERCOMPONENT_12, |
|
} NVVIOBITSPERCOMPONENT; |
|
|
|
typedef enum _NVVIOLINKID |
|
{ |
|
NVVIOLINKID_UNKNOWN, |
|
NVVIOLINKID_A, |
|
NVVIOLINKID_B, |
|
NVVIOLINKID_C, |
|
NVVIOLINKID_D |
|
} NVVIOLINKID; |
|
|
|
|
|
typedef enum _NVVIOANCPARITYCOMPUTATION |
|
{ |
|
NVVIOANCPARITYCOMPUTATION_AUTO, |
|
NVVIOANCPARITYCOMPUTATION_ON, |
|
NVVIOANCPARITYCOMPUTATION_OFF |
|
} NVVIOANCPARITYCOMPUTATION; |
|
|
|
|
|
|
|
//! @} |
|
|
|
|
|
//--------------------------------------------------------------------- |
|
// Structures |
|
//--------------------------------------------------------------------- |
|
|
|
//! \addtogroup vidio |
|
//! @{ |
|
|
|
|
|
//! Supports Serial Digital Interface (SDI) output |
|
#define NVVIOCAPS_VIDOUT_SDI 0x00000001 |
|
|
|
//! Supports Internal timing source |
|
#define NVVIOCAPS_SYNC_INTERNAL 0x00000100 |
|
|
|
//! Supports Genlock timing source |
|
#define NVVIOCAPS_SYNC_GENLOCK 0x00000200 |
|
|
|
//! Supports Serial Digital Interface (SDI) synchronization input |
|
#define NVVIOCAPS_SYNCSRC_SDI 0x00001000 |
|
|
|
//! Supports Composite synchronization input |
|
#define NVVIOCAPS_SYNCSRC_COMP 0x00002000 |
|
|
|
//! Supports Desktop transparent mode |
|
#define NVVIOCAPS_OUTPUTMODE_DESKTOP 0x00010000 |
|
|
|
//! Supports OpenGL application mode |
|
#define NVVIOCAPS_OUTPUTMODE_OPENGL 0x00020000 |
|
|
|
//! Supports Serial Digital Interface (SDI) input |
|
#define NVVIOCAPS_VIDIN_SDI 0x00100000 |
|
|
|
//! Supports Packed ANC |
|
#define NVVIOCAPS_PACKED_ANC_SUPPORTED 0x00200000 |
|
|
|
//! Supports ANC audio blanking |
|
#define NVVIOCAPS_AUDIO_BLANKING_SUPPORTED 0x00400000 |
|
|
|
//! SDI-class interface: SDI output with two genlock inputs |
|
#define NVVIOCLASS_SDI 0x00000001 |
|
|
|
//! Device capabilities |
|
typedef struct _NVVIOCAPS |
|
{ |
|
NvU32 version; //!< Structure version |
|
NvAPI_String adapterName; //!< Graphics adapter name |
|
NvU32 adapterClass; //!< Graphics adapter classes (NVVIOCLASS_SDI mask) |
|
NvU32 adapterCaps; //!< Graphics adapter capabilities (NVVIOCAPS_* mask) |
|
NvU32 dipSwitch; //!< On-board DIP switch settings bits |
|
NvU32 dipSwitchReserved; //!< On-board DIP switch settings reserved bits |
|
NvU32 boardID; //!< Board ID |
|
//! Driver version |
|
struct // |
|
{ |
|
NvU32 majorVersion; //!< Major version. For GVI, majorVersion contains MajorVersion(HIWORD) And MinorVersion(LOWORD) |
|
NvU32 minorVersion; //!< Minor version. For GVI, minorVersion contains Revison(HIWORD) And Build(LOWORD) |
|
} driver; // |
|
//! Firmware version |
|
struct |
|
{ |
|
NvU32 majorVersion; //!< Major version. In version 2, for both GVI and GVO, majorVersion contains MajorVersion(HIWORD) And MinorVersion(LOWORD) |
|
NvU32 minorVersion; //!< Minor version. In version 2, for both GVI and GVO, minorVersion contains Revison(HIWORD) And Build(LOWORD) |
|
} firmWare; // |
|
NVVIOOWNERID ownerId; //!< Unique identifier for owner of video output (NVVIOOWNERID_INVALID if free running) |
|
NVVIOOWNERTYPE ownerType; //!< Owner type (OpenGL application or Desktop mode) |
|
} NVVIOCAPS; |
|
|
|
//! Macro for constructing the version field of NVVIOCAPS |
|
#define NVVIOCAPS_VER1 MAKE_NVAPI_VERSION(NVVIOCAPS,1) |
|
#define NVVIOCAPS_VER2 MAKE_NVAPI_VERSION(NVVIOCAPS,2) |
|
#define NVVIOCAPS_VER NVVIOCAPS_VER2 |
|
|
|
//! Input channel status |
|
typedef struct _NVVIOCHANNELSTATUS |
|
{ |
|
NvU32 smpte352; //!< 4-byte SMPTE 352 video payload identifier |
|
NVVIOSIGNALFORMAT signalFormat; //!< Signal format |
|
NVVIOBITSPERCOMPONENT bitsPerComponent; //!< Bits per component |
|
NVVIOCOMPONENTSAMPLING samplingFormat; //!< Sampling format |
|
NVVIOCOLORSPACE colorSpace; //!< Color space |
|
NVVIOLINKID linkID; //!< Link ID |
|
} NVVIOCHANNELSTATUS; |
|
|
|
//! Input device status |
|
typedef struct _NVVIOINPUTSTATUS |
|
{ |
|
NVVIOCHANNELSTATUS vidIn[NVAPI_MAX_VIO_JACKS][NVAPI_MAX_VIO_CHANNELS_PER_JACK]; //!< Video input status per channel within a jack |
|
NVVIOCAPTURESTATUS captureStatus; //!< status of video capture |
|
} NVVIOINPUTSTATUS; |
|
|
|
//! Output device status |
|
typedef struct _NVVIOOUTPUTSTATUS |
|
{ |
|
NVVIOINPUTOUTPUTSTATUS vid1Out; //!< Video 1 output status |
|
NVVIOINPUTOUTPUTSTATUS vid2Out; //!< Video 2 output status |
|
NVVIOSYNCSTATUS sdiSyncIn; //!< SDI sync input status |
|
NVVIOSYNCSTATUS compSyncIn; //!< Composite sync input status |
|
NvU32 syncEnable; //!< Sync enable (TRUE if using syncSource) |
|
NVVIOSYNCSOURCE syncSource; //!< Sync source |
|
NVVIOSIGNALFORMAT syncFormat; //!< Sync format |
|
NvU32 frameLockEnable; //!< Framelock enable flag |
|
NvU32 outputVideoLocked; //!< Output locked status |
|
NvU32 dataIntegrityCheckErrorCount; //!< Data integrity check error count |
|
NvU32 dataIntegrityCheckEnabled; //!< Data integrity check status enabled |
|
NvU32 dataIntegrityCheckFailed; //!< Data integrity check status failed |
|
NvU32 uSyncSourceLocked; //!< genlocked to framelocked to ref signal |
|
NvU32 uPowerOn; //!< TRUE: indicates there is sufficient power |
|
} NVVIOOUTPUTSTATUS; |
|
|
|
//! Video device status. |
|
typedef struct _NVVIOSTATUS |
|
{ |
|
NvU32 version; //!< Structure version |
|
NVVIOSTATUSTYPE nvvioStatusType; //!< Input or Output status |
|
union |
|
{ |
|
NVVIOINPUTSTATUS inStatus; //!< Input device status |
|
NVVIOOUTPUTSTATUS outStatus; //!< Output device status |
|
}vioStatus; |
|
} NVVIOSTATUS; |
|
|
|
//! Macro for constructingthe version field of NVVIOSTATUS |
|
#define NVVIOSTATUS_VER MAKE_NVAPI_VERSION(NVVIOSTATUS,1) |
|
|
|
//! Output region |
|
typedef struct _NVVIOOUTPUTREGION |
|
{ |
|
NvU32 x; //!< Horizontal origin in pixels |
|
NvU32 y; //!< Vertical origin in pixels |
|
NvU32 width; //!< Width of region in pixels |
|
NvU32 height; //!< Height of region in pixels |
|
} NVVIOOUTPUTREGION; |
|
|
|
//! Gamma ramp (8-bit index) |
|
typedef struct _NVVIOGAMMARAMP8 |
|
{ |
|
NvU16 uRed[256]; //!< Red channel gamma ramp (8-bit index, 16-bit values) |
|
NvU16 uGreen[256]; //!< Green channel gamma ramp (8-bit index, 16-bit values) |
|
NvU16 uBlue[256]; //!< Blue channel gamma ramp (8-bit index, 16-bit values) |
|
} NVVIOGAMMARAMP8; |
|
|
|
//! Gamma ramp (10-bit index) |
|
typedef struct _NVVIOGAMMARAMP10 |
|
{ |
|
NvU16 uRed[1024]; //!< Red channel gamma ramp (10-bit index, 16-bit values) |
|
NvU16 uGreen[1024]; //!< Green channel gamma ramp (10-bit index, 16-bit values) |
|
NvU16 uBlue[1024]; //!< Blue channel gamma ramp (10-bit index, 16-bit values) |
|
} NVVIOGAMMARAMP10; |
|
|
|
|
|
//! Sync delay |
|
typedef struct _NVVIOSYNCDELAY |
|
{ |
|
NvU32 version; //!< Structure version |
|
NvU32 horizontalDelay; //!< Horizontal delay in pixels |
|
NvU32 verticalDelay; //!< Vertical delay in lines |
|
} NVVIOSYNCDELAY; |
|
|
|
//! Macro for constructing the version field of NVVIOSYNCDELAY |
|
#define NVVIOSYNCDELAY_VER MAKE_NVAPI_VERSION(NVVIOSYNCDELAY,1) |
|
|
|
|
|
//! Video mode information |
|
typedef struct _NVVIOVIDEOMODE |
|
{ |
|
NvU32 horizontalPixels; //!< Horizontal resolution (in pixels) |
|
NvU32 verticalLines; //!< Vertical resolution for frame (in lines) |
|
float fFrameRate; //!< Frame rate |
|
NVVIOINTERLACEMODE interlaceMode; //!< Interlace mode |
|
NVVIOVIDEOSTANDARD videoStandard; //!< SMPTE standards format |
|
NVVIOVIDEOTYPE videoType; //!< HD or SD signal classification |
|
} NVVIOVIDEOMODE; |
|
|
|
//! Signal format details |
|
typedef struct _NVVIOSIGNALFORMATDETAIL |
|
{ |
|
NVVIOSIGNALFORMAT signalFormat; //!< Signal format enumerated value |
|
NVVIOVIDEOMODE videoMode; //!< Video mode for signal format |
|
}NVVIOSIGNALFORMATDETAIL; |
|
|
|
|
|
//! R8:G8:B8 |
|
#define NVVIOBUFFERFORMAT_R8G8B8 0x00000001 |
|
|
|
//! R8:G8:B8:Z24 |
|
#define NVVIOBUFFERFORMAT_R8G8B8Z24 0x00000002 |
|
|
|
//! R8:G8:B8:A8 |
|
#define NVVIOBUFFERFORMAT_R8G8B8A8 0x00000004 |
|
|
|
//! R8:G8:B8:A8:Z24 |
|
#define NVVIOBUFFERFORMAT_R8G8B8A8Z24 0x00000008 |
|
|
|
//! R16FP:G16FP:B16FP |
|
#define NVVIOBUFFERFORMAT_R16FPG16FPB16FP 0x00000010 |
|
|
|
//! R16FP:G16FP:B16FP:Z24 |
|
#define NVVIOBUFFERFORMAT_R16FPG16FPB16FPZ24 0x00000020 |
|
|
|
//! R16FP:G16FP:B16FP:A16FP |
|
#define NVVIOBUFFERFORMAT_R16FPG16FPB16FPA16FP 0x00000040 |
|
|
|
//! R16FP:G16FP:B16FP:A16FP:Z24 |
|
#define NVVIOBUFFERFORMAT_R16FPG16FPB16FPA16FPZ24 0x00000080 |
|
|
|
|
|
|
|
//! Data format details |
|
typedef struct _NVVIODATAFORMATDETAIL |
|
{ |
|
NVVIODATAFORMAT dataFormat; //!< Data format enumerated value |
|
NvU32 vioCaps; //!< Data format capabilities (NVVIOCAPS_* mask) |
|
}NVVIODATAFORMATDETAIL; |
|
|
|
//! Colorspace conversion |
|
typedef struct _NVVIOCOLORCONVERSION |
|
{ |
|
NvU32 version; //!< Structure version |
|
float colorMatrix[3][3]; //!< Output[n] = |
|
float colorOffset[3]; //!< Input[0] * colorMatrix[n][0] + |
|
float colorScale[3]; //!< Input[1] * colorMatrix[n][1] + |
|
//!< Input[2] * colorMatrix[n][2] + |
|
//!< OutputRange * colorOffset[n] |
|
//!< where OutputRange is the standard magnitude of |
|
//!< Output[n][n] and colorMatrix and colorOffset |
|
//!< values are within the range -1.0 to +1.0 |
|
NvU32 compositeSafe; //!< compositeSafe constrains luminance range when using composite output |
|
} NVVIOCOLORCONVERSION; |
|
|
|
//! macro for constructing the version field of _NVVIOCOLORCONVERSION. |
|
#define NVVIOCOLORCONVERSION_VER MAKE_NVAPI_VERSION(NVVIOCOLORCONVERSION,1) |
|
|
|
//! Gamma correction |
|
typedef struct _NVVIOGAMMACORRECTION |
|
{ |
|
NvU32 version; //!< Structure version |
|
NvU32 vioGammaCorrectionType; //!< Gamma correction type (8-bit or 10-bit) |
|
//! Gamma correction: |
|
union |
|
{ |
|
NVVIOGAMMARAMP8 gammaRamp8; //!< Gamma ramp (8-bit index, 16-bit values) |
|
NVVIOGAMMARAMP10 gammaRamp10; //!< Gamma ramp (10-bit index, 16-bit values) |
|
}gammaRamp; |
|
float fGammaValueR; //!< Red Gamma value within gamma ranges. 0.5 - 6.0 |
|
float fGammaValueG; //!< Green Gamma value within gamma ranges. 0.5 - 6.0 |
|
float fGammaValueB; //!< Blue Gamma value within gamma ranges. 0.5 - 6.0 |
|
} NVVIOGAMMACORRECTION; |
|
|
|
//! Macro for constructing thevesion field of _NVVIOGAMMACORRECTION |
|
#define NVVIOGAMMACORRECTION_VER MAKE_NVAPI_VERSION(NVVIOGAMMACORRECTION,1) |
|
|
|
//! Maximum number of ranges per channel |
|
#define MAX_NUM_COMPOSITE_RANGE 2 |
|
|
|
|
|
typedef struct _NVVIOCOMPOSITERANGE |
|
{ |
|
NvU32 uRange; |
|
NvU32 uEnabled; |
|
NvU32 uMin; |
|
NvU32 uMax; |
|
} NVVIOCOMPOSITERANGE; |
|
|
|
|
|
|
|
// Device configuration (fields masks indicating NVVIOCONFIG fields to use for NvAPI_VIO_GetConfig/NvAPI_VIO_SetConfig() ) |
|
// |
|
#define NVVIOCONFIG_SIGNALFORMAT 0x00000001 //!< fields: signalFormat |
|
#define NVVIOCONFIG_DATAFORMAT 0x00000002 //!< fields: dataFormat |
|
#define NVVIOCONFIG_OUTPUTREGION 0x00000004 //!< fields: outputRegion |
|
#define NVVIOCONFIG_OUTPUTAREA 0x00000008 //!< fields: outputArea |
|
#define NVVIOCONFIG_COLORCONVERSION 0x00000010 //!< fields: colorConversion |
|
#define NVVIOCONFIG_GAMMACORRECTION 0x00000020 //!< fields: gammaCorrection |
|
#define NVVIOCONFIG_SYNCSOURCEENABLE 0x00000040 //!< fields: syncSource and syncEnable |
|
#define NVVIOCONFIG_SYNCDELAY 0x00000080 //!< fields: syncDelay |
|
#define NVVIOCONFIG_COMPOSITESYNCTYPE 0x00000100 //!< fields: compositeSyncType |
|
#define NVVIOCONFIG_FRAMELOCKENABLE 0x00000200 //!< fields: EnableFramelock |
|
#define NVVIOCONFIG_422FILTER 0x00000400 //!< fields: bEnable422Filter |
|
#define NVVIOCONFIG_COMPOSITETERMINATE 0x00000800 //!< fields: bCompositeTerminate (Not supported on Quadro FX 4000 SDI) |
|
#define NVVIOCONFIG_DATAINTEGRITYCHECK 0x00001000 //!< fields: bEnableDataIntegrityCheck (Not supported on Quadro FX 4000 SDI) |
|
#define NVVIOCONFIG_CSCOVERRIDE 0x00002000 //!< fields: colorConversion override |
|
#define NVVIOCONFIG_FLIPQUEUELENGTH 0x00004000 //!< fields: flipqueuelength control |
|
#define NVVIOCONFIG_ANCTIMECODEGENERATION 0x00008000 //!< fields: bEnableANCTimeCodeGeneration |
|
#define NVVIOCONFIG_COMPOSITE 0x00010000 //!< fields: bEnableComposite |
|
#define NVVIOCONFIG_ALPHAKEYCOMPOSITE 0x00020000 //!< fields: bEnableAlphaKeyComposite |
|
#define NVVIOCONFIG_COMPOSITE_Y 0x00040000 //!< fields: compRange |
|
#define NVVIOCONFIG_COMPOSITE_CR 0x00080000 //!< fields: compRange |
|
#define NVVIOCONFIG_COMPOSITE_CB 0x00100000 //!< fields: compRange |
|
#define NVVIOCONFIG_FULL_COLOR_RANGE 0x00200000 //!< fields: bEnableFullColorRange |
|
#define NVVIOCONFIG_RGB_DATA 0x00400000 //!< fields: bEnableRGBData |
|
#define NVVIOCONFIG_RESERVED_SDIOUTPUTENABLE 0x00800000 //!< fields: bEnableSDIOutput |
|
#define NVVIOCONFIG_STREAMS 0x01000000 //!< fields: streams |
|
#define NVVIOCONFIG_ANC_PARITY_COMPUTATION 0x02000000 //!< fields: ancParityComputation |
|
#define NVVIOCONFIG_ANC_AUDIO_REPEAT 0x04000000 //!< fields: enableAudioBlanking |
|
|
|
|
|
// Don't forget to update NVVIOCONFIG_VALIDFIELDS in nvapi.spec when NVVIOCONFIG_ALLFIELDS changes. |
|
#define NVVIOCONFIG_ALLFIELDS ( NVVIOCONFIG_SIGNALFORMAT | \ |
|
NVVIOCONFIG_DATAFORMAT | \ |
|
NVVIOCONFIG_OUTPUTREGION | \ |
|
NVVIOCONFIG_OUTPUTAREA | \ |
|
NVVIOCONFIG_COLORCONVERSION | \ |
|
NVVIOCONFIG_GAMMACORRECTION | \ |
|
NVVIOCONFIG_SYNCSOURCEENABLE | \ |
|
NVVIOCONFIG_SYNCDELAY | \ |
|
NVVIOCONFIG_COMPOSITESYNCTYPE | \ |
|
NVVIOCONFIG_FRAMELOCKENABLE | \ |
|
NVVIOCONFIG_422FILTER | \ |
|
NVVIOCONFIG_COMPOSITETERMINATE | \ |
|
NVVIOCONFIG_DATAINTEGRITYCHECK | \ |
|
NVVIOCONFIG_CSCOVERRIDE | \ |
|
NVVIOCONFIG_FLIPQUEUELENGTH | \ |
|
NVVIOCONFIG_ANCTIMECODEGENERATION | \ |
|
NVVIOCONFIG_COMPOSITE | \ |
|
NVVIOCONFIG_ALPHAKEYCOMPOSITE | \ |
|
NVVIOCONFIG_COMPOSITE_Y | \ |
|
NVVIOCONFIG_COMPOSITE_CR | \ |
|
NVVIOCONFIG_COMPOSITE_CB | \ |
|
NVVIOCONFIG_FULL_COLOR_RANGE | \ |
|
NVVIOCONFIG_RGB_DATA | \ |
|
NVVIOCONFIG_RESERVED_SDIOUTPUTENABLE | \ |
|
NVVIOCONFIG_STREAMS | \ |
|
NVVIOCONFIG_ANC_PARITY_COMPUTATION | \ |
|
NVVIOCONFIG_ANC_AUDIO_REPEAT ) |
|
|
|
#define NVVIOCONFIG_VALIDFIELDS ( NVVIOCONFIG_SIGNALFORMAT | \ |
|
NVVIOCONFIG_DATAFORMAT | \ |
|
NVVIOCONFIG_OUTPUTREGION | \ |
|
NVVIOCONFIG_OUTPUTAREA | \ |
|
NVVIOCONFIG_COLORCONVERSION | \ |
|
NVVIOCONFIG_GAMMACORRECTION | \ |
|
NVVIOCONFIG_SYNCSOURCEENABLE | \ |
|
NVVIOCONFIG_SYNCDELAY | \ |
|
NVVIOCONFIG_COMPOSITESYNCTYPE | \ |
|
NVVIOCONFIG_FRAMELOCKENABLE | \ |
|
NVVIOCONFIG_RESERVED_SDIOUTPUTENABLE | \ |
|
NVVIOCONFIG_422FILTER | \ |
|
NVVIOCONFIG_COMPOSITETERMINATE | \ |
|
NVVIOCONFIG_DATAINTEGRITYCHECK | \ |
|
NVVIOCONFIG_CSCOVERRIDE | \ |
|
NVVIOCONFIG_FLIPQUEUELENGTH | \ |
|
NVVIOCONFIG_ANCTIMECODEGENERATION | \ |
|
NVVIOCONFIG_COMPOSITE | \ |
|
NVVIOCONFIG_ALPHAKEYCOMPOSITE | \ |
|
NVVIOCONFIG_COMPOSITE_Y | \ |
|
NVVIOCONFIG_COMPOSITE_CR | \ |
|
NVVIOCONFIG_COMPOSITE_CB | \ |
|
NVVIOCONFIG_FULL_COLOR_RANGE | \ |
|
NVVIOCONFIG_RGB_DATA | \ |
|
NVVIOCONFIG_RESERVED_SDIOUTPUTENABLE | \ |
|
NVVIOCONFIG_STREAMS | \ |
|
NVVIOCONFIG_ANC_PARITY_COMPUTATION | \ |
|
NVVIOCONFIG_ANC_AUDIO_REPEAT) |
|
|
|
#define NVVIOCONFIG_DRIVERFIELDS ( NVVIOCONFIG_OUTPUTREGION | \ |
|
NVVIOCONFIG_OUTPUTAREA | \ |
|
NVVIOCONFIG_COLORCONVERSION | \ |
|
NVVIOCONFIG_FLIPQUEUELENGTH) |
|
|
|
#define NVVIOCONFIG_GAMMAFIELDS ( NVVIOCONFIG_GAMMACORRECTION ) |
|
|
|
#define NVVIOCONFIG_RMCTRLFIELDS ( NVVIOCONFIG_SIGNALFORMAT | \ |
|
NVVIOCONFIG_DATAFORMAT | \ |
|
NVVIOCONFIG_SYNCSOURCEENABLE | \ |
|
NVVIOCONFIG_COMPOSITESYNCTYPE | \ |
|
NVVIOCONFIG_FRAMELOCKENABLE | \ |
|
NVVIOCONFIG_422FILTER | \ |
|
NVVIOCONFIG_COMPOSITETERMINATE | \ |
|
NVVIOCONFIG_DATAINTEGRITYCHECK | \ |
|
NVVIOCONFIG_COMPOSITE | \ |
|
NVVIOCONFIG_ALPHAKEYCOMPOSITE | \ |
|
NVVIOCONFIG_COMPOSITE_Y | \ |
|
NVVIOCONFIG_COMPOSITE_CR | \ |
|
NVVIOCONFIG_COMPOSITE_CB) |
|
|
|
#define NVVIOCONFIG_RMSKEWFIELDS ( NVVIOCONFIG_SYNCDELAY ) |
|
|
|
#define NVVIOCONFIG_ALLOWSDIRUNNING_FIELDS ( NVVIOCONFIG_DATAINTEGRITYCHECK | \ |
|
NVVIOCONFIG_SYNCDELAY | \ |
|
NVVIOCONFIG_CSCOVERRIDE | \ |
|
NVVIOCONFIG_ANCTIMECODEGENERATION | \ |
|
NVVIOCONFIG_COMPOSITE | \ |
|
NVVIOCONFIG_ALPHAKEYCOMPOSITE | \ |
|
NVVIOCONFIG_COMPOSITE_Y | \ |
|
NVVIOCONFIG_COMPOSITE_CR | \ |
|
NVVIOCONFIG_COMPOSITE_CB | \ |
|
NVVIOCONFIG_ANC_PARITY_COMPUTATION) |
|
|
|
|
|
#define NVVIOCONFIG_RMMODESET_FIELDS ( NVVIOCONFIG_SIGNALFORMAT | \ |
|
NVVIOCONFIG_DATAFORMAT | \ |
|
NVVIOCONFIG_SYNCSOURCEENABLE | \ |
|
NVVIOCONFIG_FRAMELOCKENABLE | \ |
|
NVVIOCONFIG_COMPOSITESYNCTYPE | \ |
|
NVVIOCONFIG_ANC_AUDIO_REPEAT) |
|
|
|
|
|
//! Output device configuration |
|
// No members can be deleted from below structure. Only add new members at the |
|
// end of the structure. |
|
typedef struct _NVVIOOUTPUTCONFIG_V1 |
|
{ |
|
NVVIOSIGNALFORMAT signalFormat; //!< Signal format for video output |
|
NVVIODATAFORMAT dataFormat; //!< Data format for video output |
|
NVVIOOUTPUTREGION outputRegion; //!< Region for video output (Desktop mode) |
|
NVVIOOUTPUTAREA outputArea; //!< Usable resolution for video output (safe area) |
|
NVVIOCOLORCONVERSION colorConversion; //!< Color conversion. |
|
NVVIOGAMMACORRECTION gammaCorrection; |
|
NvU32 syncEnable; //!< Sync enable (TRUE to use syncSource) |
|
NVVIOSYNCSOURCE syncSource; //!< Sync source |
|
NVVIOSYNCDELAY syncDelay; //!< Sync delay |
|
NVVIOCOMPSYNCTYPE compositeSyncType; //!< Composite sync type |
|
NvU32 frameLockEnable; //!< Flag indicating whether framelock was on/off |
|
NvU32 psfSignalFormat; //!< Indicates whether contained format is PSF Signal format |
|
NvU32 enable422Filter; //!< Enables/Disables 4:2:2 filter |
|
NvU32 compositeTerminate; //!< Composite termination |
|
NvU32 enableDataIntegrityCheck; //!< Enable data integrity check: true - enable, false - disable |
|
NvU32 cscOverride; //!< Use provided CSC color matrix to overwrite |
|
NvU32 flipQueueLength; //!< Number of buffers used for the internal flipqueue |
|
NvU32 enableANCTimeCodeGeneration; //!< Enable SDI ANC time code generation |
|
NvU32 enableComposite; //!< Enable composite |
|
NvU32 enableAlphaKeyComposite; //!< Enable Alpha key composite |
|
NVVIOCOMPOSITERANGE compRange; //!< Composite ranges |
|
NvU8 reservedData[256]; //!< Inicates last stored SDI output state TRUE-ON / FALSE-OFF |
|
NvU32 enableFullColorRange; //!< Flag indicating Full Color Range |
|
NvU32 enableRGBData; //!< Indicates data is in RGB format |
|
} NVVIOOUTPUTCONFIG_V1; |
|
|
|
typedef struct _NVVIOOUTPUTCONFIG_V2 |
|
{ |
|
NVVIOSIGNALFORMAT signalFormat; //!< Signal format for video output |
|
NVVIODATAFORMAT dataFormat; //!< Data format for video output |
|
NVVIOOUTPUTREGION outputRegion; //!< Region for video output (Desktop mode) |
|
NVVIOOUTPUTAREA outputArea; //!< Usable resolution for video output (safe area) |
|
NVVIOCOLORCONVERSION colorConversion; //!< Color conversion. |
|
NVVIOGAMMACORRECTION gammaCorrection; |
|
NvU32 syncEnable; //!< Sync enable (TRUE to use syncSource) |
|
NVVIOSYNCSOURCE syncSource; //!< Sync source |
|
NVVIOSYNCDELAY syncDelay; //!< Sync delay |
|
NVVIOCOMPSYNCTYPE compositeSyncType; //!< Composite sync type |
|
NvU32 frameLockEnable; //!< Flag indicating whether framelock was on/off |
|
NvU32 psfSignalFormat; //!< Indicates whether contained format is PSF Signal format |
|
NvU32 enable422Filter; //!< Enables/Disables 4:2:2 filter |
|
NvU32 compositeTerminate; //!< Composite termination |
|
NvU32 enableDataIntegrityCheck; //!< Enable data integrity check: true - enable, false - disable |
|
NvU32 cscOverride; //!< Use provided CSC color matrix to overwrite |
|
NvU32 flipQueueLength; //!< Number of buffers used for the internal flip queue |
|
NvU32 enableANCTimeCodeGeneration; //!< Enable SDI ANC time code generation |
|
NvU32 enableComposite; //!< Enable composite |
|
NvU32 enableAlphaKeyComposite; //!< Enable Alpha key composite |
|
NVVIOCOMPOSITERANGE compRange; //!< Composite ranges |
|
NvU8 reservedData[256]; //!< Indicates last stored SDI output state TRUE-ON / FALSE-OFF |
|
NvU32 enableFullColorRange; //!< Flag indicating Full Color Range |
|
NvU32 enableRGBData; //!< Indicates data is in RGB format |
|
NVVIOANCPARITYCOMPUTATION ancParityComputation; //!< Enable HW ANC parity bit computation (auto/on/off) |
|
} NVVIOOUTPUTCONFIG_V2; |
|
|
|
typedef struct _NVVIOOUTPUTCONFIG_V3 |
|
{ |
|
NVVIOSIGNALFORMAT signalFormat; //!< Signal format for video output |
|
NVVIODATAFORMAT dataFormat; //!< Data format for video output |
|
NVVIOOUTPUTREGION outputRegion; //!< Region for video output (Desktop mode) |
|
NVVIOOUTPUTAREA outputArea; //!< Usable resolution for video output (safe area) |
|
NVVIOCOLORCONVERSION colorConversion; //!< Color conversion. |
|
NVVIOGAMMACORRECTION gammaCorrection; |
|
NvU32 syncEnable; //!< Sync enable (TRUE to use syncSource) |
|
NVVIOSYNCSOURCE syncSource; //!< Sync source |
|
NVVIOSYNCDELAY syncDelay; //!< Sync delay |
|
NVVIOCOMPSYNCTYPE compositeSyncType; //!< Composite sync type |
|
NvU32 frameLockEnable; //!< Flag indicating whether framelock was on/off |
|
NvU32 psfSignalFormat; //!< Indicates whether contained format is PSF Signal format |
|
NvU32 enable422Filter; //!< Enables/Disables 4:2:2 filter |
|
NvU32 compositeTerminate; //!< Composite termination |
|
NvU32 enableDataIntegrityCheck; //!< Enable data integrity check: true - enable, false - disable |
|
NvU32 cscOverride; //!< Use provided CSC color matrix to overwrite |
|
NvU32 flipQueueLength; //!< Number of buffers used for the internal flip queue |
|
NvU32 enableANCTimeCodeGeneration; //!< Enable SDI ANC time code generation |
|
NvU32 enableComposite; //!< Enable composite |
|
NvU32 enableAlphaKeyComposite; //!< Enable Alpha key composite |
|
NVVIOCOMPOSITERANGE compRange; //!< Composite ranges |
|
NvU8 reservedData[256]; //!< Indicates last stored SDI output state TRUE-ON / FALSE-OFF |
|
NvU32 enableFullColorRange; //!< Flag indicating Full Color Range |
|
NvU32 enableRGBData; //!< Indicates data is in RGB format |
|
NVVIOANCPARITYCOMPUTATION ancParityComputation; //!< Enable HW ANC parity bit computation (auto/on/off) |
|
NvU32 enableAudioBlanking; //!< Enable HANC audio blanking on repeat frames |
|
} NVVIOOUTPUTCONFIG_V3; |
|
|
|
//! Stream configuration |
|
typedef struct _NVVIOSTREAM |
|
{ |
|
NvU32 bitsPerComponent; //!< Bits per component |
|
NVVIOCOMPONENTSAMPLING sampling; //!< Sampling |
|
NvU32 expansionEnable; //!< Enable/disable 4:2:2->4:4:4 expansion |
|
NvU32 numLinks; //!< Number of active links |
|
struct |
|
{ |
|
NvU32 jack; //!< This stream's link[i] will use the specified (0-based) channel within the |
|
NvU32 channel; //!< specified (0-based) jack |
|
} links[NVAPI_MAX_VIO_LINKS_PER_STREAM]; |
|
} NVVIOSTREAM; |
|
|
|
//! Input device configuration |
|
typedef struct _NVVIOINPUTCONFIG |
|
{ |
|
NvU32 numRawCaptureImages; //!< numRawCaptureImages is the number of frames to keep in the capture queue. |
|
//!< must be between NVAPI_GVI_MIN_RAW_CAPTURE_IMAGES and NVAPI_GVI_MAX_RAW_CAPTURE_IMAGES, |
|
NVVIOSIGNALFORMAT signalFormat; //!< Signal format. |
|
//!< Please note that both numRawCaptureImages and signalFormat should be set together. |
|
NvU32 numStreams; //!< Number of active streams. |
|
NVVIOSTREAM streams[NVAPI_MAX_VIO_STREAMS]; //!< Stream configurations |
|
NvU32 bTestMode; //!< This attribute controls the GVI test mode. |
|
//!< Possible values 0/1. When testmode enabled, the |
|
//!< GVI device will generate fake data as quickly as possible. |
|
} NVVIOINPUTCONFIG; |
|
|
|
typedef struct _NVVIOCONFIG_V1 |
|
{ |
|
NvU32 version; //!< Structure version |
|
NvU32 fields; //!< Caller sets to NVVIOCONFIG_* mask for fields to use |
|
NVVIOCONFIGTYPE nvvioConfigType; //!< Input or Output configuration |
|
union |
|
{ |
|
NVVIOINPUTCONFIG inConfig; //!< Input device configuration |
|
NVVIOOUTPUTCONFIG_V1 outConfig; //!< Output device configuration |
|
}vioConfig; |
|
} NVVIOCONFIG_V1; |
|
|
|
|
|
typedef struct _NVVIOCONFIG_V2 |
|
{ |
|
NvU32 version; //!< Structure version |
|
NvU32 fields; //!< Caller sets to NVVIOCONFIG_* mask for fields to use |
|
NVVIOCONFIGTYPE nvvioConfigType; //!< Input or Output configuration |
|
union |
|
{ |
|
NVVIOINPUTCONFIG inConfig; //!< Input device configuration |
|
NVVIOOUTPUTCONFIG_V2 outConfig; //!< Output device configuration |
|
}vioConfig; |
|
} NVVIOCONFIG_V2; |
|
|
|
typedef struct _NVVIOCONFIG_V3 |
|
{ |
|
NvU32 version; //!< Structure version |
|
NvU32 fields; //!< Caller sets to NVVIOCONFIG_* mask for fields to use |
|
NVVIOCONFIGTYPE nvvioConfigType; //!< Input or Output configuration |
|
union |
|
{ |
|
NVVIOINPUTCONFIG inConfig; //!< Input device configuration |
|
NVVIOOUTPUTCONFIG_V3 outConfig; //!< Output device configuration |
|
}vioConfig; |
|
} NVVIOCONFIG_V3; |
|
typedef NVVIOOUTPUTCONFIG_V3 NVVIOOUTPUTCONFIG; |
|
typedef NVVIOCONFIG_V3 NVVIOCONFIG; |
|
|
|
#define NVVIOCONFIG_VER1 MAKE_NVAPI_VERSION(NVVIOCONFIG_V1,1) |
|
#define NVVIOCONFIG_VER2 MAKE_NVAPI_VERSION(NVVIOCONFIG_V2,2) |
|
#define NVVIOCONFIG_VER3 MAKE_NVAPI_VERSION(NVVIOCONFIG_V3,3) |
|
#define NVVIOCONFIG_VER NVVIOCONFIG_VER3 |
|
|
|
|
|
typedef struct |
|
{ |
|
NvPhysicalGpuHandle hPhysicalGpu; //!< Handle to Physical GPU (This could be NULL for GVI device if its not binded) |
|
NvVioHandle hVioHandle; //!<handle to SDI Input/Output device |
|
NvU32 vioId; //!<device Id of SDI Input/Output device |
|
NvU32 outputId; //!<deviceMask of the SDI display connected to GVO device. |
|
//!<outputId will be 0 for GVI device. |
|
} NVVIOTOPOLOGYTARGET; |
|
|
|
typedef struct _NV_VIO_TOPOLOGY |
|
{ |
|
NvU32 version; |
|
NvU32 vioTotalDeviceCount; //!<How many video I/O targets are valid |
|
NVVIOTOPOLOGYTARGET vioTarget[NVAPI_MAX_VIO_DEVICES]; //!<Array of video I/O targets |
|
}NV_VIO_TOPOLOGY, NVVIOTOPOLOGY; |
|
|
|
|
|
//! Macro for constructing the version field of NV_VIO_TOPOLOGY |
|
#define NV_VIO_TOPOLOGY_VER MAKE_NVAPI_VERSION(NV_VIO_TOPOLOGY,1) |
|
|
|
//! Macro for constructing the version field of NVVIOTOPOLOGY |
|
#define NVVIOTOPOLOGY_VER MAKE_NVAPI_VERSION(NVVIOTOPOLOGY,1) |
|
|
|
|
|
|
|
//! @} |
|
|
|
|
|
|
|
//! \addtogroup vidio |
|
//! @{ |
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! |
|
//! Function: NvAPI_VIO_GetCapabilities |
|
//! |
|
//! Description: This API determine the graphics adapter video I/O capabilities. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI device handle as input. |
|
//! \param [out] pAdapterCaps Pointer to receive capabilities |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION NVVIOCAPS struct version used by the app is not compatible |
|
//! \retval ::NVAPI_NOT_SUPPORTED Video I/O not supported |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_GetCapabilities(NvVioHandle hVioHandle, |
|
NVVIOCAPS *pAdapterCaps); |
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_Open |
|
//! |
|
//! Description: This API opens the graphics adapter for video I/O operations |
|
//! using the OpenGL application interface. Read operations |
|
//! are permitted in this mode by multiple clients, but Write |
|
//! operations are application exclusive. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI output device handle as input. |
|
//! \param [in] vioClass Class interface (NVVIOCLASS_* value) |
|
//! \param [in] ownerType Specify NVVIOOWNERTYPE_APPLICATION or NVVIOOWNERTYPE_DESKTOP. |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_NOT_SUPPORTED Video I/O not supported |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
//! \retval ::NVAPI_DEVICE_BUSY Access denied for requested access |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_Open(NvVioHandle hVioHandle, |
|
NvU32 vioClass, |
|
NVVIOOWNERTYPE ownerType); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_Close |
|
//! |
|
//! Description: This API closes the graphics adapter for graphics-to-video operations |
|
//! using the OpenGL application interface. Closing an |
|
//! OpenGL handle releases the device. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI output device handle as input. |
|
//! \param [in] bRelease boolean value to either keep or release ownership |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_NOT_SUPPORTED Video I/O not supported |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
//! \retval ::NVAPI_DEVICE_BUSY Access denied for requested access |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_Close(NvVioHandle hVioHandle, |
|
NvU32 bRelease); |
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_Status |
|
//! |
|
//! Description: This API gets the Video I/O LED status. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI device handle as input. |
|
//! \param [out] pStatus Return pointer to NVVIOSTATUS |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION Invalid structure version |
|
//! \retval ::NVAPI_NOT_SUPPORTED Video I/O not supported |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_Status(NvVioHandle hVioHandle, |
|
NVVIOSTATUS *pStatus); |
|
|
|
//////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_SyncFormatDetect |
|
//! |
|
//! Description: This API detects the Video I/O incoming sync video format. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI device handle as input. |
|
//! \param [out] pWait Pointer to receive how many milliseconds will lapse |
|
//! before VIOStatus returns the detected syncFormat. |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_NOT_SUPPORTED Video I/O not supported |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_SyncFormatDetect(NvVioHandle hVioHandle, |
|
NvU32 *pWait); |
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_GetConfig |
|
//! |
|
//! Description: This API gets the graphics-to-video configuration. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI device handle as input. |
|
//! \param [out] pConfig Pointer to the graphics-to-video configuration |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION Invalid structure version |
|
//! \retval ::NVAPI_NOT_SUPPORTED Video I/O not supported |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_GetConfig(NvVioHandle hVioHandle, |
|
NVVIOCONFIG *pConfig); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_SetConfig |
|
//! |
|
//! Description: This API sets the graphics-to-video configuration. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI device handle as input. |
|
//! \param [in] pConfig Pointer to Graphics-to-Video configuration |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION Stucture version invalid |
|
//! \retval ::NVAPI_NOT_SUPPORTED Video I/O not supported |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
//! \retval ::NVAPI_DEVICE_BUSY Access denied for requested access |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_SetConfig(NvVioHandle hVioHandle, |
|
const NVVIOCONFIG *pConfig); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_SetCSC |
|
//! |
|
//! Description: This API sets the colorspace conversion parameters. |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_VIO_SetConfig. |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI device handle as input. |
|
//! \param [in] pCSC Pointer to CSC parameters |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION Stucture version invalid |
|
//! \retval ::NVAPI_NOT_SUPPORTED Video I/O not supported |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
//! \retval ::NVAPI_DEVICE_BUSY Access denied for requested access |
|
////////////////////////////////////////////////////////////////////////////////---- |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_VIO_SetConfig.") |
|
NVAPI_INTERFACE NvAPI_VIO_SetCSC(NvVioHandle hVioHandle, |
|
NVVIOCOLORCONVERSION *pCSC); |
|
//////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_GetCSC |
|
//! |
|
//! Description: This API gets the colorspace conversion parameters. |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_VIO_GetConfig. |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI device handle as input. |
|
//! \param [out] pCSC Pointer to CSC parameters |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION Stucture version invalid |
|
//! \retval ::NVAPI_NOT_SUPPORTED Video I/O not supported |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
//////////////////////////////////////////////////////////////////////////////// |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_VIO_GetConfig.") |
|
NVAPI_INTERFACE NvAPI_VIO_GetCSC(NvVioHandle hVioHandle, |
|
NVVIOCOLORCONVERSION *pCSC); |
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_SetGamma |
|
//! |
|
//! Description: This API sets the gamma conversion parameters. |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_VIO_SetConfig. |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI device handle as input. |
|
//! \param [in] pGamma Pointer to gamma parameters |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION Stucture version invalid |
|
//! \retval ::NVAPI_NOT_SUPPORTED Video I/O not supported |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
//! \retval ::NVAPI_DEVICE_BUSY Access denied for requested access |
|
/////////////////////////////////////////////////////////////////////////////// |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_VIO_SetConfig.") |
|
NVAPI_INTERFACE NvAPI_VIO_SetGamma(NvVioHandle hVioHandle, |
|
NVVIOGAMMACORRECTION *pGamma); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_GetGamma |
|
//! |
|
//! Description: This API gets the gamma conversion parameters. |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_VIO_GetConfig. |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI device handle as input. |
|
//! \param [out] pGamma Pointer to gamma parameters |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION Stucture version invalid |
|
//! \retval ::NVAPI_NOT_SUPPORTED Video I/O not supported |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
/////////////////////////////////////////////////////////////////////////////// |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_VIO_GetConfig.") |
|
NVAPI_INTERFACE NvAPI_VIO_GetGamma(NvVioHandle hVioHandle, |
|
NVVIOGAMMACORRECTION* pGamma); |
|
//////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_SetSyncDelay |
|
//! |
|
//! Description: This API sets the sync delay parameters. |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_VIO_SetConfig. |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI device handle as input. |
|
//! \param [in] pSyncDelay Pointer to sync delay parameters |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION Stucture version invalid |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
//! \retval ::NVAPI_DEVICE_BUSY Access denied for requested access |
|
/////////////////////////////////////////////////////////////////////////////// |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_VIO_SetConfig.") |
|
NVAPI_INTERFACE NvAPI_VIO_SetSyncDelay(NvVioHandle hVioHandle, |
|
const NVVIOSYNCDELAY *pSyncDelay); |
|
|
|
//////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_GetSyncDelay |
|
//! |
|
//! Description: This API gets the sync delay parameters. |
|
//! |
|
//! \deprecated Do not use this function - it is deprecated in release 290. Instead, use NvAPI_VIO_GetConfig. |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI device handle as input. |
|
//! \param [out] pSyncDelay Pointer to sync delay parameters |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION Stucture version invalid |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
/////////////////////////////////////////////////////////////////////////////// |
|
__nvapi_deprecated_function("Do not use this function - it is deprecated in release 290. Instead, use NvAPI_VIO_GetConfig.") |
|
NVAPI_INTERFACE NvAPI_VIO_GetSyncDelay(NvVioHandle hVioHandle, |
|
NVVIOSYNCDELAY *pSyncDelay); |
|
|
|
typedef enum _NVVIOPCILINKRATE |
|
{ |
|
NVVIOPCILINKRATE_UNKNOWN = 0, |
|
NVVIOPCILINKRATE_GEN1 = 1, //<! 2.5 Gbps. |
|
NVVIOPCILINKRATE_GEN2 = 2, //<! 5 Gbps. |
|
NVVIOPCILINKRATE_GEN3 = 3, //<! 8 Gbps. |
|
}NVVIOPCILINKRATE; |
|
|
|
typedef enum _NVVIOPCILINKWIDTH |
|
{ |
|
NVVIOPCILINKWIDTH_UNKNOWN = 0, |
|
NVVIOPCILINKWIDTH_x1 = 1, |
|
NVVIOPCILINKWIDTH_x2 = 2, |
|
NVVIOPCILINKWIDTH_x4 = 4, |
|
NVVIOPCILINKWIDTH_x8 = 8, |
|
NVVIOPCILINKWIDTH_x16 = 16, |
|
}NVVIOPCILINKWIDTH; |
|
|
|
typedef struct _NVVIOPCIINFO |
|
{ |
|
NvU32 version; //!< Structure version |
|
|
|
NvU32 pciDeviceId; //!< specifies the internal PCI device identifier for the GVI. |
|
NvU32 pciSubSystemId; //!< specifies the internal PCI subsystem identifier for the GVI. |
|
NvU32 pciRevisionId; //!< specifies the internal PCI device-specific revision identifier for the GVI. |
|
NvU32 pciDomain; //!< specifies the PCI domain of the GVI device. |
|
NvU32 pciBus; //!< specifies the PCI bus number of the GVI device. |
|
NvU32 pciSlot; //!< specifies the PCI slot number of the GVI device. |
|
NVVIOPCILINKWIDTH pciLinkWidth; //!< specifies the the negotiated PCIE link width. |
|
NVVIOPCILINKRATE pciLinkRate; //!< specifies the the negotiated PCIE link rate. |
|
} NVVIOPCIINFO_V1; |
|
|
|
typedef NVVIOPCIINFO_V1 NVVIOPCIINFO; |
|
#define NVVIOPCIINFO_VER1 MAKE_NVAPI_VERSION(NVVIOPCIINFO_V1,1) |
|
#define NVVIOPCIINFO_VER NVVIOPCIINFO_VER1 |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_VIO_GetPCIInfo() |
|
// |
|
// DESCRIPTION: This API gets PCI information of the attached SDI(input) capture card. |
|
// |
|
// PARAMETERS: hVioHandle (IN) - Handle to SDI capture card. |
|
// pVioPCIInfo (OUT) - PCI information of the attached SDI capture card. |
|
// |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
// |
|
// RETURN STATUS: This API can return any of the error codes enumerated in #NvAPI_Status. If there are return error codes with |
|
// specific meaning for this API, they are listed below. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_GetPCIInfo(__in NvVioHandle hVioHandle, |
|
__inout NVVIOPCIINFO* pVioPCIInfo); |
|
|
|
//////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_IsRunning |
|
//! |
|
//! Description: This API determines if Video I/O is running. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle[IN] The caller provides the SDI device handle as input. |
|
//! |
|
//! \retval ::NVAPI_DRIVER_RUNNING Video I/O running |
|
//! \retval ::NVAPI_DRIVER_NOTRUNNING Video I/O not running |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_IsRunning(NvVioHandle hVioHandle); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_Start |
|
//! |
|
//! Description: This API starts Video I/O. |
|
//! This API should be called for NVVIOOWNERTYPE_DESKTOP only and will not work for OGL applications. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle[IN] The caller provides the SDI device handle as input. |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_NOT_SUPPORTED Video I/O not supported |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
//! \retval ::NVAPI_DEVICE_BUSY Access denied for requested access |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_Start(NvVioHandle hVioHandle); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_Stop |
|
//! |
|
//! Description: This API stops Video I/O. |
|
//! This API should be called for NVVIOOWNERTYPE_DESKTOP only and will not work for OGL applications. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle[IN] The caller provides the SDI device handle as input. |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_NOT_SUPPORTED Video I/O not supported |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
//! \retval ::NVAPI_DEVICE_BUSY Access denied for requested access |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_Stop(NvVioHandle hVioHandle); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_IsFrameLockModeCompatible |
|
//! |
|
//! Description: This API checks whether modes are compatible in frame lock mode. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI device handle as input. |
|
//! \param [in] srcEnumIndex Source Enumeration index |
|
//! \param [in] destEnumIndex Destination Enumeration index |
|
//! \param [out] pbCompatible Pointer to receive compatibility |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_NOT_SUPPORTED Video I/O not supported |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_IsFrameLockModeCompatible(NvVioHandle hVioHandle, |
|
NvU32 srcEnumIndex, |
|
NvU32 destEnumIndex, |
|
NvU32* pbCompatible); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_EnumDevices |
|
//! |
|
//! Description: This API enumerate all VIO devices connected to the system. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [out] NvVioHandle User passes the pointer of NvVioHandle[] array to get handles to |
|
//! all the connected video I/O devices. |
|
//! \param [out] vioDeviceCount User gets total number of VIO devices connected to the system. |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
//! \retval ::NVAPI_NVIDIA_DEVICE_NOT_FOUND No SDI Device found |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_EnumDevices(NvVioHandle hVioHandle[NVAPI_MAX_VIO_DEVICES], |
|
NvU32 *vioDeviceCount); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_QueryTopology |
|
//! |
|
//! Description: This API queries the valid SDI topologies. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [out] pNvVIOTopology User passes the pointer to NVVIOTOPOLOGY to fetch all valid SDI topologies. |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI Not Initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Arguments passed to API are not valid |
|
//! \retval ::NVAPI_INCOMPATIBLE_STRUCT_VERSION Invalid structure version |
|
//! \retval ::NVAPI_ERROR NVAPI Random errors |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_QueryTopology(NV_VIO_TOPOLOGY *pNvVIOTopology); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_EnumSignalFormats |
|
//! |
|
//! Description: This API enumerates signal formats supported by Video I/O. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI device handle as input. |
|
//! \param [in] enumIndex Enumeration index |
|
//! \param [out] pSignalFormatDetail Pointer to receive detail or NULL |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI not initialized |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Invalid argument passed |
|
//! \retval ::NVAPI_END_ENUMERATION No more signal formats to enumerate |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_EnumSignalFormats(NvVioHandle hVioHandle, |
|
NvU32 enumIndex, |
|
NVVIOSIGNALFORMATDETAIL *pSignalFormatDetail); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
//! Function: NvAPI_VIO_EnumDataFormats |
|
//! |
|
//! Description: This API enumerates data formats supported by Video I/O. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 190 |
|
//! |
|
//! \param [in] NvVioHandle The caller provides the SDI device handle as input. |
|
//! \param [in] enumIndex Enumeration index |
|
//! \param [out] pDataFormatDetail Pointer to receive detail or NULL |
|
//! |
|
//! \retval ::NVAPI_OK Success |
|
//! \retval ::NVAPI_END_ENUMERATION No more data formats to enumerate |
|
//! \retval ::NVAPI_NOT_SUPPORTED Unsupported NVVIODATAFORMAT_ enumeration |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_VIO_EnumDataFormats(NvVioHandle hVioHandle, |
|
NvU32 enumIndex, |
|
NVVIODATAFORMATDETAIL *pDataFormatDetail); |
|
|
|
|
|
//! @} |
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////// |
|
// CAMERA TEST API |
|
// These APIs allows test apps to perform low level camera tests |
|
|
|
//! \addtogroup vidio |
|
//! @{ |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_CreateConfigurationProfileRegistryKey |
|
// |
|
//! \fn NvAPI_Stereo_CreateConfigurationProfileRegistryKey(NV_STEREO_REGISTRY_PROFILE_TYPE registryProfileType) |
|
//! |
|
//! DESCRIPTION: Creates new configuration registry key for current application. |
|
//! |
|
//! If there is no configuration profile prior to the function call, |
|
//! this API tries to create a new configuration profile registry key |
|
//! for a given application and fill it with the default values. |
|
//! If an application already has a configuration profile registry key, the API does nothing. |
|
//! The name of the key is automatically set to the name of the executable that calls this function. |
|
//! Because of this, the executable should have a distinct and unique name. |
|
//! If the application is using only one version of DirectX, then the default profile type will be appropriate. |
|
//! If the application is using more than one version of DirectX from the same executable, |
|
//! it should use the appropriate profile type for each configuration profile. |
|
//! |
|
//! HOW TO USE: When there is a need for an application to have default stereo parameter values, |
|
//! use this function to create a key to store the values. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 180 |
|
//! |
|
//! \param [in] registryProfileType Type of profile the application wants to create. It should be one of the symbolic constants defined in |
|
//! ::NV_STEREO_REGISTRY_PROFILE_TYPE. Any other value will cause function to do nothing and return |
|
//! ::NV_STEREO_REGISTRY_PROFILE_TYPE_NOT_SUPPORTED. |
|
//! |
|
//! \retval ::NVAPI_OK Key exists in the registry. |
|
//! \retval ::NVAPI_STEREO_REGISTRY_PROFILE_TYPE_NOT_SUPPORTED This profile type is not supported. |
|
//! \retval ::NVAPI_STEREO_REGISTRY_ACCESS_FAILED Access to registry failed. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED Stereo part of NVAPI not initialized. |
|
//! \retval ::NVAPI_ERROR |
|
//! |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
|
|
//! \ingroup stereoapi |
|
//! Used in NvAPI_Stereo_CreateConfigurationProfileRegistryKey() |
|
typedef enum _NV_StereoRegistryProfileType |
|
{ |
|
NVAPI_STEREO_DEFAULT_REGISTRY_PROFILE, //!< Default registry configuration profile. |
|
NVAPI_STEREO_DX9_REGISTRY_PROFILE, //!< Separate registry configuration profile for a DirectX 9 executable. |
|
NVAPI_STEREO_DX10_REGISTRY_PROFILE //!< Separate registry configuration profile for a DirectX 10 executable. |
|
} NV_STEREO_REGISTRY_PROFILE_TYPE; |
|
|
|
|
|
//! \ingroup stereoapi |
|
NVAPI_INTERFACE NvAPI_Stereo_CreateConfigurationProfileRegistryKey(NV_STEREO_REGISTRY_PROFILE_TYPE registryProfileType); |
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_DeleteConfigurationProfileRegistryKey |
|
// |
|
//! DESCRIPTION: Removes configuration registry key for current application. |
|
//! |
|
//! If an application already has a configuration profile prior to this function call, |
|
//! the function attempts to remove the application's configuration profile registry key from the registry. |
|
//! If there is no configuration profile registry key prior to the function call, |
|
//! the function does nothing and does not report an error. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 180 |
|
//! |
|
//! \param [in] registryProfileType Type of profile that the application wants to delete. This should be one of the symbolic |
|
//! constants defined in ::NV_STEREO_REGISTRY_PROFILE_TYPE. Any other value will cause the function |
|
//! to do nothing and return ::NV_STEREO_REGISTRY_PROFILE_TYPE_NOT_SUPPORTED. |
|
//! |
|
//! \retval ::NVAPI_OK Key does not exist in the registry any more. |
|
//! \retval ::NVAPI_STEREO_REGISTRY_PROFILE_TYPE_NOT_SUPPORTED This profile type is not supported. |
|
//! \retval ::NVAPI_STEREO_REGISTRY_ACCESS_FAILED Access to registry failed. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI is not initialized. |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED Stereo part of NVAPI is not initialized. |
|
//! \retval ::NVAPI_ERROR |
|
//! |
|
//! \ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Stereo_DeleteConfigurationProfileRegistryKey(NV_STEREO_REGISTRY_PROFILE_TYPE registryProfileType); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_SetConfigurationProfileValue |
|
// |
|
//! \fn NvAPI_Stereo_SetConfigurationProfileValue(NV_STEREO_REGISTRY_PROFILE_TYPE registryProfileType, NV_STEREO_REGISTRY_ID valueRegistryID, void *pValue) |
|
//! |
|
//! DESCRIPTION: This API sets the given parameter value under the application's registry key. |
|
//! |
|
//! If the value does not exist under the application's registry key, |
|
//! the value will be created under the key. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 180 |
|
//! |
|
//! \param [in] registryProfileType The type of profile the application wants to access. It should be one of the |
|
//! symbolic constants defined in ::NV_STEREO_REGISTRY_PROFILE_TYPE. Any other value |
|
//! will cause function to do nothing and return ::NV_STEREO_REGISTRY_PROFILE_TYPE_NOT_SUPPORTED. |
|
//! \param [in] valueRegistryID ID of the value that is being set. It should be one of the symbolic constants defined in |
|
//! ::NV_STEREO_REGISTRY_PROFILE_TYPE. Any other value will cause function to do nothing |
|
//! and return ::NVAPI_STEREO_REGISTRY_VALUE_NOT_SUPPORTED. |
|
//! \param [in] pValue Address of the value that is being set. It should be either address of a DWORD or of a float, |
|
//! dependent on the type of the stereo parameter whose value is being set. The API will then cast that |
|
//! address to DWORD* and write whatever is in those 4 bytes as a DWORD to the registry. |
|
//! |
|
//! \retval ::NVAPI_OK Value is written to registry. |
|
//! \retval ::NVAPI_STEREO_REGISTRY_PROFILE_TYPE_NOT_SUPPORTED This profile type is not supported. |
|
//! \retval ::NVAPI_STEREO_REGISTRY_VALUE_NOT_SUPPORTED This value is not supported. |
|
//! \retval ::NVAPI_STEREO_REGISTRY_ACCESS_FAILED Access to registry failed. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI is not initialized. |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED Stereo part of NVAPI is not initialized. |
|
//! \retval ::NVAPI_ERROR Something is wrong (generic error). |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
|
|
//! \ingroup stereoapi |
|
//! Used in NvAPI_Stereo_SetConfigurationProfileValue() |
|
typedef enum _NV_StereoRegistryID |
|
{ |
|
NVAPI_CONVERGENCE_ID, //!< Symbolic constant for convergence registry ID. |
|
NVAPI_FRUSTUM_ADJUST_MODE_ID, //!< Symbolic constant for frustum adjust mode registry ID. |
|
} NV_STEREO_REGISTRY_ID; |
|
|
|
|
|
//! \ingroup stereoapi |
|
NVAPI_INTERFACE NvAPI_Stereo_SetConfigurationProfileValue(NV_STEREO_REGISTRY_PROFILE_TYPE registryProfileType, NV_STEREO_REGISTRY_ID valueRegistryID, void *pValue); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_DeleteConfigurationProfileValue |
|
// |
|
//! DESCRIPTION: This API removes the given value from the application's configuration profile registry key. |
|
//! If there is no such value, the function does nothing and does not report an error. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 180 |
|
//! |
|
//! \param [in] registryProfileType The type of profile the application wants to access. It should be one of the |
|
//! symbolic constants defined in ::NV_STEREO_REGISTRY_PROFILE_TYPE. Any other value will |
|
//! cause function to do nothing and return ::NV_STEREO_REGISTRY_PROFILE_TYPE_NOT_SUPPORTED. |
|
//! \param [in] valueRegistryID ID of the value that is being deleted. It should be one of the symbolic constants defined in |
|
//! ::NV_STEREO_REGISTRY_PROFILE_TYPE. Any other value will cause function to do nothing and return |
|
//! ::NVAPI_STEREO_REGISTRY_VALUE_NOT_SUPPORTED. |
|
//! |
|
//! \retval ::NVAPI_OK Value does not exist in registry any more. |
|
//! \retval ::NVAPI_STEREO_REGISTRY_PROFILE_TYPE_NOT_SUPPORTED This profile type is not supported. |
|
//! \retval ::NVAPI_STEREO_REGISTRY_VALUE_NOT_SUPPORTED This value is not supported. |
|
//! \retval ::NVAPI_STEREO_REGISTRY_ACCESS_FAILED Access to registry failed. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED Stereo part of NVAPI not initialized. |
|
//! \retval ::NVAPI_ERROR |
|
//! |
|
//! \ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Stereo_DeleteConfigurationProfileValue(NV_STEREO_REGISTRY_PROFILE_TYPE registryProfileType, NV_STEREO_REGISTRY_ID valueRegistryID); |
|
|
|
|
|
|
|
|
|
|
|
|
|
//! \addtogroup stereoapi |
|
//! @{ |
|
|
|
typedef struct _NVAPI_STEREO_CAPS |
|
{ |
|
NvU32 version; |
|
NvU32 supportsWindowedModeOff : 1; |
|
NvU32 supportsWindowedModeAutomatic : 1; |
|
NvU32 supportsWindowedModePersistent : 1; |
|
NvU32 reserved : 29; // must be 0 |
|
NvU32 reserved2[3]; // must be 0 |
|
} NVAPI_STEREO_CAPS_V1; |
|
|
|
#define NVAPI_STEREO_CAPS_VER1 MAKE_NVAPI_VERSION(NVAPI_STEREO_CAPS,1) |
|
#define NVAPI_STEREO_CAPS_VER NVAPI_STEREO_CAPS_VER1 |
|
|
|
typedef NVAPI_STEREO_CAPS_V1 NVAPI_STEREO_CAPS; |
|
|
|
//! @} |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_GetStereoSupport |
|
// |
|
//! DESCRIPTION: This API checks what kind of stereo support is currently supported on a particular display. |
|
//! If the the display is prohibited from showing stereo (e.g. secondary in a multi-mon setup), we will |
|
//! return 0 for all stereo modes (full screen exclusive, automatic windowed, persistent windowed). |
|
//! Otherwise, we will check which stereo mode is supported. On 120Hz display, this will be what |
|
//! the user chooses in control panel. On HDMI 1.4 display, persistent windowed mode is always assumed to be |
|
//! supported. Note that this function does not check if the CURRENT RESOLUTION/REFRESH RATE can support |
|
//! stereo. For HDMI 1.4, it is the app's responsibility to change the resolution/refresh rate to one that is |
|
//! 3D compatible. For 120Hz, the driver will ALWAYS force 120Hz anyway. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 304 |
|
//! |
|
//! \param [in] hMonitor handle to monitor that app is going to run on |
|
//! \param [out] pCaps Address where the result of the inquiry will be placed. |
|
//! *pCaps is defined in NVAPI_STEREO_CAPS. |
|
//! \return This API can return any of the following error codes enumerated in #NvAPI_Status |
|
//! \retval ::NVAPI_OK |
|
//! |
|
//! \ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Stereo_GetStereoSupport(__in NvMonitorHandle hMonitor, __out NVAPI_STEREO_CAPS *pCaps); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_DecreaseSeparation |
|
// |
|
//! DESCRIPTION: This API decreases separation for the given device interface (just like the Ctrl+F3 hotkey). |
|
//! |
|
//! WHEN TO USE: After the stereo handle for device interface is created via successfull call to the appropriate NvAPI_Stereo_CreateHandleFrom() function. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 180 |
|
//! |
|
//! \param [in] stereoHandle Stereo handle that corresponds to the device interface. |
|
//! |
|
//! \retval ::NVAPI_OK - Decrease of separation percentage was successfull. |
|
//! \retval ::NVAPI_STEREO_INVALID_DEVICE_INTERFACE - Device interface is not valid. Create again, then attach again. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED - NVAPI not initialized. |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED - Stereo part of NVAPI not initialized. |
|
//! \retval ::NVAPI_ERROR - Something is wrong (generic error). |
|
//! |
|
//! \ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Stereo_DecreaseSeparation(StereoHandle stereoHandle); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_IncreaseSeparation |
|
// |
|
//! DESCRIPTION: This API increases separation for the given device interface (just like the Ctrl+F4 hotkey). |
|
//! |
|
//! WHEN TO USE: After the stereo handle for the device interface is created via successfull call to the appropriate NvAPI_Stereo_CreateHandleFrom() function. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 180 |
|
//! |
|
//! \param [in] stereoHandle Stereo handle that corresponds to the device interface. |
|
//! |
|
//! \retval ::NVAPI_OK Increase of separation percentage was successfull. |
|
//! \retval ::NVAPI_STEREO_INVALID_DEVICE_INTERFACE Device interface is not valid. Create again, then attach again. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED NVAPI not initialized. |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED Stereo part of NVAPI not initialized. |
|
//! \retval ::NVAPI_ERROR Something is wrong (generic error). |
|
//! |
|
//! \ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Stereo_IncreaseSeparation(StereoHandle stereoHandle); |
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_DecreaseConvergence |
|
// |
|
//! DESCRIPTION: This API decreases convergence for the given device interface (just like the Ctrl+F5 hotkey). |
|
//! |
|
//! WHEN TO USE: After the stereo handle for the device interface is created via successfull call to the appropriate NvAPI_Stereo_CreateHandleFrom() function. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 180 |
|
//! |
|
//! \param [in] stereoHandle Stereo handle that corresponds to the device interface. |
|
//! |
|
//! \retval ::NVAPI_OK - Decrease of convergence was successfull. |
|
//! \retval ::NVAPI_STEREO_INVALID_DEVICE_INTERFACE - Device interface is not valid. Create again, then attach again. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED - NVAPI not initialized. |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED - Stereo part of NVAPI not initialized. |
|
//! \retval ::NVAPI_ERROR - Something is wrong (generic error). |
|
//! |
|
//! \ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Stereo_DecreaseConvergence(StereoHandle stereoHandle); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_IncreaseConvergence |
|
// |
|
//! DESCRIPTION: This API increases convergence for given the device interface (just like the Ctrl+F5 hotkey). |
|
//! |
|
//! WHEN TO USE: After the stereo handle for the device interface is created via successfull call to the appropriate NvAPI_Stereo_CreateHandleFrom() function. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 180 |
|
//! |
|
//! \param [in] stereoHandle Stereo handle that corresponds to the device interface. |
|
//! |
|
//! \retval ::NVAPI_OK Increase of convergence was successfull. |
|
//! \retval ::NVAPI_STEREO_INVALID_DEVICE_INTERFACE Device interface is not valid. Create again, then attach again. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED Stereo part of NVAPI not initialized. |
|
//! \retval ::NVAPI_ERROR |
|
//! |
|
//! \ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Stereo_IncreaseConvergence(StereoHandle stereoHandle); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_GetFrustumAdjustMode |
|
// |
|
//! \fn NvAPI_Stereo_GetFrustumAdjustMode(StereoHandle stereoHandle, NV_FRUSTUM_ADJUST_MODE *pFrustumAdjustMode) |
|
//! DESCRIPTION: This API gets the current frustum adjust mode value. |
|
//! |
|
//! WHEN TO USE: After the stereo handle for the device interface is created via successfull call to the appropriate NvAPI_Stereo_CreateHandleFrom() function. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 180 |
|
//! |
|
//! \param [in] stereoHandle Stereo handle that corresponds to the device interface. |
|
//! \param [out] pFrustumAdjustMode Address of the NV_FRUSTUM_ADJUST_MODE type variable to store current frustum value in. |
|
//! |
|
//! \retval ::NVAPI_OK - Retrieval of frustum adjust mode was successfull. |
|
//! \retval ::NVAPI_STEREO_INVALID_DEVICE_INTERFACE - Device interface is not valid. Create again, then attach again. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED - NVAPI not initialized. |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED - Stereo part of NVAPI not initialized. |
|
//! \retval ::NVAPI_ERROR - Something is wrong (generic error). |
|
//! |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \ingroup stereoapi |
|
//! Used in NvAPI_Stereo_GetFrustumAdjustMode(). |
|
typedef enum _NV_FrustumAdjustMode |
|
{ |
|
NVAPI_NO_FRUSTUM_ADJUST, //!< Do not adjust frustum. |
|
NVAPI_FRUSTUM_STRETCH, //!< Stretch images in X. |
|
NVAPI_FRUSTUM_CLEAR_EDGES //!< Clear corresponding edges for each eye. |
|
} NV_FRUSTUM_ADJUST_MODE; |
|
|
|
//! \ingroup stereoapi |
|
NVAPI_INTERFACE NvAPI_Stereo_GetFrustumAdjustMode(StereoHandle stereoHandle, NV_FRUSTUM_ADJUST_MODE *pFrustumAdjustMode); |
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_SetFrustumAdjustMode |
|
// |
|
//! DESCRIPTION: This API sets the current frustum adjust mode value. |
|
//! |
|
//! WHEN TO USE: After the stereo handle for the device interface is created via successfull call to the appropriate NvAPI_Stereo_CreateHandleFrom() function. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 180 |
|
//! |
|
//! \param [in] stereoHandle Stereo handle that corresponds to the device interface. |
|
//! \param [in] newFrustumAdjustModeValue New value for frustum adjust mode. It should be one of the symbolic constants defined in |
|
//! ::NV_FRUSTUM_ADJUST_MODE. Any other value will cause function to do nothing and return |
|
//! ::NVAPI_STEREO_FRUSTUM_ADJUST_MODE_NOT_SUPPORTED. |
|
//! |
|
//! \retval ::NVAPI_OK Retrieval of frustum adjust mode was successfull. |
|
//! \retval ::NVAPI_STEREO_INVALID_DEVICE_INTERFACE Device interface is not valid. Create again, then attach again. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED Stereo part of NVAPI not initialized. |
|
//! \retval ::NVAPI_STEREO_FRUSTUM_ADJUST_MODE_NOT_SUPPORTED Given frustum adjust mode is not supported. |
|
//! \retval ::NVAPI_ERROR |
|
//! |
|
//! \ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Stereo_SetFrustumAdjustMode(StereoHandle stereoHandle, NV_FRUSTUM_ADJUST_MODE newFrustumAdjustModeValue); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_CaptureJpegImage |
|
// |
|
//! DESCRIPTION: This API captures the current stereo image in JPEG stereo format with the given quality. |
|
//! Only the last capture call per flip will be effective. |
|
//! |
|
//! WHEN TO USE: After the stereo handle for the device interface is created via successfull call to the appropriate NvAPI_Stereo_CreateHandleFrom() function. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 180 |
|
//! |
|
//! \param [in] stereoHandle Stereo handle that corresponds to the device interface. |
|
//! \param [in] quality Quality of the JPEG image to be captured. Integer value betweeen 0 and 100. |
|
//! |
|
//! \retval ::NVAPI_OK Image captured. |
|
//! \retval ::NVAPI_STEREO_INVALID_DEVICE_INTERFACE Device interface is not valid. Create again, then attach again. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED |
|
//! \retval ::NVAPI_STEREO_PARAMETER_OUT_OF_RANGE Given quality is out of [0..100] range. |
|
//! \retval ::NVAPI_ERROR |
|
//! |
|
//! \ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Stereo_CaptureJpegImage(StereoHandle stereoHandle, NvU32 quality); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_InitActivation |
|
// |
|
//! DESCRIPTION: This API allows an application to enable stereo viewing, without the need of a GUID/Key pair |
|
//! This API cannot be used to enable stereo viewing on 3DTV. |
|
//! |
|
//! HOW TO USE: Call this function immediately after device creation, then follow with a reset. \n |
|
//! Very generically: |
|
//! Create Device->Create Stereo Handle->InitActivation->Reset Device |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! \since Release: 302 |
|
//! |
|
//! \param [in] stereoHandle Stereo handle corresponding to the device interface. |
|
//! \param [in] bDelayed Use delayed activation |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, |
|
//! they are listed below. |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED - Stereo part of NVAPI not initialized. |
|
//! |
|
//! \ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
|
|
//! \addtogroup stereoapi |
|
//! @{ |
|
|
|
//! InitActivation Flags |
|
typedef enum _NVAPI_STEREO_INIT_ACTIVATION_FLAGS |
|
{ |
|
NVAPI_STEREO_INIT_ACTIVATION_IMMEDIATE = 0X00, |
|
NVAPI_STEREO_INIT_ACTIVATION_DELAYED = 0x01, |
|
} NVAPI_STEREO_INIT_ACTIVATION_FLAGS; |
|
|
|
NVAPI_INTERFACE NvAPI_Stereo_InitActivation(__in StereoHandle hStereoHandle, __in NVAPI_STEREO_INIT_ACTIVATION_FLAGS flags); |
|
|
|
//! @} |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_Trigger_Activation |
|
// |
|
//! DESCRIPTION: This API allows an application to trigger creation of a stereo desktop, |
|
//! in case the creation was stopped on application launch. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! \since Release: 302 |
|
//! |
|
//! \param [in] stereoHandle Stereo handle that corresponds to the device interface. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, |
|
//! they are listed below. |
|
//! \retval ::NVAPI_STEREO_INIT_ACTIVATION_NOT_DONE - Stereo InitActivation not called. |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED - Stereo part of NVAPI not initialized. |
|
//! |
|
//! \ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Stereo_Trigger_Activation(__in StereoHandle hStereoHandle); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_CapturePngImage |
|
// |
|
//! DESCRIPTION: This API captures the current stereo image in PNG stereo format. |
|
//! Only the last capture call per flip will be effective. |
|
//! |
|
//! WHEN TO USE: After the stereo handle for the device interface is created via successfull call to the appropriate NvAPI_Stereo_CreateHandleFrom() function. |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 180 |
|
//! |
|
//! \param [in] stereoHandle Stereo handle corresponding to the device interface. |
|
//! |
|
//! \retval ::NVAPI_OK Image captured. |
|
//! \retval ::NVAPI_STEREO_INVALID_DEVICE_INTERFACE Device interface is not valid. Create again, then attach again. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED Stereo part of NVAPI not initialized. |
|
//! \retval ::NVAPI_ERROR |
|
//! |
|
//! \ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Stereo_CapturePngImage(StereoHandle stereoHandle); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_ReverseStereoBlitControl |
|
// |
|
//! DESCRIPTION: This API turns on/off reverse stereo blit. |
|
//! |
|
//! HOW TO USE: Use after the stereo handle for the device interface is created via successfull call to the appropriate |
|
//! NvAPI_Stereo_CreateHandleFrom() function. |
|
//! After reversed stereo blit control is turned on, blits from the stereo surface will |
|
//! produce the right-eye image in the left side of the destination surface and the left-eye |
|
//! image in the right side of the destination surface. |
|
//! |
|
//! In DirectX 9, the destination surface must be created as the render target, and StretchRect must be used. |
|
//! Conditions: |
|
//! - DstWidth == 2*SrcWidth |
|
//! - DstHeight == SrcHeight |
|
//! - Src surface is the stereo surface. |
|
//! - SrcRect must be {0,0,SrcWidth,SrcHeight} |
|
//! - DstRect must be {0,0,DstWidth,DstHeight} |
|
//! |
|
//! In DirectX 10, ResourceCopyRegion must be used. |
|
//! Conditions: |
|
//! - DstWidth == 2*SrcWidth |
|
//! - DstHeight == SrcHeight |
|
//! - dstX == 0, |
|
//! - dstY == 0, |
|
//! - dstZ == 0, |
|
//! - SrcBox: left=top=front==0; right==SrcWidth; bottom==SrcHeight; back==1; |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 185 |
|
//! |
|
//! \param [in] stereoHandle Stereo handle corresponding to the device interface. |
|
//! \param [in] TurnOn != 0 : Turns on \n |
|
//! == 0 : Turns off |
|
//! |
|
//! |
|
//! \retval ::NVAPI_OK Retrieval of frustum adjust mode was successfull. |
|
//! \retval ::NVAPI_STEREO_INVALID_DEVICE_INTERFACE Device interface is not valid. Create again, then attach again. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED Stereo part of NVAPI not initialized. |
|
//! \retval ::NVAPI_ERROR |
|
//! |
|
//! \ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Stereo_ReverseStereoBlitControl(StereoHandle hStereoHandle, NvU8 TurnOn); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_Stereo_SetNotificationMessage |
|
// |
|
//! DESCRIPTION: This API is a Setup notification message that the stereo driver uses to notify the application |
|
//! when the user changes the stereo driver state. |
|
//! |
|
//! When the user changes the stereo state (Activated or Deactivated, separation or conversion) |
|
//! the stereo driver posts a defined message with the following parameters: |
|
//! |
|
//! lParam is the current conversion. (Actual conversion is *(float*)&lParam ) |
|
//! |
|
//! wParam == MAKEWPARAM(l, h) where |
|
//! - l == 0 if stereo is deactivated |
|
//! - l == 1 if stereo is deactivated |
|
//! - h is the current separation. (Actual separation is float(h*100.f/0xFFFF) |
|
//! |
|
//! Call this API with NULL hWnd to prohibit notification. |
|
//! |
|
//! WHEN TO USE: Use after the stereo handle for device interface is created via successful call to appropriate |
|
//! NvAPI_Stereo_CreateHandleFrom() function. |
|
//! |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! \since Release: 180 |
|
//! |
|
//! |
|
//! \param [in] stereoHandle Stereo handle corresponding to the device interface. |
|
//! \param [in] hWnd Window HWND that will be notified when the user changes the stereo driver state. |
|
//! Actual HWND must be cast to an NvU64. |
|
//! \param [in] messageID MessageID of the message that will be posted to hWnd |
|
//! |
|
//! \retval ::NVAPI_OK Notification set. |
|
//! \retval ::NVAPI_STEREO_INVALID_DEVICE_INTERFACE Device interface is not valid. Create again, then attach again. |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED |
|
//! \retval ::NVAPI_STEREO_NOT_INITIALIZED Stereo part of NVAPI not initialized. |
|
//! \retval ::NVAPI_ERROR |
|
//! |
|
//! \ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_Stereo_SetNotificationMessage(StereoHandle hStereoHandle, NvU64 hWnd,NvU64 messageID); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//! \ingroup stereoapi |
|
#define NVAPI_STEREO_QUADBUFFERED_API_VERSION 0x2 |
|
|
|
//! \ingroup stereoapi |
|
typedef enum _NV_StereoSwapChainMode |
|
{ |
|
NVAPI_STEREO_SWAPCHAIN_DEFAULT = 0, |
|
NVAPI_STEREO_SWAPCHAIN_STEREO = 1, |
|
NVAPI_STEREO_SWAPCHAIN_MONO = 2, |
|
} NV_STEREO_SWAPCHAIN_MODE; |
|
|
|
#if defined(__d3d10_h__) || defined(__d3d10_1_h__) || defined(__d3d11_h__) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D1x_CreateSwapChain |
|
// |
|
//! DESCRIPTION: This API allows the user to create a mono or a stereo swap chain. |
|
//! |
|
//! NOTE: NvAPI_D3D1x_CreateSwapChain is a wrapper of the method IDXGIFactory::CreateSwapChain which |
|
//! additionally notifies the D3D driver of the mode in which stereo mode the swap chain is to be |
|
//! created. |
|
//! |
|
//! \since Release: 285 |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \param [in] hStereoHandle Stereo handle that corresponds to the device interface. |
|
//! A pointer to the device that will write 2D images to the swap chain. |
|
//! \param [in] pDesc A pointer to the swap-chain description (DXGI_SWAP_CHAIN_DESC). This parameter cannot be NULL. |
|
//! \param [out] ppSwapChain A pointer to the swap chain created. |
|
//! \param [in] mode The stereo mode fot the swap chain. |
|
//! NVAPI_STEREO_SWAPCHAIN_DEFAULT |
|
//! NVAPI_STEREO_SWAPCHAIN_STEREO |
|
//! NVAPI_STEREO_SWAPCHAIN_MONO |
|
//! |
|
//! \retval ::NVAPI_OK The swap chain was created successfully. |
|
//! \retval ::NVAPI_ERROR The operation failed. |
|
//! |
|
//! \ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D1x_CreateSwapChain(StereoHandle hStereoHandle, |
|
DXGI_SWAP_CHAIN_DESC* pDesc, |
|
IDXGISwapChain** ppSwapChain, |
|
NV_STEREO_SWAPCHAIN_MODE mode); |
|
|
|
#endif //if defined(__d3d10_h__) || defined(__d3d10_1_h__) || defined(__d3d11_h__) |
|
|
|
|
|
#if defined(_D3D9_H_) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_D3D9_CreateSwapChain |
|
// |
|
//! DESCRIPTION: This API allows the user to create a mono or a stereo swap chain. |
|
//! |
|
//! NOTE: NvAPI_D3D9_CreateSwapChain is a wrapper of the method IDirect3DDevice9::CreateAdditionalSwapChain which |
|
//! additionally notifies the D3D driver if the swap chain creation mode must be stereo or mono. |
|
//! |
|
//! |
|
//! \since Release: 285 |
|
//! |
|
//! SUPPORTED OS: Windows 7 and higher |
|
//! |
|
//! |
|
//! \param [in] hStereoHandle Stereo handle that corresponds to the device interface. |
|
//! \param [in, out] pPresentationParameters A pointer to the swap-chain description (DXGI). This parameter cannot be NULL. |
|
//! \param [out] ppSwapChain A pointer to the swap chain created. |
|
//! \param [in] mode The stereo mode for the swap chain. |
|
//! NVAPI_STEREO_SWAPCHAIN_DEFAULT |
|
//! NVAPI_STEREO_SWAPCHAIN_STEREO |
|
//! NVAPI_STEREO_SWAPCHAIN_MONO |
|
//! |
|
//! \retval ::NVAPI_OK The swap chain creation was successful |
|
//! \retval ::NVAPI_ERROR The operation failed. |
|
//! |
|
//!\ingroup stereoapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_D3D9_CreateSwapChain(StereoHandle hStereoHandle, |
|
D3DPRESENT_PARAMETERS *pPresentationParameters, |
|
IDirect3DSwapChain9 **ppSwapChain, |
|
NV_STEREO_SWAPCHAIN_MODE mode); |
|
#endif //if defined(_D3D9_H_) |
|
|
|
|
|
|
|
|
|
|
|
//! \addtogroup drsapi |
|
//! @{ |
|
|
|
|
|
// GPU Profile APIs |
|
|
|
NV_DECLARE_HANDLE(NvDRSSessionHandle); |
|
NV_DECLARE_HANDLE(NvDRSProfileHandle); |
|
|
|
#define NVAPI_DRS_GLOBAL_PROFILE ((NvDRSProfileHandle) -1) |
|
|
|
#define NVAPI_SETTING_MAX_VALUES 100 |
|
|
|
typedef enum _NVDRS_SETTING_TYPE |
|
{ |
|
NVDRS_DWORD_TYPE, |
|
NVDRS_BINARY_TYPE, |
|
NVDRS_STRING_TYPE, |
|
NVDRS_WSTRING_TYPE |
|
} NVDRS_SETTING_TYPE; |
|
|
|
typedef enum _NVDRS_SETTING_LOCATION |
|
{ |
|
NVDRS_CURRENT_PROFILE_LOCATION, |
|
NVDRS_GLOBAL_PROFILE_LOCATION, |
|
NVDRS_BASE_PROFILE_LOCATION, |
|
NVDRS_DEFAULT_PROFILE_LOCATION |
|
} NVDRS_SETTING_LOCATION; |
|
|
|
|
|
typedef struct _NVDRS_GPU_SUPPORT |
|
{ |
|
NvU32 geforce : 1; |
|
NvU32 quadro : 1; |
|
NvU32 nvs : 1; |
|
NvU32 reserved4 : 1; |
|
NvU32 reserved5 : 1; |
|
NvU32 reserved6 : 1; |
|
NvU32 reserved7 : 1; |
|
NvU32 reserved8 : 1; |
|
NvU32 reserved9 : 1; |
|
NvU32 reserved10 : 1; |
|
NvU32 reserved11 : 1; |
|
NvU32 reserved12 : 1; |
|
NvU32 reserved13 : 1; |
|
NvU32 reserved14 : 1; |
|
NvU32 reserved15 : 1; |
|
NvU32 reserved16 : 1; |
|
NvU32 reserved17 : 1; |
|
NvU32 reserved18 : 1; |
|
NvU32 reserved19 : 1; |
|
NvU32 reserved20 : 1; |
|
NvU32 reserved21 : 1; |
|
NvU32 reserved22 : 1; |
|
NvU32 reserved23 : 1; |
|
NvU32 reserved24 : 1; |
|
NvU32 reserved25 : 1; |
|
NvU32 reserved26 : 1; |
|
NvU32 reserved27 : 1; |
|
NvU32 reserved28 : 1; |
|
NvU32 reserved29 : 1; |
|
NvU32 reserved30 : 1; |
|
NvU32 reserved31 : 1; |
|
NvU32 reserved32 : 1; |
|
} NVDRS_GPU_SUPPORT; |
|
|
|
//! Enum to decide on the datatype of setting value. |
|
typedef struct _NVDRS_BINARY_SETTING |
|
{ |
|
NvU32 valueLength; //!< valueLength should always be in number of bytes. |
|
NvU8 valueData[NVAPI_BINARY_DATA_MAX]; |
|
} NVDRS_BINARY_SETTING; |
|
|
|
typedef struct _NVDRS_SETTING_VALUES |
|
{ |
|
NvU32 version; //!< Structure Version |
|
NvU32 numSettingValues; //!< Total number of values available in a setting. |
|
NVDRS_SETTING_TYPE settingType; //!< Type of setting value. |
|
union //!< Setting can hold either DWORD or Binary value or string. Not mixed types. |
|
{ |
|
NvU32 u32DefaultValue; //!< Accessing default DWORD value of this setting. |
|
NVDRS_BINARY_SETTING binaryDefaultValue; //!< Accessing default Binary value of this setting. |
|
//!< Must be allocated by caller with valueLength specifying buffer size, or only valueLength will be filled in. |
|
NvAPI_UnicodeString wszDefaultValue; //!< Accessing default unicode string value of this setting. |
|
}; |
|
union //!< Setting values can be of either DWORD, Binary values or String type, |
|
{ //!< NOT mixed types. |
|
NvU32 u32Value; //!< All possible DWORD values for a setting |
|
NVDRS_BINARY_SETTING binaryValue; //!< All possible Binary values for a setting |
|
NvAPI_UnicodeString wszValue; //!< Accessing current unicode string value of this setting. |
|
}settingValues[NVAPI_SETTING_MAX_VALUES]; |
|
} NVDRS_SETTING_VALUES; |
|
|
|
//! Macro for constructing the version field of ::_NVDRS_SETTING_VALUES |
|
#define NVDRS_SETTING_VALUES_VER MAKE_NVAPI_VERSION(NVDRS_SETTING_VALUES,1) |
|
|
|
typedef struct _NVDRS_SETTING_V1 |
|
{ |
|
NvU32 version; //!< Structure Version |
|
NvAPI_UnicodeString settingName; //!< String name of setting |
|
NvU32 settingId; //!< 32 bit setting Id |
|
NVDRS_SETTING_TYPE settingType; //!< Type of setting value. |
|
NVDRS_SETTING_LOCATION settingLocation; //!< Describes where the value in CurrentValue comes from. |
|
NvU32 isCurrentPredefined; //!< It is different than 0 if the currentValue is a predefined Value, |
|
//!< 0 if the currentValue is a user value. |
|
NvU32 isPredefinedValid; //!< It is different than 0 if the PredefinedValue union contains a valid value. |
|
union //!< Setting can hold either DWORD or Binary value or string. Not mixed types. |
|
{ |
|
NvU32 u32PredefinedValue; //!< Accessing default DWORD value of this setting. |
|
NVDRS_BINARY_SETTING binaryPredefinedValue; //!< Accessing default Binary value of this setting. |
|
//!< Must be allocated by caller with valueLength specifying buffer size, |
|
//!< or only valueLength will be filled in. |
|
NvAPI_UnicodeString wszPredefinedValue; //!< Accessing default unicode string value of this setting. |
|
}; |
|
union //!< Setting can hold either DWORD or Binary value or string. Not mixed types. |
|
{ |
|
NvU32 u32CurrentValue; //!< Accessing current DWORD value of this setting. |
|
NVDRS_BINARY_SETTING binaryCurrentValue; //!< Accessing current Binary value of this setting. |
|
//!< Must be allocated by caller with valueLength specifying buffer size, |
|
//!< or only valueLength will be filled in. |
|
NvAPI_UnicodeString wszCurrentValue; //!< Accessing current unicode string value of this setting. |
|
}; |
|
} NVDRS_SETTING_V1; |
|
|
|
//! Macro for constructing the version field of ::_NVDRS_SETTING |
|
#define NVDRS_SETTING_VER1 MAKE_NVAPI_VERSION(NVDRS_SETTING_V1, 1) |
|
|
|
typedef NVDRS_SETTING_V1 NVDRS_SETTING; |
|
#define NVDRS_SETTING_VER NVDRS_SETTING_VER1 |
|
|
|
typedef struct _NVDRS_APPLICATION_V1 |
|
{ |
|
NvU32 version; //!< Structure Version |
|
NvU32 isPredefined; //!< Is the application userdefined/predefined |
|
NvAPI_UnicodeString appName; //!< String name of the Application |
|
NvAPI_UnicodeString userFriendlyName; //!< UserFriendly name of the Application |
|
NvAPI_UnicodeString launcher; //!< Indicates the name (if any) of the launcher that starts the application |
|
} NVDRS_APPLICATION_V1; |
|
|
|
typedef struct _NVDRS_APPLICATION_V2 |
|
{ |
|
NvU32 version; //!< Structure Version |
|
NvU32 isPredefined; //!< Is the application userdefined/predefined |
|
NvAPI_UnicodeString appName; //!< String name of the Application |
|
NvAPI_UnicodeString userFriendlyName; //!< UserFriendly name of the Application |
|
NvAPI_UnicodeString launcher; //!< Indicates the name (if any) of the launcher that starts the Application |
|
NvAPI_UnicodeString fileInFolder; //!< Select this application only if this file is found. |
|
//!< When specifying multiple files, separate them using the ':' character. |
|
} NVDRS_APPLICATION_V2; |
|
|
|
typedef struct _NVDRS_APPLICATION_V3 |
|
{ |
|
NvU32 version; //!< Structure Version |
|
NvU32 isPredefined; //!< Is the application userdefined/predefined |
|
NvAPI_UnicodeString appName; //!< String name of the Application |
|
NvAPI_UnicodeString userFriendlyName; //!< UserFriendly name of the Application |
|
NvAPI_UnicodeString launcher; //!< Indicates the name (if any) of the launcher that starts the Application |
|
NvAPI_UnicodeString fileInFolder; //!< Select this application only if this file is found. |
|
//!< When specifying multiple files, separate them using the ':' character. |
|
NvU32 isMetro:1; //!< Windows 8 style app |
|
NvU32 isCommandLine:1; //!< Command line parsing for the application name |
|
NvU32 reserved:30; //!< Reserved. Should be 0. |
|
} NVDRS_APPLICATION_V3; |
|
|
|
#define NVDRS_APPLICATION_VER_V1 MAKE_NVAPI_VERSION(NVDRS_APPLICATION_V1,1) |
|
#define NVDRS_APPLICATION_VER_V2 MAKE_NVAPI_VERSION(NVDRS_APPLICATION_V2,2) |
|
#define NVDRS_APPLICATION_VER_V3 MAKE_NVAPI_VERSION(NVDRS_APPLICATION_V3,3) |
|
|
|
typedef NVDRS_APPLICATION_V3 NVDRS_APPLICATION; |
|
#define NVDRS_APPLICATION_VER NVDRS_APPLICATION_VER_V3 |
|
|
|
typedef struct _NVDRS_PROFILE_V1 |
|
{ |
|
NvU32 version; //!< Structure Version |
|
NvAPI_UnicodeString profileName; //!< String name of the Profile |
|
NVDRS_GPU_SUPPORT gpuSupport; //!< This read-only flag indicates the profile support on either |
|
//!< Quadro, or Geforce, or both. |
|
NvU32 isPredefined; //!< Is the Profile user-defined, or predefined |
|
NvU32 numOfApps; //!< Total number of applications that belong to this profile. Read-only |
|
NvU32 numOfSettings; //!< Total number of settings applied for this Profile. Read-only |
|
} NVDRS_PROFILE_V1; |
|
|
|
typedef NVDRS_PROFILE_V1 NVDRS_PROFILE; |
|
|
|
//! Macro for constructing the version field of ::NVDRS_PROFILE |
|
#define NVDRS_PROFILE_VER1 MAKE_NVAPI_VERSION(NVDRS_PROFILE_V1,1) |
|
#define NVDRS_PROFILE_VER NVDRS_PROFILE_VER1 |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_CreateSession |
|
// |
|
//! DESCRIPTION: This API allocates memory and initializes the session. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [out] *phSession Return pointer to the session handle. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR: For miscellaneous errors. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_CreateSession(NvDRSSessionHandle *phSession); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_DestroySession |
|
// |
|
//! DESCRIPTION: This API frees the allocation: cleanup of NvDrsSession. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_DestroySession(NvDRSSessionHandle hSession); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_LoadSettings |
|
// |
|
//! DESCRIPTION: This API loads and parses the settings data. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_LoadSettings(NvDRSSessionHandle hSession); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_SaveSettings |
|
// |
|
//! DESCRIPTION: This API saves the settings data to the system. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_SaveSettings(NvDRSSessionHandle hSession); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_LoadSettingsFromFile |
|
// |
|
//! DESCRIPTION: This API loads settings from the given file path. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle |
|
//! \param [in] fileName Binary File Name/Path |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_LoadSettingsFromFile(NvDRSSessionHandle hSession, NvAPI_UnicodeString fileName); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_SaveSettingsToFile |
|
// |
|
//! DESCRIPTION: This API saves settings to the given file path. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] fileName Binary File Name/Path |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
// |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_SaveSettingsToFile(NvDRSSessionHandle hSession, NvAPI_UnicodeString fileName); |
|
|
|
//! @} |
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_CreateProfile |
|
// |
|
//! DESCRIPTION: This API creates an empty profile. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] *pProfileInfo Input pointer to NVDRS_PROFILE. |
|
//! \param [in] *phProfile Returns pointer to profile handle. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_CreateProfile(NvDRSSessionHandle hSession, NVDRS_PROFILE *pProfileInfo, NvDRSProfileHandle *phProfile); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_DeleteProfile |
|
// |
|
//! DESCRIPTION: This API deletes a profile or sets it back to a predefined value. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] hProfile Input profile handle. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS if the profile is found |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_DeleteProfile(NvDRSSessionHandle hSession, NvDRSProfileHandle hProfile); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_SetCurrentGlobalProfile |
|
// |
|
//! DESCRIPTION: This API sets the current global profile in the driver. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] wszGlobalProfileName Input current Global profile name. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_SetCurrentGlobalProfile(NvDRSSessionHandle hSession, NvAPI_UnicodeString wszGlobalProfileName); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_GetCurrentGlobalProfile |
|
// |
|
//! DESCRIPTION: This API returns the handle to the current global profile. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [out] *phProfile Returns current Global profile handle. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_GetCurrentGlobalProfile(NvDRSSessionHandle hSession, NvDRSProfileHandle *phProfile); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_GetProfileInfo |
|
// |
|
//! DESCRIPTION: This API gets information about the given profile. User needs to specify the name of the Profile. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] hProfile Input profile handle. |
|
//! \param [out] *pProfileInfo Return the profile info. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_GetProfileInfo(NvDRSSessionHandle hSession, NvDRSProfileHandle hProfile, NVDRS_PROFILE *pProfileInfo); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_SetProfileInfo |
|
// |
|
//! DESCRIPTION: Specifies flags for a given profile. Currently only the NVDRS_GPU_SUPPORT is |
|
//! used to update the profile. Neither the name, number of settings or applications |
|
//! or other profile information can be changed with this function. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] hProfile Input profile handle. |
|
//! \param [in] *pProfileInfo Input the new profile info. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_SetProfileInfo(NvDRSSessionHandle hSession, NvDRSProfileHandle hProfile, NVDRS_PROFILE *pProfileInfo); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_FindProfileByName |
|
// |
|
//! DESCRIPTION: This API finds a profile in the current session. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] profileName Input profileName. |
|
//! \param [out] phProfile Input profile handle. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS if the profile is found |
|
//! \retval ::NVAPI_PROFILE_NOT_FOUND if profile is not found |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_FindProfileByName(NvDRSSessionHandle hSession, NvAPI_UnicodeString profileName, NvDRSProfileHandle* phProfile); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_EnumProfiles |
|
// |
|
//! DESCRIPTION: This API enumerates through all the profiles in the session. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] index Input the index for enumeration. |
|
//! \param [out] *phProfile Returns profile handle. |
|
//! |
|
//! RETURN STATUS: NVAPI_OK: SUCCESS if the profile is found |
|
//! NVAPI_ERROR: For miscellaneous errors. |
|
//! NVAPI_END_ENUMERATION: index exceeds the total number of available Profiles in DB. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_EnumProfiles(NvDRSSessionHandle hSession, NvU32 index, NvDRSProfileHandle *phProfile); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_GetNumProfiles |
|
// |
|
//! DESCRIPTION: This API obtains the number of profiles in the current session object. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param out] *numProfiles Returns count of profiles in the current hSession. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED Failed to initialize. |
|
//! \retval ::NVAPI_INVALID_ARGUMENT Invalid Arguments. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_GetNumProfiles(NvDRSSessionHandle hSession, NvU32 *numProfiles); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_CreateApplication |
|
// |
|
//! DESCRIPTION: This API adds an executable name to a profile. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] hProfile Input profile handle. |
|
//! \param [in] *pApplication Input NVDRS_APPLICATION struct with the executable name to be added. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_CreateApplication(NvDRSSessionHandle hSession, NvDRSProfileHandle hProfile, NVDRS_APPLICATION *pApplication); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_DeleteApplicationEx |
|
// |
|
//! DESCRIPTION: This API removes an executable from a profile. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession - Input to the session handle. |
|
//! \param [in] hProfile - Input profile handle. |
|
//! \param [in] *pApp - Input all the information about the application to be removed. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! \retval ::NVAPI_EXECUTABLE_PATH_IS_AMBIGUOUS If the path provided could refer to two different executables, |
|
//! this error will be returned. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_DeleteApplicationEx(NvDRSSessionHandle hSession, NvDRSProfileHandle hProfile, NVDRS_APPLICATION *pApp); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_DeleteApplication |
|
// |
|
//! DESCRIPTION: This API removes an executable name from a profile. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSessionPARAMETERS Input to the session handle. |
|
//! \param [in] hProfile Input profile handle. |
|
//! \param [in] appName Input the executable name to be removed. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! \retval ::NVAPI_EXECUTABLE_PATH_IS_AMBIGUOUS If the path provided could refer to two different executables, |
|
//! this error will be returned |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_DeleteApplication(NvDRSSessionHandle hSession, NvDRSProfileHandle hProfile, NvAPI_UnicodeString appName); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_GetApplicationInfo |
|
// |
|
//! DESCRIPTION: This API gets information about the given application. The input application name |
|
//! must match exactly what the Profile has stored for the application. |
|
//! This function is better used to retrieve application information from a previous |
|
//! enumeration. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] hProfile Input profile handle. |
|
//! \param [in] appName Input application name. |
|
//! \param [out] *pApplication Returns NVDRS_APPLICATION struct with all the attributes. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, |
|
//! they are listed below. |
|
//! \retval ::NVAPI_EXECUTABLE_PATH_IS_AMBIGUOUS The application name could not |
|
// single out only one executable. |
|
//! \retval ::NVAPI_EXECUTABLE_NOT_FOUND No application with that name is found on the profile. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_GetApplicationInfo(NvDRSSessionHandle hSession, NvDRSProfileHandle hProfile, NvAPI_UnicodeString appName, NVDRS_APPLICATION *pApplication); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_EnumApplications |
|
// |
|
//! DESCRIPTION: This API enumerates all the applications in a given profile from the starting index to the maximum length. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] hProfile Input profile handle. |
|
//! \param [in] startIndex Indicates starting index for enumeration. |
|
//! \param [in,out] *appCount Input maximum length of the passed in arrays. Returns the actual length. |
|
//! \param [out] *pApplication Returns NVDRS_APPLICATION struct with all the attributes. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! \retval ::NVAPI_END_ENUMERATION startIndex exceeds the total appCount. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_EnumApplications(NvDRSSessionHandle hSession, NvDRSProfileHandle hProfile, NvU32 startIndex, NvU32 *appCount, NVDRS_APPLICATION *pApplication); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_FindApplicationByName |
|
// |
|
//! DESCRIPTION: This API searches the application and the associated profile for the given application name. |
|
//! If a fully qualified path is provided, this function will always return the profile |
|
//! the driver will apply upon running the application (on the path provided). |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the hSession handle |
|
//! \param [in] appName Input appName. For best results, provide a fully qualified path of the type |
|
//! c:/Folder1/Folder2/App.exe |
|
//! \param [out] *phProfile Returns profile handle. |
|
//! \param [in,out] *pApplication Returns NVDRS_APPLICATION struct pointer. |
|
//! |
|
//! \return This API can return any of the error codes enumerated in #NvAPI_Status. |
|
//! If there are return error codes with specific meaning for this API, |
|
//! they are listed below: |
|
//! \retval ::NVAPI_APPLICATION_NOT_FOUND If App not found |
|
//! \retval ::NVAPI_EXECUTABLE_PATH_IS_AMBIGUOUS If the input appName was not fully qualified, this error might return in the case of multiple matches |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_FindApplicationByName(__in NvDRSSessionHandle hSession, __in NvAPI_UnicodeString appName, __out NvDRSProfileHandle *phProfile, __inout NVDRS_APPLICATION *pApplication); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_SetSetting |
|
// |
|
//! DESCRIPTION: This API adds/modifies a setting to a profile. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] hProfile Input profile handle. |
|
//! \param [in] *pSetting Input NVDRS_SETTING struct pointer. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_SetSetting(NvDRSSessionHandle hSession, NvDRSProfileHandle hProfile, NVDRS_SETTING *pSetting); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_GetSetting |
|
// |
|
//! DESCRIPTION: This API gets information about the given setting. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] hProfile Input profile handle. |
|
//! \param [in] settingId Input settingId. |
|
//! \param [out] *pSetting Returns all the setting info |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_GetSetting(NvDRSSessionHandle hSession, NvDRSProfileHandle hProfile, NvU32 settingId, NVDRS_SETTING *pSetting); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_EnumSettings |
|
// |
|
//! DESCRIPTION: This API enumerates all the settings of a given profile from startIndex to the maximum length. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] hProfile Input profile handle. |
|
//! \param [in] startIndex Indicates starting index for enumeration. |
|
//! \param [in,out] *settingsCount Input max length of the passed in arrays, Returns the actual length. |
|
//! \param [out] *pSetting Returns all the settings info. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! \retval ::NVAPI_END_ENUMERATION startIndex exceeds the total appCount. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_EnumSettings(NvDRSSessionHandle hSession, NvDRSProfileHandle hProfile, NvU32 startIndex, NvU32 *settingsCount, NVDRS_SETTING *pSetting); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_EnumAvailableSettingIds |
|
// |
|
//! DESCRIPTION: This API enumerates all the Ids of all the settings recognized by NVAPI. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [out] pSettingIds User-provided array of length *pMaxCount that NVAPI will fill with IDs. |
|
//! \param [in,out] pMaxCount Input max length of the passed in array, Returns the actual length. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! NVAPI_END_ENUMERATION: the provided pMaxCount is not enough to hold all settingIds. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_EnumAvailableSettingIds(NvU32 *pSettingIds, NvU32 *pMaxCount); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_EnumAvailableSettingValues |
|
// |
|
//! DESCRIPTION: This API enumerates all available setting values for a given setting. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] settingId Input settingId. |
|
//! \param [in,out] maxNumCount Input max length of the passed in arrays, Returns the actual length. |
|
//! \param [out] *pSettingValues Returns all available setting values and its count. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_EnumAvailableSettingValues(NvU32 settingId, NvU32 *pMaxNumValues, NVDRS_SETTING_VALUES *pSettingValues); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_GetSettingIdFromName |
|
// |
|
//! DESCRIPTION: This API gets the binary ID of a setting given the setting name. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] settingName Input Unicode settingName. |
|
//! \param [out] *pSettingId Returns corresponding settingId. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS if the profile is found |
|
//! \retval ::NVAPI_PROFILE_NOT_FOUND if profile is not found |
|
//! \retval ::NVAPI_SETTING_NOT_FOUND if setting is not found |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_GetSettingIdFromName(NvAPI_UnicodeString settingName, NvU32 *pSettingId); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_GetSettingNameFromId |
|
// |
|
//! DESCRIPTION: This API gets the setting name given the binary ID. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] settingId Input settingId. |
|
//! \param [in] *pSettingName Returns corresponding Unicode settingName. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS if the profile is found |
|
//! \retval ::NVAPI_PROFILE_NOT_FOUND if profile is not found |
|
//! \retval ::NVAPI_SETTING_NOT_FOUND if setting is not found |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_GetSettingNameFromId(NvU32 settingId, NvAPI_UnicodeString *pSettingName); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_DeleteProfileSetting |
|
// |
|
//! DESCRIPTION: This API deletes a setting or sets it back to predefined value. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] hProfile Input profile handle. |
|
//! \param [in] settingId Input settingId to be deleted. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS if the profile is found |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_DeleteProfileSetting(NvDRSSessionHandle hSession, NvDRSProfileHandle hProfile, NvU32 settingId); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_RestoreAllDefaults |
|
// |
|
//! DESCRIPTION: This API restores the whole system to predefined(default) values. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS if the profile is found |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_RestoreAllDefaults(NvDRSSessionHandle hSession); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_RestoreProfileDefault |
|
// |
|
//! DESCRIPTION: This API restores the given profile to predefined(default) values. |
|
//! Any and all user specified modifications will be removed. |
|
//! If the whole profile was set by the user, the profile will be removed. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] hProfile Input profile handle. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS if the profile is found |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! \retval ::NVAPI_PROFILE_REMOVED SUCCESS, and the hProfile is no longer valid. |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_RestoreProfileDefault(NvDRSSessionHandle hSession, NvDRSProfileHandle hProfile); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_RestoreProfileDefaultSetting |
|
// |
|
//! DESCRIPTION: This API restores the given profile setting to predefined(default) values. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] hProfile Input profile handle. |
|
//! \param [in] settingId Input settingId. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS if the profile is found |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_RestoreProfileDefaultSetting(NvDRSSessionHandle hSession, NvDRSProfileHandle hProfile, NvU32 settingId); |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_DRS_GetBaseProfile |
|
// |
|
//! DESCRIPTION: Returns the handle to the current global profile. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hSession Input to the session handle. |
|
//! \param [in] *phProfile Returns Base profile handle. |
|
//! |
|
//! \retval ::NVAPI_OK SUCCESS if the profile is found |
|
//! \retval ::NVAPI_ERROR For miscellaneous errors. |
|
//! |
|
//! \ingroup drsapi |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_DRS_GetBaseProfile(NvDRSSessionHandle hSession, NvDRSProfileHandle *phProfile); |
|
|
|
|
|
|
|
|
|
//! \addtogroup sysgeneral |
|
//! @{ |
|
|
|
typedef struct |
|
{ |
|
NvU32 version; //!< structure version |
|
NvU32 vendorId; //!< Chipset vendor identification |
|
NvU32 deviceId; //!< Chipset device identification |
|
NvAPI_ShortString szVendorName; //!< Chipset vendor Name |
|
NvAPI_ShortString szChipsetName; //!< Chipset device Name |
|
NvU32 flags; //!< Chipset info flags - obsolete |
|
NvU32 subSysVendorId; //!< Chipset subsystem vendor identification |
|
NvU32 subSysDeviceId; //!< Chipset subsystem device identification |
|
NvAPI_ShortString szSubSysVendorName; //!< subsystem vendor Name |
|
NvU32 HBvendorId; //!< Host bridge vendor identification |
|
NvU32 HBdeviceId; //!< Host bridge device identification |
|
NvU32 HBsubSysVendorId; //!< Host bridge subsystem vendor identification |
|
NvU32 HBsubSysDeviceId; //!< Host bridge subsystem device identification |
|
|
|
} NV_CHIPSET_INFO_v4; |
|
|
|
typedef struct |
|
{ |
|
NvU32 version; //!< structure version |
|
NvU32 vendorId; //!< vendor ID |
|
NvU32 deviceId; //!< device ID |
|
NvAPI_ShortString szVendorName; //!< vendor Name |
|
NvAPI_ShortString szChipsetName; //!< device Name |
|
NvU32 flags; //!< Chipset info flags - obsolete |
|
NvU32 subSysVendorId; //!< subsystem vendor ID |
|
NvU32 subSysDeviceId; //!< subsystem device ID |
|
NvAPI_ShortString szSubSysVendorName; //!< subsystem vendor Name |
|
} NV_CHIPSET_INFO_v3; |
|
|
|
typedef enum |
|
{ |
|
NV_CHIPSET_INFO_HYBRID = 0x00000001, |
|
} NV_CHIPSET_INFO_FLAGS; |
|
|
|
typedef struct |
|
{ |
|
NvU32 version; //!< structure version |
|
NvU32 vendorId; //!< vendor ID |
|
NvU32 deviceId; //!< device ID |
|
NvAPI_ShortString szVendorName; //!< vendor Name |
|
NvAPI_ShortString szChipsetName; //!< device Name |
|
NvU32 flags; //!< Chipset info flags |
|
} NV_CHIPSET_INFO_v2; |
|
|
|
typedef struct |
|
{ |
|
NvU32 version; //structure version |
|
NvU32 vendorId; //vendor ID |
|
NvU32 deviceId; //device ID |
|
NvAPI_ShortString szVendorName; //vendor Name |
|
NvAPI_ShortString szChipsetName; //device Name |
|
} NV_CHIPSET_INFO_v1; |
|
|
|
#define NV_CHIPSET_INFO_VER_1 MAKE_NVAPI_VERSION(NV_CHIPSET_INFO_v1,1) |
|
#define NV_CHIPSET_INFO_VER_2 MAKE_NVAPI_VERSION(NV_CHIPSET_INFO_v2,2) |
|
#define NV_CHIPSET_INFO_VER_3 MAKE_NVAPI_VERSION(NV_CHIPSET_INFO_v3,3) |
|
#define NV_CHIPSET_INFO_VER_4 MAKE_NVAPI_VERSION(NV_CHIPSET_INFO_v4,4) |
|
|
|
#define NV_CHIPSET_INFO NV_CHIPSET_INFO_v4 |
|
#define NV_CHIPSET_INFO_VER NV_CHIPSET_INFO_VER_4 |
|
|
|
//! @} |
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_SYS_GetChipSetInfo |
|
// |
|
//! This function returns information about the system's chipset. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher, Mac OS X |
|
//! |
|
//! |
|
//! \since Release: 95 |
|
//! |
|
//! \retval NVAPI_INVALID_ARGUMENT pChipSetInfo is NULL. |
|
//! \retval NVAPI_OK *pChipSetInfo is now set. |
|
//! \retval NVAPI_INCOMPATIBLE_STRUCT_VERSION NV_CHIPSET_INFO version not compatible with driver. |
|
//! \ingroup sysgeneral |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_SYS_GetChipSetInfo(NV_CHIPSET_INFO *pChipSetInfo); |
|
|
|
|
|
//! \ingroup sysgeneral |
|
//! Lid and dock information - used in NvAPI_GetLidDockInfo() |
|
typedef struct |
|
{ |
|
NvU32 version; //! Structure version, constructed from the macro #NV_LID_DOCK_PARAMS_VER |
|
NvU32 currentLidState; |
|
NvU32 currentDockState; |
|
NvU32 currentLidPolicy; |
|
NvU32 currentDockPolicy; |
|
NvU32 forcedLidMechanismPresent; |
|
NvU32 forcedDockMechanismPresent; |
|
}NV_LID_DOCK_PARAMS; |
|
|
|
|
|
//! ingroup sysgeneral |
|
#define NV_LID_DOCK_PARAMS_VER MAKE_NVAPI_VERSION(NV_LID_DOCK_PARAMS,1) |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// FUNCTION NAME: NvAPI_GetLidDockInfo |
|
// |
|
//! DESCRIPTION: This function returns the current lid and dock information. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \since Release: 177 |
|
//! |
|
//! \retval ::NVAPI_OK |
|
//! \retval ::NVAPI_ERROR |
|
//! \retval ::NVAPI_NOT_SUPPORTED |
|
//! \retval ::NVAPI_HANDLE_INVALIDATED |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED |
|
//! |
|
//! \ingroup sysgeneral |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_SYS_GetLidAndDockInfo(NV_LID_DOCK_PARAMS *pLidAndDock); |
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_SYS_GetDisplayIdFromGpuAndOutputId |
|
// |
|
//! DESCRIPTION: This API converts a Physical GPU handle and output ID to a |
|
//! display ID. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] hPhysicalGpu Handle to the physical GPU |
|
//! \param [in] outputId Connected display output ID on the |
|
//! target GPU - must only have one bit set |
|
//! \param [out] displayId Pointer to an NvU32 which contains |
|
//! the display ID |
|
//! |
|
//! \retval ::NVAPI_OK - completed request |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED - NVAPI not initialized |
|
//! \retval ::NVAPI_ERROR - miscellaneous error occurred |
|
//! \retval ::NVAPI_INVALID_ARGUMENT - Invalid input parameter. |
|
//! |
|
//! \ingroup sysgeneral |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_SYS_GetDisplayIdFromGpuAndOutputId(NvPhysicalGpuHandle hPhysicalGpu, NvU32 outputId, NvU32* displayId); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_SYS_GetGpuAndOutputIdFromDisplayId |
|
// |
|
//! DESCRIPTION: This API converts a display ID to a Physical GPU handle and output ID. |
|
//! |
|
//! SUPPORTED OS: Windows XP and higher |
|
//! |
|
//! |
|
//! \param [in] displayId Display ID of display to retrieve |
|
//! GPU and outputId for |
|
//! \param [out] hPhysicalGpu Handle to the physical GPU |
|
//! \param [out] outputId ) Connected display output ID on the |
|
//! target GPU will only have one bit set. |
|
//! |
|
//! \retval ::NVAPI_OK |
|
//! \retval ::NVAPI_API_NOT_INTIALIZED |
|
//! \retval ::NVAPI_ID_OUT_OF_RANGE The DisplayId corresponds to a |
|
//! display which is not within the |
|
//! normal outputId range. |
|
//! \retval ::NVAPI_ERROR |
|
//! \retval ::NVAPI_INVALID_ARGUMENT |
|
//! |
|
//! \ingroup sysgeneral |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_SYS_GetGpuAndOutputIdFromDisplayId(NvU32 displayId, NvPhysicalGpuHandle *hPhysicalGpu, NvU32 *outputId); |
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// |
|
// FUNCTION NAME: NvAPI_SYS_GetPhysicalGpuFromDisplayId |
|
// |
|
//! \code |
|
//! DESCRIPTION: This API retrieves the Physical GPU handle of the connected display |
|
//! |
|
//! \since Release: 313 |
|
//! |
|
//! SUPPORTED OS: Windows Vista and higher |
|
//! |
|
//! |
|
//! PARAMETERS: displayId(IN) - Display ID of display to retrieve |
|
//! GPU handle |
|
//! hPhysicalGpu(OUT) - Handle to the physical GPU |
|
//! |
|
//! RETURN STATUS: |
|
//! NVAPI_OK - completed request |
|
//! NVAPI_API_NOT_INTIALIZED - NVAPI not initialized |
|
//! NVAPI_ERROR - miscellaneous error occurred |
|
//! NVAPI_INVALID_ARGUMENT - Invalid input parameter. |
|
//! \endcode |
|
//! \ingroup sysgeneral |
|
/////////////////////////////////////////////////////////////////////////////// |
|
NVAPI_INTERFACE NvAPI_SYS_GetPhysicalGpuFromDisplayId(NvU32 displayId, NvPhysicalGpuHandle *hPhysicalGpu); |
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus |
|
}; //extern "C" { |
|
|
|
#endif |
|
|
|
#pragma pack(pop) |
|
|
|
#endif // _NVAPI_H |
|
|
|
#include"nvapi_lite_salend.h"
|
|
|