Byla zveřejněna experimentální verze otevřené implementace Win32 API — Wine 11.10. Od vydání 11.9 bylo uzavřeno 17 chybových zpráv a provedeno 248 změn.
Nejdůležitější změny:
- Vestavěný balíček Vkd3d s implementací Direct3D 12 byl aktualizován na verzi 2.0.
- Byla navržena přepracovaná podpora jazyka XPath, implementovaná bez použití knihovny libxml2.
- Byla zlepšena kompatibilita s VBScript.
- Do ntdll byly přidány zástupné znaky pro API ALPC (Advanced Local Procedure Call): NtAlpcCreatePort(), NtAlpcConnectPort(), NtAlpcAcceptConnectPort(), NtAlpcSendWaitReceivePort(), NtAlpcDisconnectPort() a NtAlpcImpersonateClientOfPort().
- Byla vylepšena podpora Bluetooth, přidány metody BluetoothLEDeviceStatics::FromBluetoothAddressAsync, IBluetoothLEDevice::get_DeviceId, IBluetoothLEDevice::get_GattServices, IGattDeviceService::get_Uuid a IGattDeviceService::get_AttributeHandle.
- Do implementace d3dx10 a d3dx11 byla přidána možnost načítání DDS souborů s texturovými poli. Do funkce D3DX10LoadTextureFromTexture() byla přidána podpora 3D textur, textur s podporou úrovně detailu a generování MIP úrovní (MipMap).
- V DLL win32u byly implementovány funkce NtUserGetMessagePos() a NtUserSetMessageExtraInfo().
- Byly uzavřeny chybové zprávy týkající se funkcí aplikací: IrfanView, Kodak EasyShare, Git for Windows, Family Tree Maker 2017, Foxit PhantomPDF Business 10.0, Vocaloid 6, Photolemur 3,
TrackChecker. - Byly uzavřeny chybové zprávy týkající se funkcí her: Star Wars Racer, Star Wars: Knights of the Old Republic, Age of Empires III: The Asian Dynasties.
Projekt Wine také zveřejnil vydání balíčku vkd3d 2.0 s implementací Direct3D 12, fungující prostřednictvím převodu volání do grafického API Vulkan. Balíček obsahuje knihovny libvkd3d s implementací Direct3D 12, libvkd3d-shader s překladačem modelů shaderů a libvkd3d-utils s funkcemi pro zjednodušení portování aplikací Direct3D 12, jakož i sadu demonstračních příkladů, včetně portu glxgears na Direct3D 12. Kód projektu je distribuován pod licencí LGPLv2.1.
Knihovna libvkd3d podporuje většinu funkcí Direct3D 12, včetně prostředků pro grafiku a výpočty, front a seznamů příkazů, popisovačů a haldových popisovačů, kořenových podpisů, neuspořádaného přístupu, samplerů, podpisů příkazů, kořenových konstant, nepřímého vykreslování, metod Clear*() a Copy*(). V libvkd3d-shader je implementován překlad bajtkódu modelů shaderů do mezilehlé reprezentace SPIR-V. Podporovány jsou vrcholové, pixelové, tesselační, výpočetní a prosté geometrické shadery, serializace a deserializace kořenového podpisu. Z instrukcí shaderů jsou implementovány aritmetické, atomové a bitové operace, operátory porovnání a řízení toku dat, instrukce sample, gather a load, operace neuspořádaného přístupu (UAV, Unordered Access View).
V nové verzi vkd3d:
- Do implementace jazyka shaderů HLSL byla přidána počáteční podpora cyklů pro 2-3 modely shaderů, byla umožněna zápis do strukturované sdílené paměti skupiny vláken, byly implementovány vestavěné funkce tex3Dbias(), tex3Dlod() a texCUBElod(), a byla zajištěna podpora sémantik SV_ClipDistance, SV_CullDistance a SV_StencilRef pro zpracování vstupu a výstupu od shaderů.
- V kompilátoru shaderů HLSL bylo implementováno automatické odstranění duplicitních výpočtů, bylo zajištěno vyhodnocení výrazů jako x % y s předem známými hodnotami během kompilace a vylepšeno rozdělení dočasných registrů. V souladu s požadavky specifikace HLSL byla rozšířena viditelnost proměnných v cyklech „for“ (proměnná zůstává dostupná i po ukončení cyklu). Při parsování desetinných čísel byl zastaven účet podle místní konfigurace (jako oddělovač se nyní vždy používá tečka).
- Byla vylepšena podpora starého binárního formátu shaderů Direct3D. Byl implementován instrukce m4x4, m3x4, m4x3, m3x3, m3x2, phase, texdepth,
texreg2ar, texreg2gb, texreg2rgb. Byla přidána podpora modifikátorů „_dz“, „_db“, „_dw“ a „_da“, které lze používat s instrukcemi texcrd a texld. Byla přidána podpora registrů „vFace“ a „vPos“ pro práci s pixelovými shadery. - V DXIL (Direct3D Intermediate Language) v kódu, v operacích načítání, ukládání, atomických změnách a porovnání byla implementována možnost používání ukazatelů na data, která byla deklarována později.
- Do assembleru shaderů Direct3D byla přidána podpora 16bitových vestavěných konstant a také vlajek ‘64UAVs’,
‘ROVs’,
‘UAVLoadAdditionalFormats’,
‘UAVsAtEveryStage’,
‘allResourcesBound’,
‘enable11_1ShaderExtensions’,
‘int64Ops’,
‘nativeLowPrecision’,
‘stencilRef’,
‘viewportAndRTArrayIndex’ a
‘waveOps’. - Byly implementovány možnosti kompilace shaderů: VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F16, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F32, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F64 a VKD3D_SHADER_COMPILE_OPTION_CONST_GLOBAL_UNIFORM.
Zdroj: opennet.ru
