1 Reply Latest reply on Apr 20, 2016 1:50 PM by denis.ischenko.frogwares

    CPU time profiling for Radeon DX11 driver

    denis.ischenko.frogwares

      Hi everyone!

      My name is Denis, I'm working as a CTO at Frogwares.

       

      Currently we are working on getting our recent Sherlock Holmes adventure game running well on Radeon video adapters. The game is made with our custom version of UE3 and so far I don't see too much problems in our rendering and game threads. But what's really strange is that when we begin to stream the game resources actively we have a thread(s) in atidxx64.dll which occupies up to 100% of CPU time - it simply eats all CPU cores it can. The driver dll operates inside our process.

       

      GPUPerfSudio doesn't show a lot here as our own CPU time and API calls time are absolutely normal and don't seem to be a bottleneck. This is expected as the CPU consumption of our (UE3) threads doesn't grow while the resources are streamed - it grows only for atidxx64.dll thread(s). It seems like DX11 sends some asynchronous requests to driver while initializing the streamed resources which are then processed in atidxx64.dll thread and take a lot of CPU time.

       

      We run the game on AMD Radeon R7 370 adapter and we tried already several version of driver packs including the recent ones with the same result. So here are our questions:

       

      • What tools can we use to debug such a problem?
      • Can we get atidxx64.dll symbols to better localize the issue? This way we could use the Windows Performance Analyzer to find a bottleneck.
      • What kind of API calls may lead to this kind of driver overhead? What should we check first?
      • Is there any secondary signs profiled by GPUPerfStudio which could help us to deduce the reason the driver bottleneck?

       

      Thank you very much in advance!

       

      Denis.