PerfHUD enabler by Rene Rivera
git-svn-id: http://svn.code.sf.net/p/irrlicht/code/trunk@1396 dfc29bdd-3216-0410-991c-e03cc46cb475
This commit is contained in:
parent
6da17e04b6
commit
030213c71e
@ -172,6 +172,11 @@ watch registers, variables etc. This works with ASM, HLSL, and both with pixel a
|
|||||||
Note that the engine will run in D3D REF for this, which is a lot slower than HAL. */
|
Note that the engine will run in D3D REF for this, which is a lot slower than HAL. */
|
||||||
#define _IRR_D3D_NO_SHADER_DEBUGGING
|
#define _IRR_D3D_NO_SHADER_DEBUGGING
|
||||||
|
|
||||||
|
//! Define _IRR_USE_NVIDIA_PERFHUD_ to opt-in to using the nVidia PerHUD tool
|
||||||
|
/** Enable, by opting-in, to use the nVidia PerfHUD performance analysis driver
|
||||||
|
tool <http://developer.nvidia.com/object/nvperfhud_home.html>. */
|
||||||
|
#undef _IRR_USE_NVIDIA_PERFHUD_
|
||||||
|
|
||||||
|
|
||||||
#ifdef _IRR_WINDOWS_API_
|
#ifdef _IRR_WINDOWS_API_
|
||||||
|
|
||||||
@ -347,3 +352,4 @@ precision will be lower but speed higher. currently X86 only
|
|||||||
|
|
||||||
#endif // __IRR_COMPILE_CONFIG_H_INCLUDED__
|
#endif // __IRR_COMPILE_CONFIG_H_INCLUDED__
|
||||||
|
|
||||||
|
|
||||||
|
@ -253,9 +253,22 @@ bool CD3D9Driver::initDriver(const core::dimension2d<s32>& screenSize, HWND hwnd
|
|||||||
present.Windowed = TRUE;
|
present.Windowed = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UINT adapter = D3DADAPTER_DEFAULT;
|
||||||
D3DDEVTYPE devtype = D3DDEVTYPE_HAL;
|
D3DDEVTYPE devtype = D3DDEVTYPE_HAL;
|
||||||
#ifndef _IRR_D3D_NO_SHADER_DEBUGGING
|
#ifndef _IRR_D3D_NO_SHADER_DEBUGGING
|
||||||
devtype = D3DDEVTYPE_REF;
|
devtype = D3DDEVTYPE_REF;
|
||||||
|
#elif defined(_IRR_USE_NVIDIA_PERFHUD_)
|
||||||
|
for (UINT adapter_i = 0; adapter_i < pID3D->GetAdapterCount(); ++adapter_i)
|
||||||
|
{
|
||||||
|
D3DADAPTER_IDENTIFIER9 identifier;
|
||||||
|
pID3D->GetAdapterIdentifier(adapter_i,0,&identifier);
|
||||||
|
if (strstr(identifier.Description,"PerfHUD") != 0)
|
||||||
|
{
|
||||||
|
adapter = adapter_i;
|
||||||
|
devtype = D3DDEVTYPE_REF;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// enable anti alias if possible and desired
|
// enable anti alias if possible and desired
|
||||||
@ -263,7 +276,7 @@ bool CD3D9Driver::initDriver(const core::dimension2d<s32>& screenSize, HWND hwnd
|
|||||||
{
|
{
|
||||||
DWORD qualityLevels = 0;
|
DWORD qualityLevels = 0;
|
||||||
|
|
||||||
if (SUCCEEDED(pID3D->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT,
|
if (SUCCEEDED(pID3D->CheckDeviceMultiSampleType(adapter,
|
||||||
devtype, present.BackBufferFormat, !fullScreen,
|
devtype, present.BackBufferFormat, !fullScreen,
|
||||||
D3DMULTISAMPLE_4_SAMPLES, &qualityLevels)))
|
D3DMULTISAMPLE_4_SAMPLES, &qualityLevels)))
|
||||||
{
|
{
|
||||||
@ -273,7 +286,7 @@ bool CD3D9Driver::initDriver(const core::dimension2d<s32>& screenSize, HWND hwnd
|
|||||||
present.SwapEffect = D3DSWAPEFFECT_DISCARD;
|
present.SwapEffect = D3DSWAPEFFECT_DISCARD;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (SUCCEEDED(pID3D->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT,
|
if (SUCCEEDED(pID3D->CheckDeviceMultiSampleType(adapter,
|
||||||
devtype, present.BackBufferFormat, !fullScreen,
|
devtype, present.BackBufferFormat, !fullScreen,
|
||||||
D3DMULTISAMPLE_2_SAMPLES, &qualityLevels)))
|
D3DMULTISAMPLE_2_SAMPLES, &qualityLevels)))
|
||||||
{
|
{
|
||||||
@ -283,7 +296,7 @@ bool CD3D9Driver::initDriver(const core::dimension2d<s32>& screenSize, HWND hwnd
|
|||||||
present.SwapEffect = D3DSWAPEFFECT_DISCARD;
|
present.SwapEffect = D3DSWAPEFFECT_DISCARD;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (SUCCEEDED(pID3D->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT,
|
if (SUCCEEDED(pID3D->CheckDeviceMultiSampleType(adapter,
|
||||||
devtype, present.BackBufferFormat, !fullScreen,
|
devtype, present.BackBufferFormat, !fullScreen,
|
||||||
D3DMULTISAMPLE_NONMASKABLE, &qualityLevels)))
|
D3DMULTISAMPLE_NONMASKABLE, &qualityLevels)))
|
||||||
{
|
{
|
||||||
@ -303,17 +316,17 @@ bool CD3D9Driver::initDriver(const core::dimension2d<s32>& screenSize, HWND hwnd
|
|||||||
if (StencilBuffer)
|
if (StencilBuffer)
|
||||||
{
|
{
|
||||||
present.AutoDepthStencilFormat = D3DFMT_D24S8;
|
present.AutoDepthStencilFormat = D3DFMT_D24S8;
|
||||||
if(FAILED(pID3D->CheckDeviceFormat(D3DADAPTER_DEFAULT, devtype,
|
if(FAILED(pID3D->CheckDeviceFormat(adapter, devtype,
|
||||||
present.BackBufferFormat, D3DUSAGE_DEPTHSTENCIL,
|
present.BackBufferFormat, D3DUSAGE_DEPTHSTENCIL,
|
||||||
D3DRTYPE_SURFACE, present.AutoDepthStencilFormat)))
|
D3DRTYPE_SURFACE, present.AutoDepthStencilFormat)))
|
||||||
{
|
{
|
||||||
present.AutoDepthStencilFormat = D3DFMT_D24X4S4;
|
present.AutoDepthStencilFormat = D3DFMT_D24X4S4;
|
||||||
if(FAILED(pID3D->CheckDeviceFormat(D3DADAPTER_DEFAULT, devtype,
|
if(FAILED(pID3D->CheckDeviceFormat(adapter, devtype,
|
||||||
present.BackBufferFormat, D3DUSAGE_DEPTHSTENCIL,
|
present.BackBufferFormat, D3DUSAGE_DEPTHSTENCIL,
|
||||||
D3DRTYPE_SURFACE, present.AutoDepthStencilFormat)))
|
D3DRTYPE_SURFACE, present.AutoDepthStencilFormat)))
|
||||||
{
|
{
|
||||||
present.AutoDepthStencilFormat = D3DFMT_D15S1;
|
present.AutoDepthStencilFormat = D3DFMT_D15S1;
|
||||||
if(FAILED(pID3D->CheckDeviceFormat(D3DADAPTER_DEFAULT, devtype,
|
if(FAILED(pID3D->CheckDeviceFormat(adapter, devtype,
|
||||||
present.BackBufferFormat, D3DUSAGE_DEPTHSTENCIL,
|
present.BackBufferFormat, D3DUSAGE_DEPTHSTENCIL,
|
||||||
D3DRTYPE_SURFACE, present.AutoDepthStencilFormat)))
|
D3DRTYPE_SURFACE, present.AutoDepthStencilFormat)))
|
||||||
{
|
{
|
||||||
@ -323,7 +336,7 @@ bool CD3D9Driver::initDriver(const core::dimension2d<s32>& screenSize, HWND hwnd
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if(FAILED(pID3D->CheckDepthStencilMatch(D3DADAPTER_DEFAULT, devtype,
|
if(FAILED(pID3D->CheckDepthStencilMatch(adapter, devtype,
|
||||||
present.BackBufferFormat, present.BackBufferFormat, present.AutoDepthStencilFormat)))
|
present.BackBufferFormat, present.BackBufferFormat, present.AutoDepthStencilFormat)))
|
||||||
{
|
{
|
||||||
os::Printer::log("Depth-stencil format is not compatible with display format, disabling stencil buffer.", ELL_WARNING);
|
os::Printer::log("Depth-stencil format is not compatible with display format, disabling stencil buffer.", ELL_WARNING);
|
||||||
@ -334,17 +347,17 @@ bool CD3D9Driver::initDriver(const core::dimension2d<s32>& screenSize, HWND hwnd
|
|||||||
if (!StencilBuffer)
|
if (!StencilBuffer)
|
||||||
{
|
{
|
||||||
present.AutoDepthStencilFormat = D3DFMT_D32;
|
present.AutoDepthStencilFormat = D3DFMT_D32;
|
||||||
if(FAILED(pID3D->CheckDeviceFormat(D3DADAPTER_DEFAULT, devtype,
|
if(FAILED(pID3D->CheckDeviceFormat(adapter, devtype,
|
||||||
present.BackBufferFormat, D3DUSAGE_DEPTHSTENCIL,
|
present.BackBufferFormat, D3DUSAGE_DEPTHSTENCIL,
|
||||||
D3DRTYPE_SURFACE, present.AutoDepthStencilFormat)))
|
D3DRTYPE_SURFACE, present.AutoDepthStencilFormat)))
|
||||||
{
|
{
|
||||||
present.AutoDepthStencilFormat = D3DFMT_D24X8;
|
present.AutoDepthStencilFormat = D3DFMT_D24X8;
|
||||||
if(FAILED(pID3D->CheckDeviceFormat(D3DADAPTER_DEFAULT, devtype,
|
if(FAILED(pID3D->CheckDeviceFormat(adapter, devtype,
|
||||||
present.BackBufferFormat, D3DUSAGE_DEPTHSTENCIL,
|
present.BackBufferFormat, D3DUSAGE_DEPTHSTENCIL,
|
||||||
D3DRTYPE_SURFACE, present.AutoDepthStencilFormat)))
|
D3DRTYPE_SURFACE, present.AutoDepthStencilFormat)))
|
||||||
{
|
{
|
||||||
present.AutoDepthStencilFormat = D3DFMT_D16;
|
present.AutoDepthStencilFormat = D3DFMT_D16;
|
||||||
if(FAILED(pID3D->CheckDeviceFormat(D3DADAPTER_DEFAULT, devtype,
|
if(FAILED(pID3D->CheckDeviceFormat(adapter, devtype,
|
||||||
present.BackBufferFormat, D3DUSAGE_DEPTHSTENCIL,
|
present.BackBufferFormat, D3DUSAGE_DEPTHSTENCIL,
|
||||||
D3DRTYPE_SURFACE, present.AutoDepthStencilFormat)))
|
D3DRTYPE_SURFACE, present.AutoDepthStencilFormat)))
|
||||||
{
|
{
|
||||||
@ -368,15 +381,15 @@ bool CD3D9Driver::initDriver(const core::dimension2d<s32>& screenSize, HWND hwnd
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
hr = pID3D->CreateDevice(D3DADAPTER_DEFAULT, devtype, hwnd,
|
hr = pID3D->CreateDevice(adapter, devtype, hwnd,
|
||||||
fpuPrecision | D3DCREATE_HARDWARE_VERTEXPROCESSING, &present, &pID3DDevice);
|
fpuPrecision | D3DCREATE_HARDWARE_VERTEXPROCESSING, &present, &pID3DDevice);
|
||||||
|
|
||||||
if(FAILED(hr))
|
if(FAILED(hr))
|
||||||
hr = pID3D->CreateDevice(D3DADAPTER_DEFAULT, devtype, hwnd,
|
hr = pID3D->CreateDevice(adapter, devtype, hwnd,
|
||||||
fpuPrecision | D3DCREATE_MIXED_VERTEXPROCESSING , &present, &pID3DDevice);
|
fpuPrecision | D3DCREATE_MIXED_VERTEXPROCESSING , &present, &pID3DDevice);
|
||||||
|
|
||||||
if(FAILED(hr))
|
if(FAILED(hr))
|
||||||
hr = pID3D->CreateDevice(D3DADAPTER_DEFAULT, devtype, hwnd,
|
hr = pID3D->CreateDevice(adapter, devtype, hwnd,
|
||||||
fpuPrecision | D3DCREATE_SOFTWARE_VERTEXPROCESSING, &present, &pID3DDevice);
|
fpuPrecision | D3DCREATE_SOFTWARE_VERTEXPROCESSING, &present, &pID3DDevice);
|
||||||
|
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
@ -1151,7 +1164,6 @@ void CD3D9Driver::drawVertexPrimitiveList(const void* vertices, u32 vertexCount,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void CD3D9Driver::draw2DImage(const video::ITexture* texture, const core::rect<s32>& destRect,
|
void CD3D9Driver::draw2DImage(const video::ITexture* texture, const core::rect<s32>& destRect,
|
||||||
const core::rect<s32>& sourceRect, const core::rect<s32>* clipRect,
|
const core::rect<s32>& sourceRect, const core::rect<s32>* clipRect,
|
||||||
video::SColor* colors, bool useAlphaChannelOfTexture)
|
video::SColor* colors, bool useAlphaChannelOfTexture)
|
||||||
@ -1215,7 +1227,6 @@ void CD3D9Driver::draw2DImage(const video::ITexture* texture, const core::rect<s
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//! draws a 2d image, using a color and the alpha channel of the texture if
|
//! draws a 2d image, using a color and the alpha channel of the texture if
|
||||||
//! desired. The image is drawn at pos and clipped against clipRect (if != 0).
|
//! desired. The image is drawn at pos and clipped against clipRect (if != 0).
|
||||||
void CD3D9Driver::draw2DImage(const video::ITexture* texture,
|
void CD3D9Driver::draw2DImage(const video::ITexture* texture,
|
||||||
@ -2517,3 +2528,4 @@ IVideoDriver* createDirectX9Driver(const core::dimension2d<s32>& screenSize, HWN
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user