I don't think this architecture is going to work. It probably isn't evident from games testing, but there is a synchronization problem here. We can't simply do vkQueuePresent() and then copy from the corresponding X11 drawable, because vkQueuePresent() won't guarantee that the bits have reached the X11 drawable yet.
For GLX this approach is fine, assuming we have GLX_OML_sync_control. In that case waiting for SBC is exactly what we need.
Vulkan doesn't have an equivalent extension. VK_KHR_present_wait isn't equivalent, because it signals the event on first pixel out, which is too soon.
This means we probably need to virtualize the whole swapchain, unfortunately, and either create a Vulkan swapchain on the relevant top-level window, or use DRI3 to interop between Vulkan and X11 without a swapchain. In this case vkQueuePresent() would of course not present directly.
We could also try to invent an extension that lets us do what GLX_OML_sync_control does, but I fear that Mesa and/or Khronos will push back on this, and basically tell us to fix it on our end, by virtualizing the swapchain...
There may be reasons we can't virtualize the swapchain that I'm not thinking of. I also have zero knowledge of Wayland and don't know how to fit that into anything.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6467#note_82685
Excluding winedump for now, since it has a lot of tricky sprintf calls to replace
--
v2: wrc: Replace sprintf with snprintf to avoid deprecation warnings on macOS.
wmc: Replace sprintf with snprintf to avoid deprecation warnings on macOS.
winebuild: Replace sprintf with snprintf to avoid deprecation warnings on macOS.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6524
Under the HKCU\Software\Wine\X11 Driver global or application-specific HKCU\Software\Wine\AppDefaults\app.exe\X11 Driver registry keys.
This option can be used to restore the old behavior with DPI awareness forced on every application, which some of them handled well enough even if not DPI aware otherwise.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57175
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6521
To display and make changes to virtual desktop and monitors layout, which would be useful for virtual display settings or simply for the virtual desktop mode.
The applet could eventually be improved to show other display devices information, such as how devices are enumerated with other APIs, etc...
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6529
Currently shell32 only transfers the plain icon for `Shell_NotifyIcon` calls, ignoring balloon icons. This patch allows transferring both images to explorer.exe tray.
--
v15: shell32: Add support for balloon icon copying.
shell32: Introduce a new fill_icon_info helper.
shell32: Cleanup some local variable names.
shell32: Introduce a new get_bitmap_info helper.
shell32: Move icon related fields in notify_data into separate struct.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2875
Currently shell32 only transfers the plain icon for `Shell_NotifyIcon` calls, ignoring balloon icons. This patch allows transferring both images to explorer.exe tray.
--
v14: shell32: add support for balloon icon copying
https://gitlab.winehq.org/wine/wine/-/merge_requests/2875
--
v4: jscript: Return JS_E_OBJECT_NOT_COLLECTION when object has no DISPID_NEWENUM.
mshtml: Return MSHTML_E_INVALID_PROPERTY when trying to construct a legacy
mshtml/tests: Add more host object related tests for IE9+ modes.
jscript: Use deferred fill-in if available to fill the exception info.
jscript: Use proper dispatch flags to retrieve the enumerator.
mshtml: Implement retrieving the builtin method props for the legacy
mshtml: Move formatting of the builtin func disp string to a helper.
mshtml: Use designated initializers for function_dispex.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6515
--
v3: jscript: Return JS_E_OBJECT_NOT_COLLECTION when object has no DISPID_NEWENUM.
mshtml: Return MSHTML_E_INVALID_PROPERTY when trying to construct a legacy
mshtml/tests: Add more host object related tests for IE9+ modes.
jscript: Use deferred fill-in if available to fill the exception info.
jscript: Use proper dispatch flags to retrieve the enumerator.
mshtml: Implement retrieving the builtin method props for the legacy
mshtml: Move formatting of the builtin func disp string to a helper.
mshtml: Use designated initializers for function_dispex.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6515
--
v2: jscript: Return JS_E_OBJECT_NOT_COLLECTION when object has no DISPID_NEWENUM.
mshtml: Return MSHTML_E_INVALID_PROPERTY when trying to construct a legacy
mshtml/tests: Add more host object related tests for IE9+ modes.
jscript: Use deferred fill-in if available to fill the exception info.
jscript: Use proper dispatch flags to retrieve the enumerator.
mshtml: Implement retrieving the builtin method props for the legacy
mshtml: Move formatting of the builtin func disp string to a helper.
mshtml: Use designated initializers for function_dispex.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6515
On Wed Sep 18 15:02:39 2024 +0000, Philipp Knechtges wrote:
> Is this a showstopper? Maybe to elaborate: I guess a CDT for the
> "standard" faces would be the way to go, and could reuse much of the
> code for PathGeometries. However, the Bezier and Arc patch handling
> probably would be still special, and as said a lot of work. Hence,
> copying is in my opinion a good first approximation.
I think it is, because it will produce incorrect rendering. First priority is to have it working correctly, then we can deal with possible duplication.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6492#note_82549
On Fri Sep 13 19:59:21 2024 +0000, Philipp Knechtges wrote:
> In my opinion the correct way would probably be populating a joint CDT
> from all the geometries and then erasing triangles depending on the
> fill_mode. However, this is a bigger undertaking and for the
> [bug](https://bugs.winehq.org/show_bug.cgi?id=51139) at hand it suffices
> to just concatenate all lists, since it seems the application uses the
> geometry groups for assembling glyphs to words and render them all at
> once. Due to the latter, there is no intersection between the different
> geometric entities.
Is this a showstopper? Maybe to elaborate: I guess a CDT for the "standard" faces would be the way to go, and could reuse much of the code for PathGeometries. However, the Bezier and Arc patch handling probably would be still special, and as said a lot of work. Hence, copying is in my opinion a good first approximation.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6492#note_82547
With this the FFmpeg based demuxers should work, although there's still various things to fix related to MF pipelines elsewhere.
--
v2: mfsrcsnk: Read samples from the media source demuxer.
winedmo: Read sample flags, timestamps and duration.
winedmo: Export a new winedmo_demuxer_read function.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6517
In preparation for per-monitor DPI awareness and display settings virtualization.
--
v2: win32u: Remove now unused NtUserIsWindowRectFullScreen call.
winex11: Use the new fullscreen flag instead of NtUserIsWindowRectFullScreen.
winewayland: Use the new fullscreen flag instead of NtUserIsWindowRectFullScreen.
win32u: Pass whether a window is fullscreen to drivers WindowPosChanged.
win32u: Use get_window_rect directly in clip_fullscreen_window.
win32u: Use is_window_rect_fullscreen directly in clip_fullscreen_window.
win32u: Use get_virtual_screen_rect directly within the module.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6519
Some tests reuse the same MP4 stream and are currently passing only because we have the generic byte stream handler fallback. They pass on Windows too, so I'm assuming the stream is seeked before looking for the hints. We could also very well remove the position restore because the media sources are rewinding the stream later too, but I've kept it like it was.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6373
--
v5: winewayland: Attach client client surfaces to their toplevel surface.
winewayland: Pass the client surface rect to wayland_surface_reconfigure_client.
winewayland: Split wayland_win_data_update_wayland_surface helper.
winewayland: Update the client separately from the window surface updates.
winewayland: Keep the toplevel hwnd on the wayland_client_surface.
winewayland: Call ensure_window_surface_contents with the toplevel window.
winewayland: Use window DPI for the OpenGL client surface size.
win32u: Notify drivers of the child surfaces state when their ancestor moves.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6323
Currently shell32 only transfers the plain icon for `Shell_NotifyIcon` calls, ignoring balloon icons. This patch allows transferring both images to explorer.exe tray.
--
v13: shell32: add support for balloon icon copying
shell32: move icon related fields in notify_data into separate struct
https://gitlab.winehq.org/wine/wine/-/merge_requests/2875
Currently shell32 only transfers the plain icon for `Shell_NotifyIcon` calls, ignoring balloon icons. This patch allows transferring both images to explorer.exe tray.
--
v12: shell32: add support for balloon icon copying
shell32: move icon related fields in notify_data into separate struct
https://gitlab.winehq.org/wine/wine/-/merge_requests/2875
Currently shell32 only transfers the plain icon for `Shell_NotifyIcon` calls, ignoring balloon icons. This patch allows transferring both images to explorer.exe tray.
--
v11: shell32: add support for balloon icon copying
shell32: move icon related fields in notify_data into separate struct
https://gitlab.winehq.org/wine/wine/-/merge_requests/2875
File emfdc.c, function get_bitmap_info:
Memory leaks in get_bitmap_info via return before calling DeleteDC and DeleteObject.
--
v17: gdi32: Actually return the device context and bitmap from get_bitmap_info().
https://gitlab.winehq.org/wine/wine/-/merge_requests/6453
This is the initial set of patches for handling new pixel format types. I've pushed a branch [here](https://gitlab.winehq.org/cmcadams/wine/-/commits/WIP/d3dx-shared-sou… containing the rest of my current patches if additional context would be useful, the new format handling patches end with `ed7022a0838b346f4fa2b229ce7e8e6b8ebc2244`.
--
v4: d3dx9: Use format_from_d3dx_color() instead of fill_texture().
d3dx9: Add support for D3DFMT_V8U8.
d3dx9: Add support for D3DFMT_Q8W8V8U8.
d3dx9: Store pixel value range alongside pixel values when reading pixels.
d3dx9: Clamp source components to unorm range.
d3dx9/tests: Add format conversion tests for premultiplied alpha DXTn formats.
d3dx9/tests: Add more d3d format conversion tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6360
This is the initial set of patches for handling new pixel format types. I've pushed a branch [here](https://gitlab.winehq.org/cmcadams/wine/-/commits/WIP/d3dx-shared-sou… containing the rest of my current patches if additional context would be useful, the new format handling patches end with `ed7022a0838b346f4fa2b229ce7e8e6b8ebc2244`.
--
v3: d3dx9: Use format_from_d3dx_color() instead of fill_texture().
d3dx9: Add support for D3DFMT_V8U8.
d3dx9: Add support for D3DFMT_Q8W8V8U8.
d3dx9: Store pixel value range alongside pixel values when reading pixels.
d3dx9: Clamp source components to unorm range.
d3dx9/tests: Add format conversion tests for premultiplied alpha DXTn formats.
d3dx9/tests: Add more d3d format conversion tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6360
IIUC atexit isn't exported by ucrtbase, but still exists (maybe as a builtin) and is resolved to a module-local symbol which can be used to register functions executed on module process detach. It is called implicitly by C++ compilers to register static destructors.
--
v5: include: Define __cpuid(ex) as intrinsics when possible.
include: Don't import atexit from CRTs.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5915
Clang in MSVC mode supports this and __uuidof fails / complains about missing virtual destructor otherwise.
--
v2: include: Add DECLSPEC_UUID/DECLSPEC_NOVTABLE to MIDL_INTERFACE.
include: Use winnt.h DECLSPEC_NOVTABLE definition in rpcndr.h.
include: Use winnt.h DECLSPEC_UUID definition in rpcndr.h.
include: Introduce a new __has_declspec_attribute macro.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6502
Currently shell32 only transfers the plain icon for `Shell_NotifyIcon` calls, ignoring balloon icons. This patch allows transferring both images to explorer.exe tray.
--
v10: shell32: add support for balloon icon copying
shell32: move icon related fields in notify_data into separate struct
https://gitlab.winehq.org/wine/wine/-/merge_requests/2875
This MR adds a unixlib component to wlanapi containing DBus + NetworkManager implementations for
* WlanEnumInterfaces
* WlanGetAvailableNetworkList
* WlanGetAvailableNetworkList
* WlanGetNetworkBssList
* WlanScan
--
v4: wlanapi/tests: Add unit tests for WlanScan.
wlanapi: Add NetworkManager backed implementation for WlanScan.
wlanapi/tests: Add unit test for test_WlanGetNetworkBssList.
wlanapi: Add NetworkManager backed implementation for WlanGetNetworkBssList.
wlanapi/tests: Add unit test for WlanGetAvailableNetworkList.
wlanapi: Add NetworkManager backed implementation for WlanGetAvailableNetworkList.
wlanapi: Add NetworkManager backed implementation for WlanEnumInterfaces.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6505
This MR adds a unixlib component to wlanapi containing DBus + NetworkManager implementations for
* WlanEnumInterfaces
* WlanGetAvailableNetworkList
* WlanGetAvailableNetworkList
* WlanGetNetworkBssList
* WlanScan
--
v2: wlanapi/tests: Add unit tests for WlanScan.
wlanapi: Add NetworkManager backed implementation for WlanScan.
wlanapi/tests: Add unit test for test_WlanGetNetworkBssList.
wlanapi: Add NetworkManager backed implementation for WlanGetNetworkBssList.
wlanapi/tests: Add unit test for WlanGetAvailableNetworkList.
wlanapi: Add NetworkManager backed implementation for WlanGetAvailableNetworkList.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6505
Currently shell32 only transfers the plain icon for `Shell_NotifyIcon` calls, ignoring balloon icons. This patch allows transferring both images to explorer.exe tray.
--
v9: shell32: add support for balloon icon copying
shell32: refactor notify_icon to allow copying multiple icons
https://gitlab.winehq.org/wine/wine/-/merge_requests/2875
This makes it possible to position client windows relative to their toplevel with the driver window rects only, without having to call into win32u to map window points. Updating the child window states whenever a window is moved will also let us to update the driver client-toplevel surface association in WindowPosChanged, for cases where the ancestor of a client surface is reparented.
--
v2: win32u: Pass all drivers window rects relative to the virtual screen.
winex11: Handle ConfigureNotify for embedded window separately.
win32u: Update children with a surface when the parent window moves.
win32u: Lock the window when removing a vulkan surface from its list.
win32u: Make sure vulkan windows have a pixel format selected.
win32u: Pass window DPI rects in to MoveWindowBits.
winemac: Remove MoveWindowBits driver entry.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6498
This is the initial set of patches for handling new pixel format types. I've pushed a branch [here](https://gitlab.winehq.org/cmcadams/wine/-/commits/WIP/d3dx-shared-sou… containing the rest of my current patches if additional context would be useful, the new format handling patches end with `ed7022a0838b346f4fa2b229ce7e8e6b8ebc2244`.
--
v2: d3dx9: Use format_from_d3dx_color() instead of fill_texture().
d3dx9: Add support for D3DFMT_V8U8.
d3dx9: Add support for D3DFMT_Q8W8V8U8.
d3dx9: Store pixel value range alongside pixel values when reading pixels.
d3dx9: Clamp source components to unorm range.
d3dx9/tests: Add format conversion tests for premultiplied alpha DXTn formats.
d3dx9/tests: Add more d3d format conversion tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6360
IIUC atexit isn't exported by ucrtbase, but still exists (maybe as a builtin) and is resolved to a module-local symbol which can be used to register functions executed on module process detach. It is called implicitly by C++ compilers to register static destructors.
--
v4: include: Define __cpuid(ex) as intrinsics when _MSC_VER is defined.
include: Don't import atexit when building with ucrtbase.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5915
I don't think it's useful anymore. Since fba938fa965a6ffd39d1a5e229c7f75b093a1a59 we don't try to move the embedded windows anymore, so they are always positioned where the host wants them to be. Then winex11 only has to deal with toplevel windows everywhere, and it makes the code simpler.
--
v2: winex11: Get rid of the foreign parent window.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6473