cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

MadrMan
Journeyman III

Errors in frame profiler GPU PerfStudio 2.2

Hi,

I'm trying to profile my app with GPU PerfStudio 2.2 on my D3D11 app and i've been having some issues:

Analyze and Timing Pass seem to work just fine, however when I click on Full Profile I get "Number of draw calls per pass varies. Unable to profile."

This error also happens with the DX SDK sample apps.

After getting this error the Timing Pass button suddenly seems to give "Unable to start profiling. Please make sure you are using supported hardware." whereas it worked fine before trying a Full Profile.

I'm calling draw the exact same amount of times each frame, 7 times. (altough Analyze seems to think Draw calls = 9) The API trace confirms there are only 7 draw calls.

I'm not using D3DX so i don't strictly have passes as far as i know, so i'm not sure what GPU PerfStudio expects.

A probably unrelated issue: clicking on the pause buttons doesn't seem to affect the QueryPerformanceCounter return value in any way, shouldn't it make it return 0?

Thanks

0 Likes
3 Replies
plohrmann
Staff

Hello,

If you are receiving the error message about a variable number of draw calls, we recommend that you enable the “Frame Capture on Pause” option in the client. You can read about the different pause modes from the client Help->Help menu, under “Introduction to GPU PerfStudio 2” -> “Application Settings” topic. When you pause the application without frame capture, the value from QueryPerformanceCounter should return the same non-zero value as was queried when the application was first paused. If you are still seeing the result of that function change, it is probably because your application uses the static C runtime.

The DX SDK samples use DXUT to render the UI elements, and the approach that it uses may cause the number of draw calls to change from one frame to the next.

In order to perform a Full Profile and collect all the available counters, GPU PerfStudio must render your frame multiple times (each time it renders the frame is called a pass). The number of draw calls in each pass must be the same so that the HW data can be collected and processed correctly.

In regards to your question about 7 draw calls versus GPU PerfStudio thinking that there are 9 - GPU PerfStudio also considers calls like ClearRenderTargetView, CopyResource, and ResolveSubresource to be draw calls. If you connect using the Frame Debugger, you should be able to identify all 9 draw calls using the slider along the bottom of the Frame Debugger.

Please let us know if these suggestions are helpful

 

0 Likes

I enabled "Frame Capture on Pause" which made the app render the same frame all the time (like it should) but the frame profiler still said the number of draw calls varies per pass.  (Same thing happens with the DX SDK samples after enabling "Frame Capture on Pause")

I checked in the frame debugger and there are indeed 9 draw calls: ClearRenderTargetView, ClearDepthStencilView, and 7 DrawIndexInstanced.

The application always renders the exact same every frame, it never varies. The API Trace always looks exactly the same (exactly like it should, as far as i know). Is there anything my app needs to do in order for GPU PerfStudio to recognize the number of draw calls per pass properly?

Regarding the QueryPerformanceCounter, I was using "Multi-threaded Debug DLL (/MDd)", but now switched to "Multi-threaded DLL (/MD)". Printing QueryPerformanceCounter() to the console shows that it just keeps on counting when paused. Changing the pause options in GPU PerfStudio doesn't seem to help.

Using a HD4850 with the latest drivers, 10.3 on Vista x64 without UAC and the Feb 2010 DX SDK

Thanks

0 Likes

Hello,

I was able to reproduce the issue and now have a better understanding on what is happening. The error about varying drawcalls is inaccurate, and is a bug in GPUPerfStudio. It should be resolved in the next release. Unfortunately, there is a different error that is preventing the profile from completing properly, which is related to running a DX11 application on DX10 hardware. I do not have any forecast on when this issue will be resolved.

In the short term, using DirectX10 on the HD4850 should work correctly, or try to acquire an ATI Radeon HD 5000 series card to perform the profiles.

Thank you for reporting the issue.

 

0 Likes