I am running into the same issue consistently.
My setup:
- AMD Radeon RX Vega 64 (<-- the common denominator?)
- AMD Ryzen 5 2600
- 16GB RAM
Basically the bare minimum...
Additionally I was fighting performance problems on large maps (mostly conquest): infantry combat was like walking through honey. Rush and the other modes on smaller maps were running stable though, probably hinting at the CPU being a bottleneck.
I was able to increase performance to somewhat usable levels by doing a combination of the following:
- Disable / uninstall the HD texture packs (either via Steam -> Properties -> DLC -> deselect everything with "HD Textures" in the title, or in game somewhere in the Settings -> System menu)
- Tweak the PROFSAVE_profile settings (located in "%USERPROFILE%\Documents\Battlefield 6\settings\steam")
- DISCLAIMER: I don't know what I am doing for the most part, use at your own risk
- set "GstRender.Dx12Enabled 1" (the game only has a Dx12 renderer AFAIK, but it felt like it made a difference :3)
- set "GstRender.Enlighten 0" (this one I do not even know what it does)
- Turn the graphics quality down looooow
That left me with the "DXGI_ERROR_DEVICE_HUNG" crashes, which can very reliably be reproduced on my setup:
- Load into a match (Operation Firestorm conquest seems to work particularly well)
- Equip a sniper with > 3x scope (10x seems to work well)
- Aim down sight for a bit
My crash dumps look pretty much identical to the other ones posted here. I doubt that the crash is related to FSR2 though. Addresses like "bf6!ffxFsr2ResourceIsNull+0x22ad1a0" and similar are given relative to the "ffxFsr2ResourceIsNull" symbol, but the offset "0x22ad1a0" is huge. My guess is that they just stripped all / most other symbols from the executable, so "ffxFsr2ResourceIsNull" just happens to be the best WinDbg can get.
You can also just look at the different thread callstacks in WinDbg, which for me mostly look like this:
[0x0] win32u!NtUserGetMessage+0x14
[0x1] user32!GetMessageW+0x22
[0x2] gameoverlayrenderer64!OverlayHookD3D3+0x284f7
[0x3] bf6!ffxFsr2ResourceIsNull+0x274cbfe
[0x4] bf6!ffxFsr2ResourceIsNull+0x274b87c
[0x5] bf6!ffxFsr2ResourceIsNull+0xc4dc3b
[0x6] bf6!ffxFsr2ResourceIsNull+0xc4bf0b
[0x7] bf6!ffxFsr2ResourceIsNull+0xc4dc81
[0x8] bf6!ffxFsr2ResourceIsNull+0x274d0ad
[0x9] bf6!isGlimpseEnabled+0xb976
[0xa] bf6!ffxFsr2ContextGenerateReactiveMask+0xa03f02
[0xb] kernel32!BaseThreadInitThunk+0x17
[0xc] ntdll!RtlUserThreadStart+0x2c
I highly doubt that "ffxFsr2ResourceIsNull" is a crazy large function that is called recursively.
I also experimented with the settings in the "user.cfg" file (needs to be created in the same directory as "bf6.exe"), with some success at mitigating the problem at the cost of performance and audio issues.
DISCLAIMER: again I have no clue what this does and there is no official documentation, use at your own risk.
The following seemed to suppress the issue on my machine:
Thread.ProcessorCount 6
Thread.MaxProcessorCount 6
Thread.MinFreeProcessorCount 0
Thread.JobThreadPriority 0
GstRender.Thread.MaxProcessorCount 12
Most sources claim to set "Thread.ProcessorCount" and "Thread.MaxProcessorCount" to your number of physical CPU cores and "GstRender.Thread.MaxProcessorCount" to the number of logical ones.
I also played around with "Thread.MinFreeProcessorCount" which seemed to have some effect, though I did not find anything conclusive on what it actually controls. Seemed to kill my game audio when set to the wrong value though.
With above settings the performance dropped considerably on my machine and frame times were a lot more spikey, but in my short test session I was unable to reproduce the crash.