[ TLDR ]
Nvidia card died, bought an AMD GPU, everything works except gw2 having massive issues.
The only solution was to use a third party API wrapper that proxies GW2 DirectX 9 calls to DirectX 12 (https://github.com/megai2/d912pxy) or a similar software that proxies Directx9/10/11 to Vulkan that is used in Steam for Linux (https://github.com/doitsujin/dxvk).
[ Long version ]
Last week my GTX 980TI decided to pass away and I was forced to look into a replacement GPU. Long story short, after a lot of research into the uproar in AMD drivers stability, I concluded that price/performance and stability wise one of the latest models (XFX third iteration -> THICC III Ultra) had perfect thermals, great performances and would set me back 400 euros instead of 600 for a similar performance gain from a 2070 Super.
I don't game as much anymore besides GW2, but I occasionally enjoy the latest and greatest (Doom Eternal), and since I game at 1440p I welcomed the increased performance at higher resolutions.
So, just for those wondering how my research paid out:
Latest drivers (Adrenaline 20.4.1 - optional) with the aforementioned card offered a similarly hassle-free experience to my old 980TI. Yes sometimes I get a crash, especially if I put my PC on sleep and then forget to reboot before gaming, but guess what? It happened with pretty much identical frequency on the latest nvidia drivers (I'm farly sure it's Windows to blame here, since I've been running Win 10 and this setup for over 4 years and I started having these issues relatively recently). The card is a beast, performs beyond expectations and it delivers hours and hours of continuous gameplay on demanding titles (such as Doom Eternal) without a single glitch, overheating or skipping frames.
Enter the game I spend most of my time in: GW2.
I am one of those daily fractals runners, every day I do my dailies and recs, and I like to heal (HFB). From the start I noticed the usual "stutter" that comes when you just load into a map and turn the camera 180 degrees to be severely worse. No big deal, since that's usually a temporary artifact that goes away as soon as everything is properly cached in the scene. I stepped into my first fractals with the new card and the horror of my new situation presented itself: at completely random times especially in visually intense scenes (think second level Cliffside when breaking the sigil where the floor is in flame) the image completely freezes (not the game mind you, just the image), and all I can do is guess what's going on and what I should do to keep my party alive.
Time for additional research then, surely there must be a way to fix this. Thinking back to the days I had ATI/AMD cards I remember them having issues with "powerplay", the features that balances the GPU frequency dynamically based on the GPU load. I had noticed that no matter what GW2 throws at it the GPU never absorbs more than 45W and hovers at around 800/900Mhz (out of 1750/2025 of its max frequency and boost). Back then the fix was pretty easy, dump the video card bios, alter the lookup tables for the frequency ranges and basically force it to stick to its maximum frequency at all load levels. This prevented crashes and freezes before, it was worth a try (I was still in disbelief though that after so many years this had not been fixed).
At least nowadays you don't have to flash a new bios on the cards, you can manage frequency pinning per application via the management software, so that was a quick test I could do. No dice, the problem persisted.
More reading feedback from other GW2 players showed that this was a pretty common issue with users of the Navi GPUs, and that the solution often reported was to employ something like the DirectX9 to DirectX12 API proxy for Guild Wars 2 (https://github.com/megai2/d912pxy) to, simply put, route all rendering calls through to DirectX 12.
Once installed all issues were gone, and the new performance obtained made the game feel better than it ever did since input and gameplay was not stomped by the frame rendering delays and everything felt more responsive and enjoyable. And I wish this was only an AMD driver issue, these benefits can be enjoyed by Nvidia users as well. If I hadn't gone down the AMD road it would have never occurred to me that such project even existed.
The performance differences are STARK and SHOCKING, I had never seen GW2 run that smoothly in all 7+ years that I've been playing it. While I don't care for smooth performances when it comes to GW2 (although it's very welcome), I do care about reliability, and depending on a third party software to be able to play effectively is simply an obscene proposition. These issues are very annoying at best, completely game-breaking in demanding group activities such as raids and fractals.
I always assumed that the stutter deriving from a 180 degrees turn of the camera on a new map was due to the culling computed by Umbra (the middle-ware employed for this task in the engine), but it's now dawning on me that the bottleneck in the engine is the graphics APIs, since shaders in Dirext12 and Vulkan are compiled and cached asynchronously, guess what? I might see a grey surface or character when I turn the camera, and until its shader is ready, but with the DX12 proxy there is no waiting for the frame to be complete and the stutter is gone. What's aggravating is that this makes gameplay dramatically more responsive than what it was on my Nvidia 980 TI, since in DX9 this inevitably affects input processing as well.
[ Questions ]
1. Are AMD cards tested with the game at all? If the DirectX driver implementation from AMD has limits surely something can be done to at least play nice with its handicaps and avoid complete stalls of the framebuffer.
2. If this is not a fluke for a minority of AMD users, and you can reproduce the issue, how about getting AMD onboard to figure out a solution to the hard stalls in their implementation?
3. What about the future of the game, Is a graphics API revamp being considered?
If a future rework of the renderer is out of the question because of the task's scope, can we at least have some insights from one of your rendering engineers on how to mitigate the issue? It's not like users can profile the engine on the AMD drivers stack and figure out what's clogging its gears.