Une version expĂ©rimentale de l'implĂ©mentation open source de l'API Win32 â Wine 11.10 a Ă©tĂ© publiĂ©e. Depuis la sortie de 11.9, 17 rapports de bogues ont Ă©tĂ© fermĂ©s et 248 modifications ont Ă©tĂ© apportĂ©es.
Modifications les plus importantes :
- Le package intégré Vkd3d avec l'implémentation de Direct3D 12 a été mis à jour vers la version 2.0.
- Un support retravaillé pour le langage XPath a été proposé, réalisé sans utiliser la bibliothÚque libxml2.
- La compatibilité avec VBScript a été améliorée.
- Des stubs pour l'API ALPC (Appel de procédure locale avancé) ont été ajoutés dans ntdll : NtAlpcCreatePort(), NtAlpcConnectPort(), NtAlpcAcceptConnectPort(), NtAlpcSendWaitReceivePort(), NtAlpcDisconnectPort() et NtAlpcImpersonateClientOfPort().
- Le support Bluetooth a été amélioré, des méthodes BluetoothLEDeviceStatics::FromBluetoothAddressAsync, IBluetoothLEDevice::get_DeviceId, IBluetoothLEDevice::get_GattServices, IGattDeviceService::get_Uuid et IGattDeviceService::get_AttributeHandle ont été ajoutées.
- L'implémentation de d3dx10 et d3dx11 a été améliorée pour charger des fichiers DDS avec des tableaux de textures. La fonction D3DX10LoadTextureFromTexture() prend désormais en charge les textures 3D, les textures avec niveaux de détail et la génération de niveaux MIP (MipMap).
- Les fonctions NtUserGetMessagePos() et NtUserSetMessageExtraInfo() ont été implémentées dans la DLL win32u.
- Des rapports de bogues liés à des applications ont été fermés : IrfanView, Kodak EasyShare, Git for Windows, Family Tree Maker 2017, Foxit PhantomPDF Business 10.0, Vocaloid 6, Photolemur 3,
TrackChecker. - Des rapports de bogues liés à des jeux ont été fermés : Star Wars Racer, Star Wars : Knights of the Old Republic, Age of Empires III : The Asian Dynasties.
Le projet Wine a également publié une version du package vkd3d 2.0 avec une implémentation de Direct3D 12, fonctionnant par la traduction d'appels vers l'API graphique Vulkan. Le package comprend des bibliothÚques libvkd3d avec l'implémentation de Direct3D 12, libvkd3d-shader avec le traducteur de modÚles de shaders et libvkd3d-utils avec des fonctions pour faciliter le portage d'applications Direct3D 12, ainsi qu'un ensemble d'exemples de démonstration, y compris le port glxgears vers Direct3D 12. Le code du projet est distribué sous la licence LGPLv2.1.
La bibliothÚque libvkd3d supporte la plupart des fonctionnalités de Direct3D 12, y compris les outils pour les graphismes et le calcul, les files d'attente et les listes de commandes, les descripteurs et les descripteurs de tas, les signatures racines, l'accÚs désordonné, les Sampler, les signatures de commandes, les constantes racines, le rendu indirect, les méthodes Clear*() et Copy*(). Dans libvkd3d-shader, la translation du bytecode des modÚles de shaders en représentation intermédiaire SPIR-V est réalisée. Les shaders de sommet, de pixel, de tessellation, de calcul et de géométrie simple sont supportés, ainsi que la sérialisation et la désérialisation des signatures racines. Parmi les instructions de shader, des opérations arithmétiques, atomiques et bit à bit, des opérateurs de comparaison et de contrÎle de flux, des instructions sample, gather et load, ainsi que des opérations d'accÚs désordonné (UAV, Unordered Access View) ont été implémentées.
Dans la nouvelle version de vkd3d :
- La prise en charge des boucles a été ajoutée à l'implémentation du langage de shaders HLSL pour 2-3 modÚles de shaders, permettant l'écriture dans la mémoire partagée structurée du groupe de threads, ainsi que les fonctions intégrées tex3Dbias(), tex3Dlod() et texCUBElod(). La prise en charge des sémantiques SV_ClipDistance, SV_CullDistance et SV_StencilRef a été ajoutée pour le traitement des entrées et sorties des shaders.
- Le compilateur de shaders HLSL rĂ©alise la suppression automatique des calculs dupliquĂ©s, permettant le calcul lors de la compilation d'expressions de la forme x % y avec des valeurs connues, et amĂ©liorant la rĂ©partition des registres temporaires. En conformitĂ© avec les spĂ©cifications HLSL, la portĂ©e des variables dans les boucles "for" a Ă©tĂ© Ă©largie (la variable reste accessible aprĂšs la fin de la boucle). Lors de l'analyse des nombres dĂ©cimaux, la prise en compte de la locale a Ă©tĂ© arrĂȘtĂ©e (le point est dĂ©sormais toujours utilisĂ© comme sĂ©parateur).
- La prise en charge de l'ancien format binaire de shaders Direct3D a été améliorée. Les instructions m4x4, m3x4, m4x3, m3x3, m3x2, phase, texdepth ont été implémentées.
texreg2ar, texreg2gb, texreg2rgb. La prise en charge des modificateurs «_dz», «_db», «_dw» et «_da» a Ă©tĂ© ajoutĂ©e, qui peuvent ĂȘtre utilisĂ©s avec les instructions texcrd et texld. La prise en charge des registres «vFace» et «vPos» a Ă©tĂ© ajoutĂ©e pour travailler avec les shaders de pixel. - Dans DXIL (Direct3D Intermediate Language), dans le code, lors des opĂ©rations de chargement, de sauvegarde, de modification atomique et de comparaison, la possibilitĂ© d'utiliser des pointeurs sur des donnĂ©es dĂ©clarĂ©es ultĂ©rieurement a Ă©tĂ© implĂ©mentĂ©e.
- Le shader d'assembleur Direct3D a introduit la prise en charge des constantes intĂ©grĂ©es de 16 bits, ainsi que des indicateurs â64UAVsâ,
âROVsâ,
âUAVLoadAdditionalFormatsâ,
âUAVsAtEveryStageâ,
âallResourcesBoundâ,
âenable11_1ShaderExtensionsâ,
âint64Opsâ,
ânativeLowPrecisionâ,
âstencilRefâ,
âviewportAndRTArrayIndexâ et
âwaveOpsâ. - Des options de compilation de shaders ont Ă©tĂ© mises en Ćuvre : VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F16, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F32, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F64 et VKD3D_SHADER_COMPILE_OPTION_CONST_GLOBAL_UNIFORM.
Source : opennet.ru
