Performance of D3D10 on Windows 7

Started by
4 comments, last by mightypigeon 14 years, 7 months ago
I just got a brand new PC, Intel core i7 with ATI Radeon HD 4350 running Windows 7 Ultimate. I wrote a sample program using D3D 10 that does *nothing* except clear the display every frame and draw the FPS and milliseconds per frame in the window. What I don't understand is that I'm only getting a max of 700 FPS when I do this. Normally this would easily result in 4,000+ frames per second. I've never used windows 7 or even vista before however, and I'm also somewhat new to D3D in general. Could this be related to its use of 3d graphics and transparency for the desktop and windows? Or something else maybe? Any suggestions appreciated.
Advertisement
To be honest I wouldn't concern yourself with this too much especially when you aren't drawing anything useful. Also consider that frame time is often more important than frames per second. And where are you getting this 4000+ fps metric?
http://www.mvps.org/directx/articles/fps_versus_frame_time.htm
My previous computer was far slower, running Windows XP and a 2 or 3 generation old video card, and using DirectX 9 the same program (well, a Dx9 program that did the same thing but used dx9 interfaces) was giving me about 3,000 frames per second. I know mspf is more useful than fps, but 700 fps is like 1.5 milliseconds per frame, which seems pretty strange since all it's doing is clearing the back buffer and drawing some text to the window, and on my slow DX9 machine with a terrible video card I was getting 0.3 milliseconds per frame.

Is this using a release build of your app?

Use PIX or some other GPU profiler to look at what's actually happening, then it should be more obvious.

How big is the render target? What format is it in? Are you clearing depth too? How long does the actual clear take versus your text drawing? A screenshot of the profiler with timings per action would be most helpful.

Latest video drivers? Beta Win7 video drivers? Could be a culprit.

Also, this doesn't mean your fancy new computer can only draw a fraction of the stuff your old computer could. More realistically, it will blow the socks off of it and you'll wonder why you wasted time worrying about how long it takes to only clear the buffer.
It is a release build, I'll look into PIX. For reference my draw function looks like this:

md3dDevice->ClearRenderTargetView(mRenderTargetView, mClearColor);md3dDevice->ClearDepthStencilView(mDepthStencilView, D3D10_CLEAR_DEPTH|D3D10_CLEAR_STENCIL, 1.0f, 0);RECT R = {5, 5, 0, 0};mFont->DrawText(0, mFrameStats.c_str(), -1, &R, DT_NOCLIP, D3DXCOLOR(0.0f, 0.0f, 0.0f, 1.0f) );mSwapChain->Present(0, 0);


The render target is initially 800x600 windowed. I'm using dual widescreen monitors, one of which is 1920x1080 and the other of which is 1680x1050. Switching to full screen via the Alt+Enter support that is automatically provided by DXGI on either monitor and I get similar FPS.

The drivers could be a definite culprit, didn't think of that. It doesn't claim to be a beta driver, but windows 7 isn't even in stores yet so I doubt it's as solid as it will be in a few months. To be honest I know hardly anything about the performance of this video card. I got the cheapest one that was available with this system configuration because I was going to wait for the DX11 cards to come out. I'll try to update my video drivers and if it's still bothering me I might try the GPU profiler you suggested.

You're right that it's probably nothing to worry about, just found it odd that it takes a few milliseconds to clear the screen. I wasn't sure if it was related to the way I was using D3D. The initialization procedure has changed drastically since D3D9 and I wasn't sure if I was doing it wrong for multi-mon setups, or something like that.
Have you tried disabling themes and desktop composition? I found that doing that increases my frame rate for a blank screen in both Direct3D and OpenGL by up to 4x.

Also, try disabling your second monitor and see if that has an effect on performance.

And finally the HD 4350 isn't an overly powerful card... that may be its fillrate limit? Especially since your resolutions are fairly large.
[size="1"]

This topic is closed to new replies.

Advertisement