Desktop flicker while using flip mode in MHW

I was reading this post by Kaldaien regarding MHW.

Set the SwapChain to 6 buffers, max device latency to 7 and enable flip model in the D3D11 settings.

When I do this and alt-tab out of the game, my Desktop is flickering all the time.

The game is running in borderless fullscreen.
The Special K frame rate limiter is set to 60fps.
My Windows refresh rate is 120hz.

The issue only occurs with flip model enabled.

What am I doing wrong?

edit: I’m using SK_0_11_0_45_and_SKIF_0_6_9_3

Are you using HDR in Windows? I’ve experienced weird flickering at times when the desktop is set to HDR and I force flip model in games otherwise running in SDR.

No HDR in Windows or in game.
I do have a TV that supports HDR (it is connected but not on), also the windows “Use HDR” toggle is set to Off.

Hmm… hard to say what the issue is then. I recommend removing the Special K config file for the game, ensuring the game is set to use DirectX 11 and borderless mode in the game’s own settings, and first after that re-apply the flip model override through Special K.

AMD or NVIDIA GPU?

AMD resolved a task switch flicker problem in the 20.8.1 drivers released a few days ago in combination with VRR or FreeSync. If your display supports, Free, G or VRR type sync / adaptive sync you could also try toggling off OS Windows 10 VRR or the display driver sync mode though if possible you would want to keep that one enabled to actually benefit from adaptive syncs advantages. :slight_smile:

EDIT: Although would it happen because the flip model change or is it from something else if this is a OS or driver issue.

D3D12 is also a possibility but I am not sure how well the DXGI overrides in the current 0.11.0.45 version of SpecialK apply here and it requires a couple of other changes as I remember to avoid start-up issues plus drawbacks such as not being able to utilize the SpecialK OSD as ImGUI’s support for D3D12 I don’t believe is hooked up yet along with other DirectX 12 specifics to get Monster Hunter World running with SpecialK even under this API.

I’m using DX11, borderless mode and Nvidia.

I removed the config and started again.

Just enabling Flip mode (and restarting) with default settings works just fine.

When I then increase BackBuffer Count and Maximum Device Latency as written by Kaldaien the flickering begins when I alt tab.
mhw2

edit: when I tab back into the game the flickering stops, when I tab out again it flickers again (etc).
edit2: I don’t have a VRR/Freesync/Gsync monitor. Is that the issue?

Try a lower number of backbuffers and maximum device latency instead – whatever is the highest value your system supports without causing the issue.

The maximum BackBuffer count seems to be 2 for me, so I put the latency to 3.
Thanks for your help.

2 will cause performance issues, set it to at least 3 or 4.

3 is the regular D3D default anyway isn’t it, sounds a bit odd that it needs to be lowered.
Hmm NVIDIA and AMD also has frame pacing and frame rate capping functionality but I believe that affects the pre-rendered frame behavior not the back buffer count although I have no technical knowledge on how this handles D3D12 or Vulkan or flip model presentation over how is it called again immediate when VSync is off and BitBlit or something along those lines.

Then there’s flip and flip with discard although from how I remember it flip without discard isn’t something SpecialK implements so flip model presentation is when discard specifically is enabled.
(And then the back buffer count with latency at one higher.)

Unless some later update did something the game shouldn’t have any problems either but they do have a few new options as of these last couple of patches.

Haven’t been active in Iceborne and the latest updates much at all so I’m a bit behind the PC tech and features besides knowing the game is now synced with the console version feature wise.

EDIT:

Yeah there’s a few additional options going by the preset config file there.
Snow quality as part of Iceborne already and then D3D12 getting supported.

But also NVIDIA DLSS, AMD FidelityFX / CAS (Contrast Adaptive Sharpening.) plus some tweaking and adding to shadow and ambient occlusion quality although these shouldn’t be a issue.

You are confusing backbuffer count and pre-rendered frames, I think.

There’s no default for the backbuffer count, it has to be specific when creating a swapchain. Flip Model requires 2 backbuffers, normal windowed mode requires 1.

With flip model, especially in D3D12 games, having 3 or more backbuffers enables dropping late frames.

Could be, I know AMD and NVIDIA are doing some stuff here as a way to affect latency but both vendors go about it differently and at least in AMD’s case their Radeon Anti Lag option comes after the D3D11 change in I think they’re using a value of “1” whereas for NVIDIA it’s handled by what’s it called again?

Ultra Low Latency and then it reads like a quality setting but it’s increasing levels of latency reduction forcing a lower value of pre-rendered frames then finally a full disabling (So “0”) combined with on the highest setting disabling some option alongside the setting for multi-threaded optimization.
(Which you’d normally want enabled/automatic so per-profile managed and not disabled.)

Could have sworn back buffer default was ‘3’ though but it may just be recommended or it’s managed from how I remember VSync with regards to double and triple buffering specifically where you well you get another buffer. :slight_smile:

Triple-buffered vsync requires three buffers as far as I know, yes, but that type of vsync weren’t really “present” at all in newer DirectX unless games manually implemented it or until Nvidia released their Fast Sync technology a few years ago (which basically just forced three buffers in fullscreen exclusive mode and always swaps from the last rendered buffer).

Edit: The actual “Triple buffering” option that Nvidia featured for years in their control panel only affected OpenGL titles – a misunderstanding that was present for years and probably still are.

1 Like