Jump to content
  • Advertisement
Sign in to follow this  
Tispe

PIX optimizations?

This topic is 1921 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello, my GPU1 usage is about 50%, GPU2 usage is 10%. Total CPU usage is 15%, no core goes over 30% usage.

 

However, if i draw more stuff my fps goes down, even though usage does not go up!

 

Here is an image captured from PIX.

[attachment=17331:performance.png]

 

As you can see, in the begining I copy data to one texture, then the CPU does work, then I copy a bunch of stuff to dynamic vertex buffers(first big chunk), then CPU does some more work and finally I draw everything(second big chunk).

 

Is it possible to increase performance? I'm thinking moving stuff together on the timeline?

 

Cheers!

Share this post


Link to post
Share on other sites
Advertisement

You probably want to start with a CPU profiler like Very Sleepy to see where the slowness is on the CPU side is. Make sure you profile using an optimized build.

 

You should also try and avoid unnecessary CPU<->GPU synchronization, like reading back data on the CPU that the GPU has just written.

Share this post


Link to post
Share on other sites


Make sure you profile using an optimized build.

Is setting the build to Release enough to make it optimized? What optimizations can you recomend in Visual Studio 2010?

Share this post


Link to post
Share on other sites

Yes, setting it to release mode is enough. The extra settings you can adjust on top of that usually don't have that much impact on performance.

 

I'd also recommend starting the program without debugging, so you don't get the overhead of the debug heap.

Share this post


Link to post
Share on other sites

Yes, setting it to release mode is enough. The extra settings you can adjust on top of that usually don't have that much impact on performance.

 

I'd also recommend starting the program without debugging, so you don't get the overhead of the debug heap.

Actually there is one that will make a bit of a difference and the is turning SSE2 on, most (95%) of CPU's out there nowadays support SSE2 so turning it on should be fine.

Share this post


Link to post
Share on other sites

Do you know if standard D3DXMATRIX operations will take advantage of SSE2? Is it off by default?

Share this post


Link to post
Share on other sites

Do you know if standard D3DXMATRIX operations will take advantage of SSE2? Is it off by default?

It doesn't it is implemented as normal float arrays and not as intrinsics, the DirectXMath or XNAMath(on older SDKs, June 2010 is still XNAMath I believe) checks whether the CPU target you are compiling for can actually support SSE instruction and if it does switches to intrinsics, if it doesn't it falls back to non intrinsic code.

Edited by NightCreature83

Share this post


Link to post
Share on other sites

I thought D3DX did, given the existence of stuff like D3DXMATRIXA16 (and 16byte alignment being an SSE thing)? I don't see why that would be a bottle neck though, unless that last block has a GPU -> CPU data transfer? Can't the CPU just carry on preparing the next frame while the GPU does those Draw's?

Edited by SyncViews

Share this post


Link to post
Share on other sites

I thought D3DX did, given the existence of stuff like D3DXMATRIXA16 (and 16byte alignment being an SSE thing)? I don't see why that would be a bottle neck though, unless that last block has a GPU -> CPU data transfer? Can't the CPU just carry on preparing the next frame while the GPU does those Draw's?

16byte alignment is not a specific SSE thing it just happens to be that 16byte aligned data just fetches faster from memory as in most systems it is a full cache line.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!