dxgi: Prepare partial presentation tests

This is the first part of my partial presentation support patchset. Only the tests and minor implementation changes.

Actual implementation will follow in multiple parts: minor refactoring of swapchain backbuffers, then actual implementation for dirty rectangles (with limitations), then limitations will be removed step-by-step, at the very end the scroll will be implemented.

I had to mark many new tests as "flaky" (not "todo"). They are not actually flaky, they are perfectly stable on both Windows 8 RTM and one of the latest Windows 11 Canary builds. But since they check multiple pixels and some of them match, this causes the "failures". I saw no better solution which didn't involve new APIs in wine/test.h. Their number will drop in the next MRs to 0.

The initial motivation of this patchset was to solve a particular rendering issue in Chromium (some parts are not redrawn properly since OOP-D aka Viz was enabled in Chromium 70). Unfortunately, this didn't actually help, but I could confirm this only after it was already mostly implemented. There is an issue on Wine Bugzilla with bad UI redrawing and the relevant message in the log, hopefully it will help other apps that Wine can already run (for obvious UWP reasons Wine can't run Windows Terminal that uses partial presentation actively), not just my test.

Edited by Andrew Boyarshin

Merge request reports

Loading