BF4 Integrates FCAT Overlay Support
Frostbite has integrated an FCAT style overlay in BF4 and we use it to test Mantle performance the way we know how.
Back in September AMD publicly announced Mantle, a new lower level API meant to offer more performance for gamers and more control for developers fed up with the restrictions of DirectX. Without diving too much into the politics of the release, the fact that Battlefield 4 developer DICE was integrating Mantle into the Frostbite engine for Battlefield was a huge proof point for the technology. Even though the release was a bit later than AMD had promised us, coming at the end of January 2014, one of the biggest PC games on the market today had integrated a proprietary AMD API.
When I did my first performance preview of BF4 with Mantle on February 1st, the results were mixed but we had other issues to deal with. First and foremost, our primary graphics testing methodology, called Frame Rating, wasn't able to be integrated due to the change of API. Instead we were forced to use an in-game frame rate counter built by DICE which worked fine, but didn't give us the fine grain data we really wanted to put the platform to the test. It worked, but we wanted more. Today we are happy to announce we have full support for our Frame Rating and FCAT testing with BF4 running under Mantle.
A History of Frame Rating
In late 2012 and throughout 2013, testing graphics cards became a much more complicated beast. Terms like frame pacing, stutter, jitter and runts were not in the vocabulary of most enthusiasts but became an important part of the story just about one year ago. Though complicated to fully explain, the basics are pretty simple.
Rather than using software on the machine being tested to measure performance, our Frame Rating system uses a combination of local software and external capture hardware. On the local system with the hardware being evaluated we run a small piece of software called an overlay that draws small colored bars on the left hand side of the game screen that change successively with each frame rendered by the game. Using a secondary system, we capture the output from the graphics card directly, intercepting it from the display output, in real-time in an uncompressed form. With that video file captured, we then analyze it frame by frame, measuring the length of each of those colored bars, how long they are on the screen, how consistently they are displayed. This allows us to find the average frame rate but also to find how smoothly the frames are presented, if there are dropped frames and if there are jitter or stutter issues.
The first hurdle for this testing process is that software overlay. NVIDIA helped develop that with its FCAT release and they have made progressive optimization and improvements to it over time. However, it only supports DirectX. When I started our Mantle testing it became apparent that the overlay options we had (from NVIDIA, from others) would not work, as I had originally expected and expressed concern to AMD. To be clear, I have asked AMD in the past to build a universal Mantle API overlay option, but they haven't indicated must interest in the matter. Luckily, there was another option for us to pursue.
FCAT Options in Battlefield 4
I met Johan Andersson, Technical Director at DICE, several years ago but got some significant time to talk with him during the AMD Hawaii product announcement event. Then, at the NVIDIA G-Sync technology reveal in Montreal, I ran into him again and our discussion focused around performance testing under Mantle. As a perfectionist around gaming performance, he obviously knew the benefits of a smooth and consistent frame rate, and agreed that testing methodologies like Frame Rating were pivotal to putting a renewed focus on that topic.
I asked him if it were possible to offer an integrated overlay in Battlefield 4, or any Mantle game for that matter. It was. It is. Now it's here.
That's it; that's the command you can run from the console to enable an FCAT / Frame Rating style overlay in Battlefield 4 after this week's application update. It works when rendering in Direct3D and in Mantle and enables us to get an apples-to-apples performance comparison between the two APIs. It also gives us the ability to measure CrossFire performance and pacing capability that we have NOT been able to do previously in Mantle.
Both AMD and Johan Andersson have told me that Mantle-based multi-GPU support in Battlefield 4 is still in its early phases, and Johan told me directly that "frame pacing isn't perfected." We'll take the results we show here today with tepid enthusiasm as both parties are promising improvements in the not too distant future. Today's story is meant to demonstrate that Frame Rating / FCAT testing is now possible with BF4 in Mantle and help pave the way for improvements going forward.
It would be advantageous to see other developers integrate similar features in Mantle games. Or better yet for AMD to develop a universal model.