Tech

new architecture for 64-bit and better Vulkan support

Practically a year later, we already have among us Wine 7.0, the new major version of the compatibility layer that consists of a reimplementation of the Windows APIs for Unix and Unix-like systems, which opens the door to being able to run applications compiled for Windows on Linux, macOS, FreeBSD, etc.

Wine is a fairly veteran project that has been losing prominence over the course of the past decade due to the proliferation of multiplatform applications, a situation that has caused an increase in the number of applications with an official version for Linux. However, the appearance of Proton put the spotlight back on Wine, which can be considered one of the most valuable works of (reverse) engineering in free software.

Wine 7.0 comes with quite a few new features, although some of them may sound like more of the same looking at their history. To begin with, the 64bit Windows-on-Windows (WoW64) architecture has been implemented, supporting the execution of 32-bit Windows applications on 64-bit Unix systems.

Now all modules are compiled in PE format with few exceptions. The developers hope to convert the remaining modules in future Wine releases, which when done will allow WoW64 to run 32-bit Windows applications on 64-bit Unix without the need to install the 32-bit Unix libraries.

The included DLLs are only loaded if there is a corresponding PE file on disk, either a real binary or a fake PE module. This ensures that the application always sees a valid PE file assignment.

As for themes, the “Claro” (Light) has been incorporated, which joins the Azul (Blue) and Azul Clásico (Classic Blue) and can be exchanged through WineCfg. As of Wine 7 all common controls support themes, being refreshed automatically. Included apps support HiDPI and also the themes (although the automatic refresh has not been clarified).

Wine developers have implemented a new Win32u library in the kernel part for graphics and window management. Consequently, large portions of the GDI32 and USER32 libraries have been ported to Win32u. The Vulkan driver supports up to version 1.2.201 of the graphics API and initial support for Direct2D effects has been introduced and WindowsCodecs now supports Windows Media Photo decoding and DirectDraw Surface rendering.

About Direct3D, the Vulkan renderer continues to evolve and it should work in most cases and with Direct3D versions 10 and 11 on par with the old OpenGL renderer, despite not being enabled by default yet.

Wine 7 on Fedora 35 Workstation

Wine 7 on Fedora 35 Workstation

Another novelty related to Direct3D is the support for multiple monitors, which in practice allows you to choose the monitor in which an application that uses said API is projected in full screen mode, although it is important to bear in mind that on X11 you must have xrandr 1.4 or later. On the other hand, Direct3D 12 support requires in Wine 7.0 version 1.2 or later of the VKD3D library.

Screen gamma adjustment has been implemented with the DXGI API, a component that is sometimes used by Direct3D 10 and 11 applications to adjust the “brightness” of the screen. On the other hand, the following graphics cards are now correctly detected when using Direct3D through Wine 7: AMD Radeon RX 5500M, AMD Radeon RX 6800/6800 XT/6900 XT, AMD Van Gogh, Intel UHD Graphics 630 and NVIDIA GT 1030.

For audio and video playback we find that DirectShow and Media Foundation of GStreamer have been unified into a single back end, thus facilitating the implementation of new decoding APIs. The synchronous and asynchronous Windows Media object reader has been implemented based on the back end WineGStreamer and the QuickTime decoding library have been removed, making GStreamer a requirement even on macOS.

The Human Interface Device (HID) is now more complete and the backends of the ‘winebus.sys’ driver have been enhanced for device-related HID reporting. The new back end DirectInput joystick control takes advantage of new HID capabilities and the joystick control panel has been improved.

Mono’s engine has been updated to version 7 with a number of notable changes (notably greater use of .NET Core), Unicode 14 support for internationalization and wrappers OpenCL supports up to version 1.2 of the API.

And so far the most interesting of Wine 7. The version of the compatibility layer that concerns us can be obtained officially for Android, Ubuntu, Debian, Fedora and macOS from the download section of the project, while the compilations for SUSE, Slackware, and FreeBSD are maintained by their respective communities.

Full details of this release are available for those who are interested in the official announcement and release notes.

Related Articles

Leave a Reply

Your email address will not be published.