1 June 2021

Fidelity FX Super Resolution's dirty secret... (Updated)

 
AMD have showcased their FSR (Fidelity FX Super Resolution) upscaling technology very briefly this morning to much critical acclaim. It's coming earlier than I had predicted, given AMD's comments at the beginning of the year, and I am optimistic that this will give a boost to AMD's performance in future titles. However, I'm not as bullish on the implementation as others are for two reasons... I believe Paul over at NotAnAppleFan when he says that FSR "has a catch", and I believe that FSR needs driver implementation from the platform vendors. 

**UPDATE**


I didn't have much time to do an update to this piece. It is apparent that I was mistaken in my understanding of how FSR could be implemented on various vendors' graphics architectures. The problem I had was that I didn't see any technical explanation (and still haven't) from AMD or other sources as to how it actually runs on the shader arrays in GPUs. I assumed that AMD would be writing in a language that would need transposition to other architectures but it seems that it doesn't and that they didn't. As a result of this, I've tried to inform myself some more on shader languages so I hopefully won't repeat this mistake going forward. Of course, it didn't help that not a single person on my twitter post actually tried to explain it or could point to a reason why it would work. They were just happy shouting over and over again that it would work. In fact, only one person in that entire exchange actually gave me any useful information and it related to technical support.

This has no impact on the other conclusions of this post, though. I still expect the 6000 series to outperform the 30 series at 1080p due to the infinity cache when using FSR* (as they currently do at native resolution). I still think that lowering quality settigns will provide a better image quality for low-end and low resolution gamers.

I'm currently at a loss as to the GTX 1060 performance shown in the presentation for Godfall because, as far as I can see, not a single reviewer has tried to replicate it. I've checked all the reviewers I follow and none of them performed this simple check of AMD's claims.
*I'm unable to verify this because, again, no reviewers that I follow have done the comparisons necessary to understand the differences down the stack from the RX 6800 XT to the RX 6700 XT versus Nvidia cards from RTX 3080 to RTX 3060 Ti.
TechPowerUp have shown a preliminary comparison but lack enough data for individual games to show the expected effect of InfinityCache on performance increase for the RX 6000 series to be able to ignore CPU bottlenecking... However, you can see the relative improvement to the 3080 Ti here at the lower resolutions.


Anyway, the corrected original article continues below:

Upending the table...


FSR is a graphics upscaling tool that will help improve performance at some cost to visual quality - similar in concept to Nvidia's DLSS. However, unlike DLSS which is proprietary and which will only work on hardware with dedicate silicon, AMD is claiming that FSR will work on older generations of AMD graphics cards as well as competing vendors' graphics solutions (i.e. Nvidia and Intel). During the presentation, AMD gave an indication as to the potential performance increase in Godfall (an AMD-sponsored current gen title) for the RX 6800 XT at 4K and a GTX 1060 at 1440p.

This platform agnosticism sounds great in principle but, according to Hardware Unboxed, will require technical support from the platform vendor in question - i.e. Nvidia and Intel will be required to implement the support in their drivers, developers cannot just enable it on a GPU whether the vendor wishes to support it or not. This means that, in practice, FSR is likely going to struggle to break through into mainstream adoption unless AMD gets Intel on board as a partner because Nvidia is likely to continue to prioritise their own upscaling solution and AMD's marketshare is almost non-existent by comparison to the elephant in the room...

In fact, the situation is made pretty clear on AMD's own webpage:
"AMD does not provide technical or warranty support for AMD FidelityFX Super Resolution enablement on other vendor's graphics cards."
So AMD hacked together their own driver for the GTX 1060 in order to give Nvidia a big black publicity eye in trying to force them to adopt the open standard. That's a pretty dirty trick, in my opinion.

At this point in time, I am unsure as to what this means since "it's just math" and should just work without technical support... There should be no bugs to work out. I've still not seen a 100% logic-tight explanation to this caveat.

What was very confusing was the way AMD were speaking about how FSR is supported on all generations of cards back to the GTX 10 series and RX 400 series. Well, I'm pretty sure they were speaking in broad terms about the ability of the architectures to perform the compute calculations needed to perform the upscaling. Nothing more, nothing less. Any card that is DX12 compatible (not DX12 ultimate) is capable then...


This is a good performance uplift: ~30 fps from below 60 to above is a huge improvement in consistency...

The other thing I'm worried about is the actual performance uplift for various graphics cards. Tom over at Moore's Law Is Dead is quite enthused about the software's potential, specifically at the low-to-midrange. However, I'm looking at those GTX 1060 results and I'm thinking that Paul's hints in his youtube video and on the Techonomics podcast are that FSR requires the presence of the much-vaunted Infinity Cache in order to gain really noticeable performance increases.

Let me put it this way - we know that Infinity Cache (IC) performance enhancements occur when the IC is being "hit" at least 60-80% of the time for data requests. When data is not resident in the IC, the performance drops off considerably as the actual real-world memory bandwidth of the RDNA 2 cards is not that high. Hence why the RX 6700 XT isn't great at being a 4K gaming card - the cache hits are optimal at 1080p/1440p and the IC would need to be larger to continue this performance boost into 4K or near 4K resolutions.


RX 6700 XT vs the RTX 3070 in certain games, showing the drop in performance as the hit rate of data in the infinity cache drops below a certain threshold, reducing the performance as the resolution increases... via Hardware Unboxed

Looking at the performance shown for each card in AMD's presentation, we can see that the GTX 1060 is beating the performance at a native 1440p by around 20 fps. However, unlike in the 6800 XT's case, that 20 fps is still sub 60 fps and probably features dips to below 30 fps... meaning that the real-world performance increase, despite being an impressive sounding "41%", isn't really much better in terms of user experience. 

So, the 6800 XT sees a massive boost because of the affinity of the infinity cache for lower resolutions and the IC-less 1060 sees a much more modest improvement... with significantly worse resultant visuals.

This implies to me that graphics cards without IC will not see much performance benefit compared to the loss in visual quality. If the GTX 1060 is not matching the performance of 1080p then it begs the question as to what resolution is being rendered natively and if the performance hit of the FSR technique is just too large when working without IC present to realistically be useful. 

This means that FSR is not likely to be the big win for low-to-midrange graphics solutions that people hope it will be because Navi 23 (32 MB IC) Navi 24 (no IC), pre-RX 6000 GPUs and all APUs (XSX, PS5, 5000G series) will not have much, if any performance gains from this technique, at a worse graphics quality.

Real-world performance for the two cards featured in AMD's presentation from Techpowerup, the presentation itself and other youtube channels for 1080p performance...


So, having this as my starting point, I decided to try and calculate the internal native resolution that both the GTX 1060 and RX 6800 XT were upscaling from. I found that the 1060 had a linear performance increase with increasing resolution whereas I found a power relationship for the 6800 XT (which makes sense given that I've already mentioned that performance decreases non-linearly with increasing resolution due to IC misses).

From this calculation, I was able to estimate the approximate internal native resolution that was being upscaled from using FSR. For the RX 6800 XT it was 1440p and for the GTX 1060 it was 200p... and this is with the "quality" setting for FSR.

In this context, the blurriness of the GTX 1060 is completely understandable. I don't think that DLSS would even look good upscaled from such a low resolution... which is approximately what DLSS ultra performance mode looks like. But this means that FSR's second highest setting at 1440p looks as "good" as DLSS's worst setting at 720p...

So, yeah. People weren't kidding when they said that FSR was almost as good as DLSS, but not quite.


This was really a low blow from AMD... showing off a competitor's product in a poor light in undefined conditions... and a six year old product, at that!

The catch to all of this posturing by AMD is this: the performance increase of FSR for the GTX 1060 is meaningless. The muddy, blurry experience of FSR's increased frames per second shown in the brief demo can be achieved by some modest graphical settings adjustments whilst still keeping the crisp nature of the 1440p experience. Adjusting just one setting achieved 31 fps up from 21 fps, adjusting some more will get you to 40 fps.

In one fell swoop, the advantage of FSR is negated by a settings optimisaiton guide.


So what does FSR mean for gaming?


FSR is probably going to be a good technology for the industry as a whole. Having an open source implementation that is backed by one of the big players in the graphics world means something for everyone to latch onto and support.

It means that AMD gets to play to its strengths - the power of Infinity Cache lies at lower resolutions and FSR allows them to rely on that bonus grunt.

Allowing older generations of cards to be enabled on it through driver updates wins them mindshare whilst people will forgive any lacklustre performance increases on that old hardware because "it's free". At the same time, it paints competitors in a negative light if they don't provide this "free" support on older hardware.

Ultimately though, FSR is no more of a saviour for the low-end than DLSS really is and people should not be hoping for it to be. It's a small boost for the most part for most graphics cards on the market which, when combined with lots of other small boosts on their platforms (see Smart Access Memory) begin to add up over time.

However, time will ultimately be the judge of whether AMD can enforce this standard on an industry that is already aligning itself with the proprietary solution of their 800 lb gorilla of a competitor in the graphics space...

No comments: