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: http://angleproject.googlecode.com/svn/trunk@648 736b8ea6-26fd-11df-bfd4-992fa37f6226
2 files changed