• 11.19-r10 476b956f61

    facemyer released this 2026-10-16 14:02:58 -04:00 | -11 commits to main since this release

    Wine 11.19 with the Affinity patch set: r9 plus four fixes for WMI calls made from a .NET program's UI thread (0123-0126).

    Affinity's installer asks WMI for the processor architecture from its WPF window. Under Wine it got no answer, took that for an ARM64 machine, and warned that installing is "not recommended" ("A native installer exists for this CPU type"). With these fixes it reads the architecture and goes straight to the Install page.

    • 0123 combase: IContextCallback::ContextCallback() starts remoting for the apartment it calls into, not only the caller's. A call into an MTA that had not marshaled anything yet failed with RPC_S_SERVER_UNAVAILABLE. .NET uses it whenever a COM object is called from another context than the one it was created in.
    • 0124 combase: a security blanket set on a proxy is accepted, as on Windows, instead of E_NOTIMPL. .NET's System.Management sets one on every WMI proxy.
    • 0125 rpcrt4: a marshaled interface pointer takes up the size reserved for it, padded with zeros. Complex arrays and structures place their pointer data after the reserved sizes, so the fields after an array of interface pointers were read from the wrong place; IEnumWbemClassObject::Next() returned its count and result garbled.
    • 0126 wbemprox: proxies and stubs for the WMI interfaces (generated from wbemcli.idl, registered under the proxy CLSID Windows uses); class objects, contexts and qualifier sets aggregate the free-threaded marshaler.

    Existing prefixes register the new proxies on their next Wine update; new prefixes have them from the start.

    SHA-256 637a0ec5ed8f225dd96c30796f9227f6f5a68ccc8e394a549391be7a6e9a626e

    Downloads
  • 11.19-r9 15a44b4f1d

    facemyer released this 2026-10-16 11:50:40 -04:00 | -10 commits to main since this release

    Wine 11.19 with the Affinity patch set: r8 plus two wined3d fixes for the OpenGL renderer (renderer=gl, the installer's OpenGL option, or a prefix without a renderer setting). Nothing changes on the Vulkan renderer.

    • 0121 wined3d attaches a GL swapchain to its window on the first present, and renders through its hidden backup window until then. Setting a pixel format on the window attached a GL drawable to it (a client window on top of it under winex11) even if nothing was ever presented through it. WPF draws layered windows (popups, flyouts, tooltips) another way and never presents them, so the unused drawable covered them: Affinity's tool flyouts and tooltips were black boxes on OpenGL. The Vulkan renderer already creates its swapchain on first use (0054).
    • 0122 the re-present of a COPY swapchain's last frame, 5 ms and 50 ms after a present (0055), now covers GL swapchains too. A window that presents once, before Xwayland has mapped it, lost that frame and kept an empty white frame: Affinity's floating Help panel after a studio switch.

    Checked with Affinity 3.3 on OpenGL and Vulkan under KWin (Wayland, Xwayland): the shape flyout, tooltips, menus, the context menu, and the floating Help panel after studio switches; vkd3d-proton and OpenCL load as in r8.

    SHA-256 79c21583755a4b168394fc984332d1235e48768b9ce1c4ed60cd49e78da0eaa9

    Downloads
  • 11.19-r8 237622e0bd

    facemyer released this 2026-10-15 17:29:49 -04:00 | 2 commits to feature/wine-11.19-affinity-patches since this release

    Wine 11.19 with the Affinity patch set: r7 plus 0109-0120.

    • 0109 winex11 passes the modifier keys to the drop target. XDND carries none, so a Ctrl or Shift drop looked like a plain one; the keyboard state is read at every position and at the drop.
    • 0110 wineserver creates a user APC's sync object only when something waits on it. The .NET Framework thread pool queues about 27,000 APCs in a few seconds of dragging, each with an event and a file descriptor.
    • 0111-0113 d2d1 per-primitive overhead: state that is already bound is not set again, constants already in the ring are reused, and consecutive solid-brush primitives with the same state and constants are drawn together (WINE_D2D_NO_DRAW_BATCHING=1 turns that off). Dragging a selection about 7% more frames, node editing about 15%.
    • 0114 RtlWakeAddressSingle/All skip the queue lock when no thread waits on the address. With a large thread pool most wakes find nobody, and the locks spun 2 million times in two seconds of zooming with an effect.
    • 0115-0119 an embedded WebView2 (Affinity's Help panel) renders, docked or floating:
      • 0115 wined3d recreates a swapchain whose Vulkan surface was lost, and retries a failed creation.
      • 0116 wineserver keeps a window's painting off the windows of other processes inside it, also inside transparent windows.
      • 0117 the owner recomputes its surface clip when such a window changes.
      • 0118 winex11 copies client surfaces into windows of another process's toplevel, toplevels included.
      • 0119 wined3d presents the rects of a windowed discard swapchain as partial updates, as Windows does.
    • 0120 setupapi does not register native dlls from Wine's own inf sections. In a prefix with the .NET Framework, every prefix update re-registered its mscoree.dll, and the 32-bit shim showed "This application could not be started".

    Built from pristine wine-11.19 with patches/wine-11.19 at 237622e.

    SHA-256 ElementalWarrior-wine-11.19.tar.xz: 0f93d1b397d43ba034cb351c54d67b80e264cafff56f6f94449b41cac9881300

    Downloads
  • 11.19-r7 fe0d990639

    facemyer released this 2026-10-13 16:01:15 -04:00 | -6 commits to main since this release

    Wine 11.19 with the Affinity patch set: r6 plus 0086-widl and 0093-0108.

    • 0086-widl (another contributor's 11.19 patch, carried verbatim) widl emits TypeDefs and GenericParam rows for parameterized interfaces, so Affinity's sign-in metadata refers to types that exist.
    • 0093 wined3d's Vulkan fragment pipe gives the legacy fixed-function render states a no-op entry, ending 13 validate_state_table errors at each device creation. 0094 dxgi creates its device window without holding the wined3d mutex. Both from the 11.18 set.
    • 0095-0101 the 11.18 set's OpenCL bridge work: extension-string and memory-object-info caches, PE callbacks for program builds and memory object destructors, native kernels, and the missing OpenCL 2.x functions.
    • 0102 msvcrt and ucrtbase seek within the read buffer without I/O, as glibc does. A Scribus-exported PDF made Affinity's importer issue 33 million seeks and 4 KB refills during the PDF Options preview.
    • 0103 wined3d aims a full present queued before a fast resize at the current client area (from the 11.18 set).
    • 0104-0106 file drags from Wayland clients (Dolphin under KWin 6.7) onto the canvas: positions outside the target window are replaced by the last one inside it, a late XdndLeave for a window the drag has left is ignored, and the drop session uses DragEnter's effect, limits every result to the effects the source allows, and leaves its target when a new drag starts. That late DragLeave made WPF fail fast ("Unrecoverable system error"). 30 automated drops: 5 failed before, none after.
    • 0107 winex11 takes the X selection with the new window before destroying the old one. Affinity copies in seven rounds, and each left the clipboard without an owner for a moment; Klipper restored its previous entry, so pasting between documents did nothing until a second copy.
    • 0108 win32u's wait loop honors its timeout while the queue stays signaled for driver events it cannot process. WPF checks for pending input from inside drop target calls; Affinity's UI thread spun at full CPU there, and a file dropped on the toolbar opened only after a focus change.

    Built from pristine wine-11.19 with patches/wine-11.19 at fe0d990.

    SHA-256 ElementalWarrior-wine-11.19.tar.xz: 2e94d07e6a8e3436d5bcafbe8d8bec4a1b7f7ff6ef9e6a746f44f82409078963

    Downloads
  • 11.19-r6 70ebc09100

    facemyer released this 2026-10-12 11:25:24 -04:00 | -1 commits to main since this release

    Wine 11.19 with the Affinity patch set: r5 plus seven patches (0086-0092).

    • 0086 wineserver scales negative coordinates with signed arithmetic. A maximized window has a negative origin, and a process at a different DPI awareness got a rect like 22369618,22369618-1923,1083 for it whenever the DPI ratio was not whole.
    • 0087-0092 pen pressure through WinTab. Affinity's brushes respond to pressure in its default high-precision tablet mode. Wayland desktops are covered too, through Xwayland's tablet devices.
      • 0087 wintab32's internal window gets a thread of its own. Before, it lived on the first thread that called WinTab, and if that thread didn't pump messages, pen and mouse input stopped.
      • 0088 winex11 reads a device's button mapping without opening and closing it. XCloseDevice dropped the XInput selections, so pen events stopped once the pen came into proximity.
      • 0089 tablet events pass the pointer-input event filter instead of waiting in the queue.
      • 0090 each tablet axis is kept until an event carries it. evdev/libinput report only the axes that changed, and pressure was read as x (a stray first segment on every stroke).
      • 0091 tablet buttons are numbered from 0, so the tip is button 0.
      • 0092 the mouse buttons a pen generates carry its packet serial in dwExtraInfo, as Windows tablet drivers do. Affinity uses that to tell the pen from the mouse.

    Built from pristine wine-11.19 with patches/wine-11.19 at 70ebc09. Smoke-tested with a synthetic tablet: in an Affinity 3.3 document with OpenCL on, a light stroke drew 2 px and a heavy one 274 px. Not yet tried with a physical pen.

    SHA-256 ElementalWarrior-wine-11.19.tar.xz: ae7f2049656b1343982975a5383cf8146d29193c8005c53d48d76a8c179a4ec8

    Downloads
  • 11.19-r5 aac1555524

    facemyer released this 2026-10-08 18:34:36 -04:00 | 3 commits to main since this release

    Wine 11.19 with the Affinity patch set: r4 plus four patches (0082-0085).

    • 0082 win32u answers DISPLAYCONFIG_DEVICE_INFO_GET_SDR_WHITE_LEVEL (80 nits). Affinity's renderer asks while creating its Direct3D device and logged "Not implemented" (DXRenderer.cpp line 1014) once a session.
    • 0083 d3d11 CheckColorSpaceSupport / SetColorSpace1 semi-stubs, mirroring d3d12's, instead of E_NOTIMPL.
    • 0084 winspool maps PRINTER_ENUM_CONNECTIONS to the local CUPS printers: Affinity's print dialog asked for connections only and listed no printers.
    • 0085 twinapi.appcore implements SharedStorageAccessManager, which a running Affinity asks for when another instance hands it a file. Builds and loads; the warm-open case is not yet tested on 11.19.

    Built from pristine wine-11.19 with patches/wine-11.19 at aac1555 (0001 and 0004 report already applied, as documented). Smoke-tested: an Affinity 3.3 document opens with OpenCL on and no renderer error.

    SHA-256 ElementalWarrior-wine-11.19.tar.xz: b9729df1853b1c2b3158fbba996afb16f6dbc960f5b0e75a2f20fcbbbb7f2a4f

    Downloads
  • 11.19-r4 da482dfc62

    facemyer released this 2026-10-07 11:27:35 -04:00 | 4 commits to main since this release

    ElementalWarrior Wine 11.19 with the Affinity patch set (patches/wine-11.19, 0001-0081).

    New since 11.19-r3:

    • Direct2D builds a path stroke outline only when the path is stroked (0078) and draws lines without a path geometry (0079): brush lag with OpenCL on 39 -> 26 ms.
    • Fewer wined3d commands per Direct2D draw (0080): vector drag CPU per frame 3.9/7.1 -> 3.5/6.6 ms (wined3d/UI).
    • wined3d command thread spins less before sleeping (0081): its CPU per frame 17-22% lower, latency unchanged.
      d2d1, d3d11 and d3d9 visual conformance tests unchanged.

    Test build, not announced.

    sha256 e716ac858662f9dfa4f9a24b783c6d6521ddab31c1587be5b94b8b96ca156298

    Downloads
  • 11.19-r3 94384a7e7a

    facemyer released this 2026-10-06 17:36:58 -04:00 | 5 commits to main since this release

    ElementalWarrior Wine 11.19 with the Affinity patch set (patches/wine-11.19, 0001-0077).

    New since 11.19-r2:

    • Direct2D keeps its device context state bound across draws (0075) and writes per-draw constants to one reused buffer (0076): vector drag 7.5/11.4 -> 5.6/9.7 ms CPU per frame on the wined3d/UI threads. d2d1 conformance tests unchanged.
    • ntdll heap no longer rescans too-small free blocks on every allocation (0077), which froze Affinity opening a 100 MB SVG in a used session. Heap conformance tests unchanged.

    Test build, not announced.

    sha256 8e5c86953cbabce454af1b1f9a4ddc7bb31234d18d0a2e37ada70430c635665f

    Downloads
  • 11.19-r2 828501352e

    facemyer released this 2026-10-06 09:30:22 -04:00 | 17 commits to feature/wine-11.19-affinity-patches since this release

    ElementalWarrior Wine 11.19 with the Affinity patch set (patches/wine-11.19, 0001-0074).

    New since 11.19-r1: Direct2D uploads geometry through one reused buffer instead of creating two buffers per primitive (0074): about 17% less CPU per frame on the UI and wined3d threads while panning, brush lag 59 -> 51 ms. d2d1 conformance tests unchanged.

    Test build, not announced.

    sha256 535940f5345522d28925ec952023ec488a597b2797b0c8fa6500d14ad7c5e10b

    Downloads
  • 11.19-r1 8ba7871e9e

    facemyer released this 2026-10-05 17:27:18 -04:00 | 18 commits to feature/wine-11.19-affinity-patches since this release

    ElementalWarrior Wine 11.19 with the Affinity patch set (patches/wine-11.19, 0001-0073).

    New since 11.18: dialog modality and focus over disabled owners, no white flashes, brush lag halved and then some (buffer uploads, mailbox presentation, the canvas drawn in its toplevel), sub-tool panel pinning, no lock-file stream leftovers, the studio list staying open, tooltips closing on Alt-Tab. OpenCL works (0029).

    Test build, not announced.

    sha256 15f8f93133851d97e78fb87f268cc45bc420f4e1139c39b9abbba5b57fcb349f

    Downloads