| /************************************************************************************************************************************\ | |
| |* *| | |
| |* 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. *| | |
| |* *| | |
| \************************************************************************************************************************************/ | |
| extern "C" { | |
| //! \ingroup dx | |
| //! D3D_FEATURE_LEVEL supported - used in NvAPI_D3D11_CreateDevice() and NvAPI_D3D11_CreateDeviceAndSwapChain() | |
| typedef enum | |
| { | |
| NVAPI_DEVICE_FEATURE_LEVEL_NULL = -1, | |
| NVAPI_DEVICE_FEATURE_LEVEL_10_0 = 0, | |
| NVAPI_DEVICE_FEATURE_LEVEL_10_0_PLUS = 1, | |
| NVAPI_DEVICE_FEATURE_LEVEL_10_1 = 2, | |
| NVAPI_DEVICE_FEATURE_LEVEL_11_0 = 3, | |
| } NVAPI_DEVICE_FEATURE_LEVEL; | |
| /////////////////////////////////////////////////////////////////////////////// | |
| // | |
| // FUNCTION NAME: NvAPI_D3D11_CreateDevice | |
| // | |
| //! DESCRIPTION: This function tries to create a DirectX 11 device. If the call fails (if we are running | |
| //! on pre-DirectX 11 hardware), depending on the type of hardware it will try to create a DirectX 10.1 OR DirectX 10.0+ | |
| //! OR DirectX 10.0 device. The function call is the same as D3D11CreateDevice(), but with an extra | |
| //! argument (D3D_FEATURE_LEVEL supported by the device) that the function fills in. This argument | |
| //! can contain -1 (NVAPI_DEVICE_FEATURE_LEVEL_NULL), if the requested featureLevel is less than DirecX 10.0. | |
| //! | |
| //! NOTE: When NvAPI_D3D11_CreateDevice is called with 10+ feature level we have an issue on few set of | |
| //! tesla hardware (G80/G84/G86/G92/G94/G96) which does not support all feature level 10+ functionality | |
| //! e.g. calling driver with mismatch between RenderTarget and Depth Buffer. App developers should | |
| //! take into consideration such limitation when using NVAPI on such tesla hardwares. | |
| //! SUPPORTED OS: Windows Vista and higher | |
| //! | |
| //! | |
| //! \since Release: 185 | |
| //! | |
| //! \param [in] pAdapter | |
| //! \param [in] DriverType | |
| //! \param [in] Software | |
| //! \param [in] Flags | |
| //! \param [in] *pFeatureLevels | |
| //! \param [in] FeatureLevels | |
| //! \param [in] SDKVersion | |
| //! \param [in] **ppDevice | |
| //! \param [in] *pFeatureLevel | |
| //! \param [in] **ppImmediateContext | |
| //! \param [in] *pSupportedLevel D3D_FEATURE_LEVEL supported | |
| //! | |
| //! \return NVAPI_OK if the createDevice call succeeded. | |
| //! | |
| //! \ingroup dx | |
| /////////////////////////////////////////////////////////////////////////////// | |
| NVAPI_INTERFACE NvAPI_D3D11_CreateDevice(IDXGIAdapter* pAdapter, | |
| D3D_DRIVER_TYPE DriverType, | |
| HMODULE Software, | |
| UINT Flags, | |
| CONST D3D_FEATURE_LEVEL *pFeatureLevels, | |
| UINT FeatureLevels, | |
| UINT SDKVersion, | |
| ID3D11Device **ppDevice, | |
| D3D_FEATURE_LEVEL *pFeatureLevel, | |
| ID3D11DeviceContext **ppImmediateContext, | |
| NVAPI_DEVICE_FEATURE_LEVEL *pSupportedLevel); | |
| /////////////////////////////////////////////////////////////////////////////// | |
| // | |
| // FUNCTION NAME: NvAPI_D3D11_CreateDeviceAndSwapChain | |
| // | |
| //! DESCRIPTION: This function tries to create a DirectX 11 device and swap chain. If the call fails (if we are | |
| //! running on pre=DirectX 11 hardware), depending on the type of hardware it will try to create a DirectX 10.1 OR | |
| //! DirectX 10.0+ OR DirectX 10.0 device. The function call is the same as D3D11CreateDeviceAndSwapChain, | |
| //! but with an extra argument (D3D_FEATURE_LEVEL supported by the device) that the function fills | |
| //! in. This argument can contain -1 (NVAPI_DEVICE_FEATURE_LEVEL_NULL), if the requested featureLevel | |
| //! is less than DirectX 10.0. | |
| //! | |
| //! SUPPORTED OS: Windows Vista and higher | |
| //! | |
| //! | |
| //! \since Release: 185 | |
| //! | |
| //! \param [in] pAdapter | |
| //! \param [in] DriverType | |
| //! \param [in] Software | |
| //! \param [in] Flags | |
| //! \param [in] *pFeatureLevels | |
| //! \param [in] FeatureLevels | |
| //! \param [in] SDKVersion | |
| //! \param [in] *pSwapChainDesc | |
| //! \param [in] **ppSwapChain | |
| //! \param [in] **ppDevice | |
| //! \param [in] *pFeatureLevel | |
| //! \param [in] **ppImmediateContext | |
| //! \param [in] *pSupportedLevel D3D_FEATURE_LEVEL supported | |
| //! | |
| //!return NVAPI_OK if the createDevice with swap chain call succeeded. | |
| //! | |
| //! \ingroup dx | |
| /////////////////////////////////////////////////////////////////////////////// | |
| NVAPI_INTERFACE NvAPI_D3D11_CreateDeviceAndSwapChain(IDXGIAdapter* pAdapter, | |
| D3D_DRIVER_TYPE DriverType, | |
| HMODULE Software, | |
| UINT Flags, | |
| CONST D3D_FEATURE_LEVEL *pFeatureLevels, | |
| UINT FeatureLevels, | |
| UINT SDKVersion, | |
| CONST DXGI_SWAP_CHAIN_DESC *pSwapChainDesc, | |
| IDXGISwapChain **ppSwapChain, | |
| ID3D11Device **ppDevice, | |
| D3D_FEATURE_LEVEL *pFeatureLevel, | |
| ID3D11DeviceContext **ppImmediateContext, | |
| NVAPI_DEVICE_FEATURE_LEVEL *pSupportedLevel); | |
| /////////////////////////////////////////////////////////////////////////////// | |
| // | |
| // FUNCTION NAME: NvAPI_D3D11_SetDepthBoundsTest | |
| // | |
| //! DESCRIPTION: This function enables/disables the depth bounds test | |
| //! | |
| //! SUPPORTED OS: Windows Vista and higher | |
| //! | |
| //! | |
| //! \param [in] pDeviceOrContext The device or device context to set depth bounds test | |
| //! \param [in] bEnable Enable(non-zero)/disable(zero) the depth bounds test | |
| //! \param [in] fMinDepth The minimum depth for depth bounds test | |
| //! \param [in] fMaxDepth The maximum depth for depth bounds test | |
| //! The valid values for fMinDepth and fMaxDepth | |
| //! are such that 0 <= fMinDepth <= fMaxDepth <= 1 | |
| //! | |
| //! \return ::NVAPI_OK if the depth bounds test was correcly enabled or disabled | |
| //! | |
| //! \ingroup dx | |
| /////////////////////////////////////////////////////////////////////////////// | |
| NVAPI_INTERFACE NvAPI_D3D11_SetDepthBoundsTest(IUnknown* pDeviceOrContext, | |
| NvU32 bEnable, | |
| float fMinDepth, | |
| float fMaxDepth); | |
| } | |