Die Testphase für den ersten Kandidaten der Wine 9.0-Releases, der offenen Implementierung von WinAPI, hat begonnen. Der Code wurde in den Freeze-Zustand vor der Veröffentlichung versetzt, die für die zweite Hälfte Januar erwartet wird. Im Vergleich zur Veröffentlichung von Wine 8.21 wurden 52 Fehlerberichte geschlossen und 391 Änderungen vorgenommen.
Die wichtigsten Änderungen sind:
- Das integrierte Paket vkd3d mit der Implementierung von Direct3D 12, das über einen Anruftranslater in die Vulkan-Grafik-API funktioniert, wurde auf Version 1.10 aktualisiert.
- Die Entwicklung von Funktionen, die darauf abzielen, die Nutzung von Wine in Umgebungen auf Basis des Wayland-Protokolls ohne Verwendung von XWayland und X11-Komponenten zu ermöglichen, wurde fortgesetzt. Der Treiber winewayland.drv hat Unterstützung für Tastaturlayouts hinzugefügt. Die Unterstützung der Vulkan-Grafik-API wurde erweitert, und Funktionen wie vkQueuePresentKHR, vkGetDeviceGroupSurfacePresentModesKHR, vkGetPhysicalDevicePresentRectanglesKHR wurden hinzugefügt. Die Funktion ClipCursor wurde hinzugefügt, und die Möglichkeit zur Arbeit mit relativen Koordinaten bei der Mausbewegungsverfolgung wurde implementiert.
- Bei der Verwendung neuer Versionen von GnuTLS wurde Unterstützung für DH (Diffie-Hellman) Verschlüsselungsschlüssel hinzugefügt.
- Fehlerberichte zu Anwendungen wurden geschlossen: Notepad, MS Word, Roon, eFilm Workstation 2.x/3.x, Athena’s Charm Table Search 0.35b, Process Explorer, Araxis Merge 2023.5877, Framemaker 8, Internet Download Manager, Air Jura, SpeedCommander, ModOrganizer, RestoreDC, Acid-V VST-Plugin, MIDITrail 1.4.0.
- Fehlerberichte zu Spielen wurden geschlossen: For Honor, STEEP, Far Cry 5, NFS Most Wanted, Castlevania: Lords of Shadow 2, Eurobattle, Daily Chthonicle, Crimson Skies.
Zusätzlich kann die Veröffentlichung des Wine-Pakets vkd3d 1.10 erwähnt werden, das Direct3D 12 implementiert, das über eine Übersetzung von Aufrufen in die Vulkan-Grafik-API arbeitet. Das Paket enthält die Bibliotheken libvkd3d mit der Implementierung von Direct3D 12, libvkd3d-shader mit einem Übersetzer für Shader der Modelle 4 und 5 sowie libvkd3d-utils mit Funktionen zur Vereinfachung der Portierung von Direct3D 12-Anwendungen, sowie eine Reihe von Beispielen, darunter den Port von glxgears auf Direct3D 12. Der Code des Projekts wird unter der LGPLv2.1-Lizenz veröffentlicht.
Die libvkd3d-Bibliothek unterstützt einen Großteil der Funktionen von Direct3D 12, einschließlich Grafik- und Rechenmittel, Warteschlangen und Befehlslisten, Beschreibungen und Heap-Deskriptoren, Root-Signaturen, ungeordneter Zugriff, Sampler, Befehls-Signaturen, Root-Konstanten, indirektes Rendering, Clear*()- und Copy*()-Methoden. In libvkd3d-shader wird die Übersetzung von Shader-Modellen 4 und 5 Bytecode in das Zwischenformat SPIR-V realisiert. Es werden Vertex-, Pixel-, Tessellations-, Compute- und einfache geometrische Shader unterstützt, sowie die Serialisierung und Deserialisierung von Root-Signaturen. Aus den Shader-Anweisungen sind arithmetische, atomare und bitweise Operationen, Vergleichsoperatoren und Datenflusssteuerungsanweisungen, Sample-, Gather- und Load-Anweisungen sowie Operationen für ungeordneten Zugriff (UAV, Unordered Access View) implementiert.
In der neuen Version wurde die Arbeit an der Verbesserung des HLSL (High-Level Shader Language) Shader-Compilers, der seit DirectX 9.0 verfügbar ist, fortgesetzt: Unterstützung für dynamische Indizierung von Arrays hinzugefügt; die Ausdrücke "break", "continue" und "switch" wurden hinzugefügt; die Ausdrücke, für die eine Konstantenfaltung anwendbar ist, wurden erweitert; eingebaute Funktionen wie ceil(), degrees(), radians(), fwidth(), tan(), tex2Dlod(), tex2Dproj(), texCUBEproj() und tex3Dproj() wurden implementiert.
In die libvkd3d-Bibliothek wurden neue Direct3D 12 Schnittstellen (ID3D12Device5, ID3D12GraphicsCommandList5 und ID3D12Resource1) aufgenommen, und die Möglichkeit zur Erstellung von Pipeline-Statusobjekten wurde umgesetzt. In libvkd3d-utils wurden Hilfsfunktionen zur Manipulation von DXBC hinzugefügt: D3DGetBlobPart(), D3DGetDebugInfo(), D3DGetInputAndOutputSignatureBlob(), D3DGetInputSignatureBlob(), D3DGetOutputSignatureBlob() und D3DStripShader(). Im vkd3d-compiler wurden die Optionen "—fragment-coordinate-origin" und "—semantic-compat-map" hinzugefügt.
Quelle: opennet.ru
