Flashing again with Nvidia Card

Every single thing passes through the DWM now. There is no such thing as full screen exclusive now. Even if games still use the old flags for FSE mode, it just get interpreted by the DWM and still internally renders as if it were borderless fullscreen on single planes. There is no real input lag between the two modes now and only a very tiny bit of overhead for the DWM (like 50mb of ram and maybe an average of 0.5% CPU).

That’s because starting with a certain series of driver around then, Nvidia completely enabled multiplane overlays, as did Microsoft around then as well. There’s still some bugs between all the APIs and/or game rendering engines, that are causing these flickering issues.

If you’re deadset on staying on DX12, the only other suggestion I can make is to try disabling multiplane overlays and don’t use MSAA if it still continues to flicker for you:
https://nvidia.custhelp.com/app/answers/detail/a_id/5157
(make sure to reboot after disabling it, in order for the changes to take effect)

Edit: One annoying thing about dx11 mode in WoW though is that it’s “11 on 12” mode, but lacks the right flags to tell the drivers it’s in a Fullscreen mode, so it doesn’t properly engage gsync. I think 11 legacy still does though. But that happens with all games that use 11 on 12. Maybe Microsoft will fix it someday, but it causes a lot of headaches in development and bug testing.

Every single thing passes through the DWM now.

That is not true. DX12 uses a flip model that bypasses DWM. Here is the relevant documentation from Microsoft. https://docs.microsoft.com/en-us/windows/win32/direct3ddxgi/for-best-performance--use-dxgi-flip-model

Again, I do not use MSAA. I can provide an example clip of flickering showing CMAA is in use if you’d like. And yes I have heard about MPO. I have tried the disable and enable registry adjustments. Unfortunately they no longer effective due to driver level changes and Windows changes. It was possible but no longer is. I still get flickering with either registry state. That too was linked when this issue initially popped up a year ago.

I don’t use Gsync. I don’t have a compatible monitor.

It seems this is back to just being completely broken for users who are unfortunate enough to have it happen. I have tried everything I can. The flicker doesn’t go away with DX12 no matter what I do.

The swapchain part, yes. That just skips rendering desktop window content, but everything still goes through like usual on a single plane. DXGI flip still goes through the DWM( https://docs.microsoft.com/en-us/windows/win32/direct3ddxgi/dxgi-flip-model) it just doesn’t have any more “work” done on it while at that step. But there’s a ton of caveats to it all. Without turning this into a 20 page essay here’s some key parts to note:

  1. DirectFlip with multi-plane overlay (MPO): Your swapchain buffers are within some hardware-dependent scaling factor of your window dimensions. The DWM is able to reserve a dedicated hardware scanout plane for your application, which is then scanned out and potentially stretched to an alpha-blended sub-region of the screen.

Windows 10/11 current builds and the latest Nvidia drivers use MPO. So even if you set your program to use the flip mode, it’s still not going to benefit you at all because it’s all going to be ran through the MPO compositing systems.

Flip model swapchains have a few additional requirements on top of blt swapchains:

1. The buffer count must be at least 2.
2. After [Present] calls, the back buffer needs to explicitly be re-bound to the D3D11 immediate context before it can be used again.
3. After calling [SetFullscreenState], the application must call [ResizeBuffers] before Present.
4. MSAA (multisample anti-aliasing) swapchains are not directly supported in the flip model, so the application will need to do an MSAA resolve before issuing the Present.

I highlighted some important parts to note. This article is dated though and needs to be updated. Also, it’s completely leaving out the fullscreen optimizations for fullscreen borderless windowed mode, which is almost the exact same performance as FSE, minus a very tiny bit of overhead. Talking like 1% differences at best.

The last time I checked, it still worked, but that was a handful of months ago. You just have to periodically make sure it’s still disabled. I think new drivers or occasional windows updates will flag it back to enabled.

I have thought about using diagnostic capture softwares to dig into the shader code being ran, but I know it’s a grey area for potentially getting banned because they might ban me for “reverse engineering” even if I don’t use it to make anything or exploit anything.

My guess is that there’s something going wrong in the way Blizzard or DX12 is handling using the CPU to batch draw calls, that are then sent to the GPU to be rendered. Very very few games have this DX12 flickering issue. The object flickers seem like they are hitting some kind of null/NaN/zero state, that’s causing the GPU to render them black. Maybe it’s some kind of async issue where something isn’t finishing in time and the rendering thread says “I don’t care if you’re not finished, screw it, we’ll render without you anyways.”

OHHH and try this real quick: Hit Windows+P and set it to single monitor. See if that fixes the problem. If it is tied to MPO issues, this might help get to the bottom of the issues. A lot of people will have mismatched refresh rates on displays and it could be that the DWM is getting out of sync with stuff trying to line up frames for the displays.

I’m unable to see any difference. It was one of the first things I tried. Going all the way back to a 46x.xx driver where it is the worst, disabling MPO helps. Something has changed for it to not make a difference now with most recent handful of drivers. I just can’t accept using vulnerable drivers.

I only have one monitor. No room on the desk for two. Lol. But interesting point nonetheless.

In regards to your brevity with the API, I have a haunch this all has to do with DX12 “Ultimate”. Filtering through release notes, 451.48 introduced it. Windows installs 456.71 if you are connected to the internet and don’t have a driver. The problems really didn’t pick up until 460.xx. In fact, 446.14 actually nets performance improvements for wow, eliminates all issues, but degrades Forza.

Somewhere around 460-470ish drivers are when Nvidia flipped MPO on. Up until then, they weren’t really using the system. MPO has been around since Windows 8, but it didn’t get fully turned on until a certain build of Windows 10. A lot of the issues have been caused by MS changing one thing, then Nvidia trying to correct/refactor around some change, then MS changes around thing and now Nvidia has to catch up again. Now compound those issues with game engines playing cat and mouse and you’ll see why some issues like this persist, when everyone gets out of sync with each other.

The problem with downgrading drivers below that is that they are missing out on a lot of the optimizations for DX12. I remember doing a lot of in depth benchmarking around the time when it was an issue with WoW. Prior to the new flavor of drivers, you’d see a MASSIVE decrease in DX12 performance in WoW. Talking like a 30% drop in frame rate, maybe more, when there were a lot of particles on screen. Not to mention, it was a horrible stutterfest, due to the way DX12 handles on the fly shader compilation. The newer generation of drivers fixed most of that.

Judging by how few games are affected by this specific flicker bug (the one where individual assets flicker, not the whole screen), this bug definitely rests in Blizzard’s hands now. That’s the big catch 22 of DX12: You need better game engine coding because you need to manage a lot more things on your own.

yup, i made it for three with no issues after a tuesday server maintenance, but it’s back and has gotten worse after yesterdays sm, world latency in the 200’s, packet loss, worse than dial up

1 Like

The worse part is how completly random it is. Some days I can go literally hours without a issue, other days the game will stutter and I’ll get a Game not responding every other minute or so. I hope they fix this issue soon.

And before anyone chimes in with It’s you, there is no issue no other game does this but WoW. So blizz definitely did break something for some of us.

Anyone tried the new .59 drivers from today? No mention of a fix but then Blizz doesn’t seem to want to even acknowledge it’s back either

I had no issues with todays updated drivers. As for Blizzard not acknowledging, it is on Nvidia to fix their drivers, not anything Blizzard can do about it.

I just found out NVidia has 2 different drivers for most of its cards:

  • GeForce Game Ready driver
  • NVidia Studio driver

Both drivers have all the same capabilities with the difference being that The Game Ready is faster for games but the studio driver is more stable.

I had the flashing issue with the Game Ready driver and DX12. I installed the Studio driver and so far with DX12 I’ve had no flashing issues, but we’ll see…

That’s not actually the difference between them. The GRD sets just means they’ve got the profiles added for new release games which the studio drivers don’t. Underneath they’re still functionally identical, and any existing profiles (such as the WoW profile, which has been basically untouched since the early 400s) are still very much in place.

The “stability” of the studio drivers is simply due to holding back the newer profiles. As much as they shouldn’t interfere with anything (they’re based on executable name, and sometimes short paths) there’s always a chance they might.

Touching back with a tentative fix.

Managed to spot some fresh flickering (exclusive to alpha textures - specifically the portal flare and soul “well” in Oribos) so took the opportunity to experiment. Setting a specific graphics card, despite only having one option, caused all flickering to halt whether MSAA was in use or not.

I cannot say for certain this is a fix, however. Specifying a graphics card caused the graphics engine to restart, which in itself may have been enough to clean it up as I’d just come off the back of a three hour raid. So it’s possible that it is some kind of corruption which needs to be cleaned periodically, meaning “/gxrestart” may be sufficient to temporarily clear it as well.

Will report back after tomorrow’s raid and checking the same location without having changed anything.

It will come back. This was found the first time this happened last year. It just temporarily goes away due the gfx engine resetting.

That’s what I was figuring. But better to test to be sure as no-one else seems to have tried it (or has and hasn’t reported back). Just in case Blizzard put in some kind of vendor detection following MPO being added which isn’t triggered by “Auto”.

Can confirm no joy. The coloured markers for Blaspheme during Anduin were flickering, so it’s not really a good point to test anything.

Has anyone that was getting flashing in previous 500 series drivers with DirectX 12 enabled happened to try the new .95 drivers that came out recently? Wondering if they might have fixed the issue, but I don’t want to be the test subject. Still annoyed that months into the 500 series drivers Blizz still hasn’t responded to the multiple threads in here talking about the issue from last year returning.

What do you expect them to say about it? “We’re aware but we can’t do anything about it as it requires a driver-level fix from NVidia due to their insistence on not adhering to the DirectX standards as set by Microsoft.”?

Somehow I don’t see that going down well even with people who understand the situation.

3 Likes

So, cautiously optimistic, but after a couple days with varied activity from in world to raid, it seems Nvidia fixed the issue without listing it in the known issues or fixed issues. Just made the jump from the 497’s to the new 516.40 and not seeing the flashing now with DX12, MSAA 2x, and RT shadows on. I’ll update again if I see it come back. Also seems to have fixed a weird pixel lag issue my main monitor was having when set to max refresh.

randomly found this dunno if it helps my wife and I had a 2070 super and me a 2070, we had that problem all the time , different drivers, maa on off etc nothing seemed to fix the flickering for good, recently updated to 3080tis and no issue dunno if it helps or not just wanted to add it in. I think it started around 9.1 timeframe in ardenweld mostly with things like plants and waterfalls, and the bud 5 flowers quest , Minor annoyance so never bothered, got to zm and those HUGER bubbles Flickered like crazy, various setting changes made it go away briefly but never for good been running on the 3080s for about 2 months now no issues at all

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.