// This code contains NVIDIA Confidential Information and is disclosed // under the Mutual Non-Disclosure Agreement. // // Notice // ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES // NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO // THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT, // MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. // // NVIDIA Corporation assumes no responsibility for the consequences of use of such // information or for any infringement of patents or other rights of third parties that may // result from its use. No license is granted by implication or otherwise under any patent // or patent rights of NVIDIA Corporation. No third party distribution is allowed unless // expressly authorized by NVIDIA. Details are subject to change without notice. // This code supersedes and replaces all information previously supplied. // NVIDIA Corporation products are not authorized for use as critical // components in life support devices or systems without express written approval of // NVIDIA Corporation. // // Copyright © 2008- 2013 NVIDIA Corporation. All rights reserved. // // NVIDIA Corporation and its licensors retain all intellectual property and proprietary // rights in and to this software and related documentation and any modifications thereto. // Any use, reproduction, disclosure or distribution of this software and related // documentation without an express license agreement from NVIDIA Corporation is // strictly prohibited. // //-------------------------------------------------------------------------------------- // File: DXUTSettingsDlg.cpp // // Copyright (c) Microsoft Corporation. All rights reserved //-------------------------------------------------------------------------------------- #pragma once #ifndef DXUT_SETTINGS_H #define DXUT_SETTINGS_H //-------------------------------------------------------------------------------------- // Header Includes //-------------------------------------------------------------------------------------- #include "DXUTgui.h" //-------------------------------------------------------------------------------------- // Control IDs //-------------------------------------------------------------------------------------- #define DXUTSETTINGSDLG_STATIC -1 #define DXUTSETTINGSDLG_OK 1 #define DXUTSETTINGSDLG_CANCEL 2 #define DXUTSETTINGSDLG_ADAPTER 3 #define DXUTSETTINGSDLG_DEVICE_TYPE 4 #define DXUTSETTINGSDLG_WINDOWED 5 #define DXUTSETTINGSDLG_FULLSCREEN 6 #define DXUTSETTINGSDLG_ADAPTER_FORMAT 7 #define DXUTSETTINGSDLG_ADAPTER_FORMAT_LABEL 8 #define DXUTSETTINGSDLG_RESOLUTION 9 #define DXUTSETTINGSDLG_RESOLUTION_LABEL 10 #define DXUTSETTINGSDLG_REFRESH_RATE 11 #define DXUTSETTINGSDLG_REFRESH_RATE_LABEL 12 #define DXUTSETTINGSDLG_BACK_BUFFER_FORMAT 13 #define DXUTSETTINGSDLG_BACK_BUFFER_FORMAT_LABEL 14 #define DXUTSETTINGSDLG_DEPTH_STENCIL 15 #define DXUTSETTINGSDLG_DEPTH_STENCIL_LABEL 16 #define DXUTSETTINGSDLG_MULTISAMPLE_TYPE 17 #define DXUTSETTINGSDLG_MULTISAMPLE_TYPE_LABEL 18 #define DXUTSETTINGSDLG_MULTISAMPLE_QUALITY 19 #define DXUTSETTINGSDLG_MULTISAMPLE_QUALITY_LABEL 20 #define DXUTSETTINGSDLG_VERTEX_PROCESSING 21 #define DXUTSETTINGSDLG_VERTEX_PROCESSING_LABEL 22 #define DXUTSETTINGSDLG_PRESENT_INTERVAL 23 #define DXUTSETTINGSDLG_PRESENT_INTERVAL_LABEL 24 #define DXUTSETTINGSDLG_DEVICECLIP 25 #define DXUTSETTINGSDLG_RESOLUTION_SHOW_ALL 26 #define DXUTSETTINGSDLG_API_VERSION 27 #define DXUTSETTINGSDLG_D3D10_ADAPTER_OUTPUT 28 #define DXUTSETTINGSDLG_D3D10_ADAPTER_OUTPUT_LABEL 29 #define DXUTSETTINGSDLG_D3D10_RESOLUTION 30 #define DXUTSETTINGSDLG_D3D10_RESOLUTION_LABEL 31 #define DXUTSETTINGSDLG_D3D10_REFRESH_RATE 32 #define DXUTSETTINGSDLG_D3D10_REFRESH_RATE_LABEL 33 #define DXUTSETTINGSDLG_D3D10_BACK_BUFFER_FORMAT 34 #define DXUTSETTINGSDLG_D3D10_BACK_BUFFER_FORMAT_LABEL 35 #define DXUTSETTINGSDLG_D3D10_MULTISAMPLE_COUNT 36 #define DXUTSETTINGSDLG_D3D10_MULTISAMPLE_COUNT_LABEL 37 #define DXUTSETTINGSDLG_D3D10_MULTISAMPLE_QUALITY 38 #define DXUTSETTINGSDLG_D3D10_MULTISAMPLE_QUALITY_LABEL 39 #define DXUTSETTINGSDLG_D3D10_PRESENT_INTERVAL 40 #define DXUTSETTINGSDLG_D3D10_PRESENT_INTERVAL_LABEL 41 #define DXUTSETTINGSDLG_D3D10_DEBUG_DEVICE 42 #define DXUTSETTINGSDLG_MODE_CHANGE_ACCEPT 43 #define DXUTSETTINGSDLG_MODE_CHANGE_REVERT 44 #define DXUTSETTINGSDLG_STATIC_MODE_CHANGE_TIMEOUT 45 #define DXUTSETTINGSDLG_WINDOWED_GROUP 0x0100 //-------------------------------------------------------------------------------------- // Dialog for selection of device settings // Use DXUTGetD3DSettingsDialog() to access global instance // To control the contents of the dialog, use the CD3D9Enumeration class. //-------------------------------------------------------------------------------------- class CD3DSettingsDlg { public: CD3DSettingsDlg(); ~CD3DSettingsDlg(); void Init( CDXUTDialogResourceManager* pManager ); void Init( CDXUTDialogResourceManager* pManager, LPCWSTR szControlTextureFileName ); void Init( CDXUTDialogResourceManager* pManager, LPCWSTR pszControlTextureResourcename, HMODULE hModule ); HRESULT Refresh(); void OnRender( float fElapsedTime ); void OnRender9( float fElapsedTime ); void OnRender10( float fElapsedTime ); HRESULT OnD3D9CreateDevice( IDirect3DDevice9* pd3dDevice ); HRESULT OnD3D9ResetDevice(); void OnD3D9LostDevice(); void OnD3D9DestroyDevice(); HRESULT OnD3D10CreateDevice( ID3D10Device* pd3dDevice ); HRESULT OnD3D10ResizedSwapChain( ID3D10Device* pd3dDevice, const DXGI_SURFACE_DESC* pBackBufferSurfaceDesc ); void OnD3D10DestroyDevice(); CDXUTDialog* GetDialogControl() { return &m_Dialog; } bool IsActive() { return m_bActive; } void SetActive( bool bActive ) { m_bActive = bActive; if( bActive ) Refresh(); } void ShowControlSet( DXUTDeviceVersion ver ); LRESULT MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); protected: friend CD3DSettingsDlg* WINAPI DXUTGetD3DSettingsDialog(); void CreateControls(); HRESULT SetDeviceSettingsFromUI(); void SetSelectedD3D10RefreshRate( DXGI_RATIONAL RefreshRate ); HRESULT UpdateD3D10Resolutions(); void OnEvent( UINT nEvent, int nControlID, CDXUTControl* pControl ); static void WINAPI StaticOnEvent( UINT nEvent, int nControlID, CDXUTControl* pControl, void* pUserData ); static void WINAPI StaticOnModeChangeTimer( UINT nIDEvent, void* pUserContext ); CD3D9EnumAdapterInfo* GetCurrentAdapterInfo(); CD3D9EnumDeviceInfo* GetCurrentDeviceInfo(); CD3D9EnumDeviceSettingsCombo* GetCurrentDeviceSettingsCombo(); CD3D10EnumAdapterInfo* GetCurrentD3D10AdapterInfo(); CD3D10EnumDeviceInfo* GetCurrentD3D10DeviceInfo(); CD3D10EnumOutputInfo* GetCurrentD3D10OutputInfo(); CD3D10EnumDeviceSettingsCombo* GetCurrentD3D10DeviceSettingsCombo(); void AddAPIVersion( DXUTDeviceVersion version ); DXUTDeviceVersion GetSelectedAPIVersion(); void AddAdapter( const WCHAR* strDescription, UINT iAdapter ); UINT GetSelectedAdapter(); void AddDeviceType( D3DDEVTYPE devType ); D3DDEVTYPE GetSelectedDeviceType(); void SetWindowed( bool bWindowed ); bool IsWindowed(); void AddAdapterFormat( D3DFORMAT format ); D3DFORMAT GetSelectedAdapterFormat(); void AddResolution( DWORD dwWidth, DWORD dwHeight ); void GetSelectedResolution( DWORD* pdwWidth, DWORD* pdwHeight ); void AddRefreshRate( DWORD dwRate ); DWORD GetSelectedRefreshRate(); void AddBackBufferFormat( D3DFORMAT format ); D3DFORMAT GetSelectedBackBufferFormat(); void AddDepthStencilBufferFormat( D3DFORMAT format ); D3DFORMAT GetSelectedDepthStencilBufferFormat(); void AddMultisampleType( D3DMULTISAMPLE_TYPE type ); D3DMULTISAMPLE_TYPE GetSelectedMultisampleType(); void AddMultisampleQuality( DWORD dwQuality ); DWORD GetSelectedMultisampleQuality(); void AddVertexProcessingType( DWORD dwType ); DWORD GetSelectedVertexProcessingType(); DWORD GetSelectedPresentInterval(); void SetDeviceClip( bool bDeviceClip ); bool IsDeviceClip(); // D3D10 void AddD3D10DeviceType( D3D10_DRIVER_TYPE devType ); D3D10_DRIVER_TYPE GetSelectedD3D10DeviceType(); void AddD3D10AdapterOutput( const WCHAR* strName, UINT nOutput ); UINT GetSelectedD3D10AdapterOutput(); void AddD3D10Resolution( DWORD dwWidth, DWORD dwHeight ); void GetSelectedD3D10Resolution( DWORD* pdwWidth, DWORD* pdwHeight ); void AddD3D10RefreshRate( DXGI_RATIONAL RefreshRate ); DXGI_RATIONAL GetSelectedD3D10RefreshRate(); void AddD3D10BackBufferFormat( DXGI_FORMAT format ); DXGI_FORMAT GetSelectedD3D10BackBufferFormat(); void AddD3D10MultisampleCount( UINT count ); UINT GetSelectedD3D10MultisampleCount(); void AddD3D10MultisampleQuality( UINT Quality ); UINT GetSelectedD3D10MultisampleQuality(); DWORD GetSelectedD3D10PresentInterval(); bool GetSelectedDebugDeviceValue(); HRESULT OnAPIVersionChanged( bool bRefresh=false ); HRESULT OnAdapterChanged(); HRESULT OnDeviceTypeChanged(); HRESULT OnWindowedFullScreenChanged(); HRESULT OnAdapterOutputChanged(); HRESULT OnAdapterFormatChanged(); HRESULT OnResolutionChanged(); HRESULT OnD3D10ResolutionChanged(); HRESULT OnRefreshRateChanged(); HRESULT OnBackBufferFormatChanged(); HRESULT OnDepthStencilBufferFormatChanged(); HRESULT OnMultisampleTypeChanged(); HRESULT OnMultisampleQualityChanged(); HRESULT OnVertexProcessingChanged(); HRESULT OnPresentIntervalChanged(); HRESULT OnDebugDeviceChanged(); HRESULT OnDeviceClipChanged(); void UpdateModeChangeTimeoutText( int nSecRemaining ); IDirect3DStateBlock9* m_pStateBlock; ID3D10StateBlock* m_pStateBlock10; CDXUTDialog* m_pActiveDialog; CDXUTDialog m_Dialog; CDXUTDialog m_RevertModeDialog; int m_nRevertModeTimeout; UINT m_nIDEvent; bool m_bActive; }; CD3DSettingsDlg* WINAPI DXUTGetD3DSettingsDialog(); #endif