AMD Mantle Performance Preview in Battlefield 4

AMD's Mantle is here for Battlefield 4. We take an XFX Radeon R9 290X video card for a spin under the AMD Mantle API and compare it to Direct3D 11.1. We look at performance advantages, compare resolutions, and even take a look at frame time. Is AMD Mantle everything it was cracked up to be? Let's find out in this performance preview.

Introduction

The long awaited, and now almost two month delayed, Mantel API from AMD finally makes its appearance in the first real game. AMD's Mantle is now present thanks to the latest patch in Battlefield 4. This new API technology was announced and briefed at the onset of the Radeon R9 and R7 series graphics cards announcement in early October of 2013.

It was stated back then that AMD Mantle would be coming to BF4 sometime in December of 2013. December rolled around, and an announcement from AMD stated the delay of AMD Mantle for January of 2014. AMD and DICE barely made that promise by delivering AMD Mantle on January 30th, 2014.

However, there was still a missing component, and that was the required Catalyst 14.1 Beta driver from AMD, which was not publically released until 10PM Eastern on Friday, January 31st, 2014. AMD made it in by the skin of its teeth on this one, with the January delivery date.

It is all here now, and we can finally take a look at what AMD Mantle has to offer in BF4. Please note that this evaluation today is a preview of performance under AMD Mantle. We have an in-depth evaluation covering all the cards, and comparisons to the competition, in the works. This is simply a preview of what you can expect right now on an AMD R9 290X video card between Direct3D 11 and AMD Mantle. We are going to look at average framerate differences, and frame time differences between the two APIs.

AMD Mantle

First let's define what AMD Mantle is, and go over what is required to get it working in BF4. This is pulled straight from AMD's reviewer guide on AMD Mantle:

At the simplest level, Mantle is an Application Programming Interface (API), or a language that game developers can use to write code that creates the beautiful graphics on your screen. In its current iteration, the Mantle API uniquely leverages the hardware in the Graphics Core Next architecture (GCN) of modern AMD Radeonآ™ GPUs for peak performance.

More broadly, Mantle is functionally similar to DirectXآ® and OpenGL, but Mantle is different in that it was purpose-built as a lower level API. By "lower level," it’s meant that the language of Mantle more closely matches the way modern graphics architectures (like AMD’s own GCN) are designed to execute code. The primary benefit of a lower level API is a reduction in software bottlenecks, such as the time a GPU and CPU must spend translating/understanding/reorganizing code on-the-fly before it can be executed and presented to the user as graphics. Mantle comes in contrast to the "high level API," which offers broader compatibility with multiple GPU architectures, but does so at the expense of lower performance and efficiency.

To provide even further information on what AMD Mantle's goal is, we are going to post the entire section from the reviewers guide called: "Design Principles of Mantle" on the following page. It is too lengthy to post on this page, but on the next page, you can read in-depth how Mantle can improve performance. It is very important because it has more to do with CPU dependency, than pure GPU dependent graphics performance improvements.

AMD has also provided a Blog with a whole lot of information about AMD Mantle that is worth a read.


How to make Mantle work in BF4

Now let's go over what is required to make Mantle work in BF4.

AMD has a FAQ if you are encountering any issues.

Please read this blog post from DICE which will provide all the info about the Mantle patch in BF4: Mantle renderer now available in Battlefield 4.

The very first requirement is that you have the proper GPU. You need a Graphics Core Next GPU (GCN.) A Graphics Core Next-based GPU, such as one from the AMD Radeon R9, R7, HD 7000 or HD 8000 Series GPUs.

Next open up Origin and let it update BF4 to the latest patch. However, once that is done, you still won't be able to enable Mantle until the proper driver is installed.

The current supported driver to make Mantle work is Catalyst 14.1 Beta 1.6. Note this is a Beta driver, and there are issues. Note the Known Issues list at the middle of that webpage. Please, properly uninstall your previous driver first. In fact, you should run a driver cleaner program to clear out all registry files and INF cache stores of old driver pieces. This is very important. There is a free utility called DDU which will do so. Info about DDU, and a link to its download location.

Once you have this done, then you need to manually enable Mantle from within the game's graphics option. At the top of the graphics menu is a new selection called "Graphics API" the default is Direct3D, change it to Mantle. Quit the game, and restart the game. You will now be running in Mantle.

One thing you will discover is that FRAPS does not work when the AMD Mantle API is active. This is a completely different API from Direct3D, so FRAPS doesn't know what that is. Thankfully DICE has introduced a Frame Time capture tool into the game. From this, we can manually calculate the Average FPS from a run. We won't be able to show you Frame Rate over time currently. All we are able to show you is the Average FPS, and the Frame Times.

When the game is launched simply press the tilde "~" key to open console then use the following command.

"PerfOverlay.FrameFileLogEnable 1" to start saving frame times

"PerfOverlay.FrameFileLogEnable 0" to stop

The resulting .csv file will be located in your User/Documents/Battlefield 4 directory. The file will contain Frame Time, CPU Frame Time, and GPU Frame Time in milliseconds. To calculate average fps for the run you divide the total number of frame entries in the log (which is total number of frames for the session) over the total amount of time.

Average FPS = (Total # of Frame Time Entries) أ· (Σ (Total # of Frame Times in ms) أ· 1000)

Another in-game command that is useful to use is "Render.DrawScreenInfo 1" that will now show additional on-screen information about your CPU & GPU config, resolution and as well as if Mantle or DirectX 11 is used for rendering.

Test System

For our test system, we are using my standard testing rig for all reviews, which is shown here. The video card is an XFX R9 290X at stock R9 290X settings, no throttling since it is custom cooled, solid 1GHz operation.