Yes, we're aware that we don't support the feature, no need to post thousands of lines of LLM vomit.
Might do it at some point, but it's not a high priority. There's no direct Vulkan equivalent and the only real way to do this is to add yet another internal copy of the back buffer, which is obviously a big no-go for actual games.
ge-proton11-5x1 2026-08DXVK_LOG_LEVEL=info`x1 2026-08WINEDEBUG=+dxgi`x1 2026-08
DxgiSwapChain::PresentBasediscards theDXGI_PRESENT_PARAMETERSargument:Present1forwards the struct toPresentBase, which passesnullptronward;DirtyRectsCount,pDirtyRects,pScrollRectandpScrollOffsetare neverread.
For most applications that only costs an optimisation. For an application that
presents incrementally on a flip-model swap chain it produces permanent,
highly visible corruption, with no error returned. Per Microsoft's flip-model
presentation documentation the scroll rectangle is "the area of the previous
frame that the operating system needs to copy to the current frame before it
renders the current frame" — that copy is the runtime's job, and it never
happens.
The result is that as the flip chain rotates, each back buffer only ever
receives the damage that was drawn while it was the current buffer. The buffers
diverge permanently and the display alternates between two partially-updated
frames indefinitely.
Software information
VirtualDJ 2026, build 9583 — https://download.virtualdj.com/b9583/89CED1AB/install_virtualdj_2026_b9583_pc.msi. Free to download and
run without a licence, so this is reproducible without a purchase. Default
settings; no mods or add-ons.
The relevant application setting is Settings → Performance →
experimentalSkinEngine(defaultauto). That engine is what presentsincrementally. Setting it to
nomakes every symptom disappear, which is thecurrent workaround.
System information
8086:7d55ge-proton11-5, via Bottles 66.7), win10 mode, X11Steps to reproduce
makes the artefact far easier to see.
experimentalSkinEngineat its default.the cursor still.
flicker, and tooltips/hint balloons blink on and off continuously.
What the application does
From a
WINEDEBUG=+dxgitrace of the same session (see note below):Present1callspresent_parametersPresentcallsGetBuffercallsbuffer_idx != 0CreateSwapChainForHwndEvery present carries present parameters — there is no full-frame fallback path.
GetBufferis only ever called for index 0, and the swap chain carriesDXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT(0x40); both are theflip-model idiom where DXGI rotates the physical buffers behind index 0.
This is not avoidable by switching off DXVK
The same corruption occurs with DXVK disabled, because Wine's own
d3d11_swapchain_Present1has the identical gap (FIXME("Ignored present parameters %p.\n", ...)). Filed there ashttps://bugs.winehq.org/show_bug.cgi?id=60207. Reporting here separately
because the DXVK path is what most users of this application actually run.
Expected behaviour
Honour
DXGI_PRESENT_PARAMETERS— at minimumpScrollRect/pScrollOffset,which the runtime is documented to copy from the previously presented buffer
before the application renders the current frame.
A conservative alternative that would also fix the corruption: when
pPresentParametersis non-NULL, ensure the incoming back buffer contains thepreviously presented frame before returning, so an application that redraws only
its damaged regions still produces a coherent frame.
Apitrace file(s)
I do not have one yet.
Log files
DXVK_LOG_LEVEL=infofrom theaffected session. Shows the three swap chains (5120x2816, 834x750, 667x250),
all
VK_PRESENT_MODE_FIFO_KHRwithImage count: 4.WINEDEBUG=+dxgifrom a DXVK-disabled run, source of the callcounts above.