AnsweredAssumed Answered

Driver Freezes When Using GPUPerfAPI

Question asked by danholbert on Jun 26, 2012
Latest reply on Jul 5, 2012 by danarchy



After having only very minimal success with GPU PerfStudio, I decided to attempt integrating GPUPerfAPI into the engine that we are using. However, I am having two issues, the most important of which is the driver getting stuck in an infinite loop.


I am enabling only the GPUTime counter so that the required number of passes is only 1, thus hopefully making it useful for real-time performance analysis in a game by not having to render the same, exact frame more than once. I am doing one session, one pass, and one sample per frame. The sample encompasses all GPU commands for the frame.


The first (and less troubling) issue is that the first four sessions never become ready (GPA_IsSessionReady). If I try to read the counter value anyway (blocking), then I get a freeze in the driver. I can work around this by starting with the 5th session when I go to read the results.


However, after issuing 32 sessions, calling GPA_BeginSession subsequently freezes in an infinite loop in the driver (it freeezes trying to begin the 33rd session). Stepping through the assembly, it is stuck in the following loop in GPUPerfAPI-DX11-x64.dll:


000007FED42A2160  mov         rax,qword ptr [rbx] 

000007FED42A2163  mov         rcx,rbx 

000007FED42A2166  call        qword ptr [rax+18h] 

000007FED42A2169  test        al,al 

000007FED42A216B  je          000007FED42A2160 


When pausing the program in the debugging, the call stack usually goes from the GPUPerfAPI dll, into the Microsoft DX11 dll, and into an ATI driver dll. Usually something like this:


[Frames below may be incorrect and/or missing, no symbols loaded for atidxx64.dll]


I have experienced this issue with both the 12.4 driver and 898 Release Candidate 5 driver. I am running an MSI R7950 card.


Is there something that I am doing wrong?