This MR fixes seek in VRChat by copying the sequence of flushes/stop/starts that Windows does.
The order on Windows is:
1. Stop sources;
2. Flush MFTs;
3. Start sources;
4. Request output down the chain of sink inputs;
6. Flush sinks; and
7. Start the clock
This takes place whether we pause before we seek or seek without pause.
Changes in version 2:
1. Add test to see when SAR requests new samples;
2. Add test to examine when step 4 from above takes place;
3. Adjust the seek implementation in `mf/session.c` to match findings from the new tests;
4. Adjust `mfmediaengine` to reflect findings from the new tests;
5. Refactored `if` statement in `session_start` to be a `switch` again
--
v6: mfmediaengine: Request sample if we are seeking.
mfmediaengine: Don't perform implicit flush on state change.
mf: Don't send MFT_MESSAGE_NOTIFY_START_OF_STREAM when seeking.
mf: Restart transforms and sinks on seek.
mf/tests: Test sequence of calls during a Pause and Seek.
mf/tests: Test when SAR requests a new sample.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7932
Finally allowing win32u to manage client surfaces for GL/VK directly.
--
v2: win32u: Replace opengl drawables tracking with client surfaces.
winex11: Create client surfaces for opengl drawables.
winex11: Move client surface code out of vulkan ifdef.
winewayland: Merge the vulkan client surface with wayland_client_surface.
winewayland: Clear the current client surface on vulkan detach.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8522
This format is used for video output with a depth of 10 bits per channel. Decoding at 10-bit quality is not currently supported, but this patch makes video playable.
--
v2: mfmediaengine: Support video output in format R10G10B10A2.
mfmediaengine/tests: Test format R10G10B10A2 in TransferVideoFrame().
https://gitlab.winehq.org/wine/wine/-/merge_requests/8531