FAQs Related to AMP

This section contains few of the questions that developers may have when using the AMP tool.

1. What are the bare minimums I need game side to have AMP working?

You need an AMP-enabled build (i.e. with GFX_AMP_SERVER defined). By default, all non-shipping builds of GFx have AMP enabled. Also, if your game does not call Platform::RenderThread::drawFrame, you need to make sure AMP is updated every frame, by calling AmpServer::GetInstance().AdvanceFrame

2. When we used AmpClient to connect our game, the frame rate of our game became very slow. We found AmpServer::AdvanceFrame() takes a lot of time. Is this normal?

As with most profilers, it is normal for there to be a performance penalty when connected to AMP. In order to minimize this performance impact, please make sure you start at a low profiling level, which can be set by selecting from the appropriate dropdown control on the AMP client toolbar. Then, once you have located the bottleneck, you may increase the profiling level at the bottleneck to determine the cause in greater detail. Requesting full memory reports at each frame may also have a significant performance impact, so please make sure these reports are produced only when you need to see them. You may toggle detailed memory reports on and off via the “i” (lowercase I) on the AMP client toolbar.

3. I'm running the game on Windows/PS3/Xbox, and I'm able to connect with the AMP client after it finds it in the discovery window. However, all the stats are blank.

AMP needs to receive information every frame in order to display memory and performance statistics. If your game does not call Platform::RenderThread::drawFrame, you need to make sure AMP is updated every frame, by calling AmpServer::GetInstance().AdvanceFrame

4. Why is AMP pausing one second or more to update (AMP::Server::WaitForAmpConnection)?

Normally, AMP server is paused for a second if it consumes too much memory, so that any accumulated data may be sent to the client. If this continues to occur, it is possible that your content results in so much profiling information that AMP does not have time to send it all to the client without pausing Scaleform.

You can reduce the amount of profiling information being sent, by toggling off source line timing and detailed memory reports (the 'i' button on AMP client). There is also a 'profile level' dropdown in the AMP client, which can be lowered as well. Finally, you can increase the memory threshold that triggers the problem. The default amount is set to 1MB, but you could modify it by calling GFx::AMP::Server::SetHeapLimit.

5. How much memory overhead can we expect when using the profiler?

By default, the AMP heap limit is 1MB, although this is not actually a hard limit, so it can be exceeded by a little. You can change this limit in your game by calling AmpServer::SetHeapLimit. The greater the limit, the less likely it will be that GFx will have to be paused while data is being sent to the AMP client.