Cache result of D3DPERF_GetStatus.
I profiled the WebGL acquarium with AMD CodeAnalyst and it turns out this function got a lot of hits. Top 10 before change:
CS:EIP Symbol + Offset 64-bit Timer samples
0x62a87260 CBatchFilterI::ProcessBatch 13.41
0x62a171f1 D3DPERF_GetStatus 6.04
0x629ce831 CD3DBase::SetVertexShaderConstantF_FP 5.12
0x62a88bea CBatchFilterI::GetBatchBufferPointer<_LH_SETPIXELSHADERCONSTIMM_TOKEN_SMALL> 4.61
0x6298060b UpdateViewportCache 4.2
0x6298da3a CD3DBase::UpdateTextures 3.58
0x6298db6b CD3DDDIDX10::SetTexture 2.76
0x6298df1d CD3DDDIDX10::InsertStreamSource 2.46
0x629d1c1a CD3DBase::SetPixelShaderConstantF_FP 2.25
0x6297efc4 CD3DHal::SetSamplerState_FP 2.05
10 functions, 186 instructions, Total: 454 samples, 46.47% of shown samples, 2.51% of total session samples
And after:
CS:EIP Symbol + Offset 64-bit Timer samples
0x69317260 CBatchFilterI::ProcessBatch 13.87
0x69318bea CBatchFilterI::GetBatchBufferPointer<_LH_SETPIXELSHADERCONSTIMM_TOKEN_SMALL> 5.84
0x6921060b UpdateViewportCache 5.29
0x6925e831 CD3DBase::SetVertexShaderConstantF_FP 4.93
0x6921da3a CD3DBase::UpdateTextures 4.38
0x6921e034 CD3DBase::SetStreamSource_FP 3.65
0x69261c1a CD3DBase::SetPixelShaderConstantF_FP 3.65
0x69227651 CD3DBase::DrawIndexedPrimitive 2.74
0x6920efc4 CD3DHal::SetSamplerState_FP 2.37
0x6925e9f7 CD3DBase::SetVertexShaderConstantIntF 2.37
10 functions, 152 instructions, Total: 269 samples, 49.09% of shown samples, 0.80% of total session samples
UpdateViewportCache looks like it might be low hanging fruit as well.
Review URL: http://codereview.appspot.com/4535049
git-svn-id: https://angleproject.googlecode.com/svn/trunk@648 736b8ea6-26fd-11df-bfd4-992fa37f6226
2 files changed