Is there any reason I should not set r.GPUCrashOnOutOfMemory to 1 ?
My intentions are so that GPU OOM crashes would be handled by SEH, thereby trickling down to ReportCrash() inside SEH which is where we have the CrashReporter setup to send off to our crash-management solution.
As far as I can see, with the cvar set to 0, it would just call RequestExit, thereby skipping SEH and ReportCrash.
That code needs to be cleaned up to do the same thing on both RHIs, I’ve made an internal ticket for it. It’s safe to set r.GPUCrashOnOutOfMemory to 1 for DX11 to get crash reports via SEH. It won’t make any difference for DX12 because, as you’ve found, we do a fatal log before checking the cvar, so we never reach the next line when we check the cvar value.
However, please be aware that getting E_OUTOFMEMORY from a D3D API call is more likely to be caused by running out of system memory than VRAM. Since allocations are backed by the page file, most reports we’ve seen actually crash because the page file is full due to background processes taking up all of it (and in many of these cases, the page file size is configured incorrectly). The error message displayed to the user can be misleading since it mentions video memory, but there’s no good way to tell which kind of memory has been exhausted.