Die experimentelle Version der offenen Win32 API-Implementierung — Wine 11.10 wurde veröffentlicht. Seit der Veröffentlichung von 11.9 wurden 17 Fehlerberichte geschlossen und 248 Änderungen vorgenommen.
Die wichtigsten Änderungen sind:
- Das integrierte Vkd3d-Paket mit der Implementierung von Direct3D 12 wurde auf Version 2.0 aktualisiert.
- Es wurde eine überarbeitete Unterstützung für die XPath-Sprache vorgeschlagen, die ohne die Bibliothek libxml2 implementiert wurde.
- Die Kompatibilität mit VBScript wurde verbessert.
- Im ntdll wurden Platzhalter für die ALPC (Advanced Local Procedure Call)-API hinzugefügt: NtAlpcCreatePort(), NtAlpcConnectPort(), NtAlpcAcceptConnectPort(), NtAlpcSendWaitReceivePort(), NtAlpcDisconnectPort() und NtAlpcImpersonateClientOfPort().
- Die Unterstützung für Bluetooth wurde verbessert, es wurden Methoden hinzugefügt: BluetoothLEDeviceStatics::FromBluetoothAddressAsync, IBluetoothLEDevice::get_DeviceId, IBluetoothLEDevice::get_GattServices, IGattDeviceService::get_Uuid und IGattDeviceService::get_AttributeHandle.
- In den Implementierungen d3dx10 und d3dx11 wurde die Möglichkeit hinzugefügt, DDS-Dateien mit Textur-Arrays zu laden. Die Funktion D3DX10LoadTextureFromTexture() unterstützt jetzt 3D-Texturen, Texturen mit LOD-Unterstützung und die Generierung von MIP-Levels (MipMap).
- In der DLL win32u wurden die Funktionen NtUserGetMessagePos() und NtUserSetMessageExtraInfo() implementiert.
- Fehlerberichte im Zusammenhang mit folgenden Anwendungen wurden geschlossen: IrfanView, Kodak EasyShare, Git for Windows, Family Tree Maker 2017, Foxit PhantomPDF Business 10.0, Vocaloid 6, Photolemur 3,
TrackChecker. - Die Fehlerberichte im Zusammenhang mit den Spielen wurden geschlossen: Star Wars Racer, Star Wars: Knights of the Old Republic, Age of Empires III: Die Asiatischen Dynastien.
Das Wine-Projekt hat außerdem ein Update für das vkd3d-Paket 2.0 veröffentlicht, das die Direct3D 12-Implementierung über die Übersetzung von Aufrufen in die Vulkan-Grafik-API ermöglicht. Das Paket enthält die libvkd3d-Bibliotheken mit der Direct3D 12-Implementierung, libvkd3d-shader mit einem Shader-Modell-Converter und libvkd3d-utils mit Funktionen zur Erleichterung der Portierung von Direct3D 12-Anwendungen sowie eine Sammlung von Demobeispielen, einschließlich des Ports von glxgears auf Direct3D 12. Der Code des Projekts wird unter der LGPLv2.1-Lizenz veröffentlicht.
Die libvkd3d-Bibliothek unterstützt die meisten Funktionen von Direct3D 12, einschließlich Grafik- und Compute-Tools, Queues und Command Lists, Deskriptoren und Heap-Deskriptoren, Root-Signaturen, unordentlichen Zugriff, Sampler, Kommando-Signaturen, Root-Konstanten, indirektes Rendering, die Clear*()- und Copy*()-Methoden. In libvkd3d-shader wird die Übersetzung von Shader-Modell-Bitcode in das Intermediate Representation SPIR-V implementiert. Unterstützt werden Vertex-, Pixel-, Tessellation-, Compute- und einfache Geometrie-Shader sowie die Serialisierung und Deserialisierung von Root-Signaturen. Zu den implementierten Shader-Instruktionen gehören arithmetische, atomare und bitweise Operationen, Vergleichs- und Datenflusssteuerungsoperatoren, Sample-, Gather- und Load-Instruktionen sowie unordentlicher Zugriff (UAV, Unordered Access View).
In der neuen Version vkd3d:
- Die HLSL-Shader-Sprache wurde um eine erste Unterstützung für Schleifen für 2-3 Shader-Modelle erweitert, es wurde die Möglichkeit hinzugefügt, in den strukturierten gemeinsamen Speicher von Thread-Gruppen zu schreiben, und die integrierten Funktionen tex3Dbias(), tex3Dlod() und texCUBElod() wurden implementiert. Zudem wird die Unterstützung der Semantiken SV_ClipDistance, SV_CullDistance und SV_StencilRef für die Verarbeitung von Eingaben und Ausgaben von Shadern gewährleistet.
- Der HLSL-Shaderkompiler implementiert eine automatische Entfernung doppelter Berechnungen, berechnet Ausdruckstypen wie x % y mit vorab bekannten Werten zur Compile-Zeit und verbessert die Zuweisung temporärer Register. In Übereinstimmung mit den Anforderungen der HLSL-Spezifikation wurde der Gültigkeitsbereich von Variablen in „for“-Schleifen erweitert (die Variable bleibt nach Abschluss der Schleife verfügbar). Bei der Analyse von Fließkommazahlen wird die Lokalisierung nicht mehr berücksichtigt (als Trennzeichen wird nun immer der Punkt verwendet).
- Die Unterstützung des alten binären Shader-Formats von Direct3D wurde verbessert. Die Anweisungen m4x4, m3x4, m4x3, m3x3, m3x2, phase, texdepth wurden implementiert.
texreg2ar, texreg2gb, texreg2rgb. Die Unterstützung von Modifikatoren wie „_dz“, „_db“, „_dw“ und „_da“ wurde hinzugefügt, die mit den Anweisungen texcrd und texld verwendet werden können. Außerdem wurden die Register „vFace“ und „vPos“ für die Arbeit mit Pixeldshadern hinzugefügt. - In DXIL (Direct3D Intermediate Language) im Code wurde die Verwendung von Zeigern auf später deklarierte Daten in den Operationen Laden, Speichern, atomare Änderung und Vergleich implementiert.
- In den Direct3D-Shader-Assemblierungen wurde die Unterstützung von 16-Bit-eingebetteten Konstanten sowie von Flags „64UAVs“ hinzugefügt.
‚ROVs‘,
‚UAVLoadAdditionalFormats‘,
‚UAVsAtEveryStage‘,
‚allResourcesBound‘,
‚enable11_1ShaderExtensions‘,
‚int64Ops‘,
‚nativeLowPrecision‘,
‚stencilRef‘,
‚viewportAndRTArrayIndex‘ und
‚waveOps‘. - Die Shader-Kompilierungsoptionen sind implementiert: VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F16, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F32, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F64 und VKD3D_SHADER_COMPILE_OPTION_CONST_GLOBAL_UNIFORM.
Quelle: opennet.ru
