I'm not completely sure about the mechanism, but I think it's simple enough to consider having that upstream now. This shows at least how we can leverage win32u surface changes to decide to switch surfaces on/off-screen and fallback to manual blitting.
Having the surfaces on-screen makes sure they are presented as efficiently as possible, having them off-screen we use GDI blit to indirectly call XCopyArea and this will be suboptimal, probably with visible tearing, but hopefully not too common.
--
v4: win32u: Use GDI blit to implement partial or other process presentation.
winex11: Return an offscreen HDC from vulkan_surface_detach.
win32u: Pass a HDC parameter to vulkan_surface_detach.
winex11: Create a window surface even when there is client window.
winex11: Also attach child client windows to their toplevel window.
win32u: Make sure vulkan windows have a pixel format selected.
win32u: Detach vulkan surfaces that aren't fully visible.
win32u: Detach offscreen, child or vulkan surfaces for another process.
win32u: Move vulkan surfaces to their new parent when reparenting.
win32u: Introduce a new vulkan offscreen surfaces list.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5573
Using IMF2DBuffer2_Lock2DSize with LockFlags_Write dramatically improves
performance over IMFMediaBuffer_Lock when using a DXGI buffer.
IMFMediaBuffer_Lock does not know that this buffer will not be read and
therefore performs an unnecessary transfer of the texture from GPU to CPU
before it is overwritten.
--
v2: winegstreamer: Optimise copy to DXGI buffer.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5978
Signed-off-by: Joel Holdsworth <joel(a)airwebreathe.org.uk>
--
v2: ntdll: Add support for FILE_{RENAME,LINK}_POSIX_SEMANTICS.
ntdll: Factor out get_inode_open_sharing.
ntdll/test: Add tests for FILE_LINK_POSIX_SEMANTICS.
ntdll/test: Add tests for FILE_RENAME_POSIX_SEMANTICS.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4457
in tiling compositors, or those with decorations always on, having popups (like menu items or
on-hover tooltips) be set as toplevels causes them to become unusable. Instead, if a HWND is owned
by another window that has a wayland surface, create the surface as a xdg_popup of the owner.
since i couldn't find any info on this issue aside from https://bugs.winehq.org/show_bug.cgi?id=56278,
i decided to try and fix it.
those patches are a WIP, currently it manages fine running tools like notepad.exe and notepad++,
but gimp and winecfg still don't work. some tests, namely tooltip.c in comctl32 are failing,
although i can reproduce the failure on the master branch, will look into it.
Signed-off-by: Anna (navi) Figueiredo Gomes <navi(a)vlhl.dev>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5994