Track ticks since draw start per window_surface, instead of per DC as is
currently the case. This change helps reduce visual glitches caused by
badly timed flushes when drawing to the same window_surface from
multiple DCs, e.g., child windows (see first commit), or in some special
scenarios when the window_surface is updated (see second commit).
(Much) more information about this issue and the rationale for the changes
can be found in the commit messages.
Note that since this is an inherently timing related issue, the visual glitches
depend on the application specific draw patterns, drawing speed (and thus
processor performance and load) etc.
Here is a capture which exhibits the issue with the current implementation:
[resizing-regedit-per-dc-ticks.mkv](/uploads/d7d30d009cc4db1337cbc3266df5ae17/resizing-regedit-per-dc-ticks.mkv)
And here is a capture of the same scenario with the proposed changes applied, which shows the improvement:
[resizing-regedit-per-surface-ticks.mkv](/uploads/6f878568862f5fb5157567341e4e452f/resizing-regedit-per-surface-ticks.mkv)
--
v3: win32u: Reset draw_start_ticks for new window_surface.
gdi32: Track ticks since draw start per window_surface.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2226
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
--
v18: windows.media.speech: Implement Vosk create and release functions in the unixlib.
windows.media.speech/tests: Allow the SpeechRecognizer creation to fail in Wine.
windows.media.speech/tests: Get rid of duplicated hresult.
windows.media.speech: Add unixlib stub.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2091
This series fixes a couple of failures when running kernel32:debugger tests
on various platforms.
--
v2: kernel32/tests: Fix debugger.c:test_kill_on_exit().
dbghelp/tests: Fix failure on Win10 1607.
kernel32/tests: Don't let debugger tests fail on a 64bit only config.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2237
Also, renaming `compatible_data_types()` to `explicit_compatible_data_types()` since we also have `implicit_compatible_data_types()` and `expr_compatible_data_types()`.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/99
--
v2: vkd3d-shader/hlsl: Avoid warning for each variable when in/out modifiers are specified on non-parameters.
vkd3d-shader/hlsl: Remove a redundant warning for mutually exclusive majority modifiers.
vkd3d-shader/hlsl: Check for majority modifiers on non-matrices in apply_type_modifiers().
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/98
This patch originally was in !93 but I decided to separate it, since it solves a different bug that the first part of that series.
Currently, in copy-prop, we may create nodes of different dimensions than the ones we are replacing, i.e. the assertions included in this patch fail for many tests.
Without the patch, the following assertion in `hlsl_sm4.c` fails for me
```c
/* Narrowing casts were already lowered. */
assert(src_type->dimx == dst_type->dimx);
```
for some tests in one of my branches, because narrowing casts end up appearing if the node is replaced with a node with more components. This error happens under quite complex conditions (involving casts and matrices) that I still try to narrow down.
The cause of this problem is that, for the generated swizzles, we are passing `count` instead of `instr_component_count`.
`count` is the number of components of the source deref (without
considering the swizzle), while `instr_component_count` is the actual
number of components of the instruction to be replaced.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/96