Noi versiuni Wine 11.10 și Vkd3d 2.0

A fost publicată o versiune experimentală a implementării deschise a Win32 API — Wine 11.10. De la lansarea 11.9, au fost închise 17 rapoarte de erori și au fost efectuate 248 de modificări.

Cele mai importante schimbări:

  • Pachetul Vkd3d încorporat, care implementează Direct3D 12, a fost actualizat la versiunea 2.0.
  • A fost propus un suport revizuit pentru limbajul XPath, implementat fără a utiliza biblioteca libxml2.
  • A fost îmbunătățită compatibilitatea cu VBScript.
  • Au fost adăugate stub-uri pentru API-ul ALPC (Advanced Local Procedure Call) în ntdll: NtAlpcCreatePort(), NtAlpcConnectPort(), NtAlpcAcceptConnectPort(), NtAlpcSendWaitReceivePort(), NtAlpcDisconnectPort() și NtAlpcImpersonateClientOfPort().
  • Suportul pentru Bluetooth a fost îmbunătățit, adăugând metodele BluetoothLEDeviceStatics::FromBluetoothAddressAsync, IBluetoothLEDevice::get_DeviceId, IBluetoothLEDevice::get_GattServices, IGattDeviceService::get_Uuid și IGattDeviceService::get_AttributeHandle.
  • În implementările d3dx10 și d3dx11, a fost adăugată posibilitatea de a încărca fișiere DDS cu aranjamente de texturi. Funcția D3DX10LoadTextureFromTexture() a căpătat suport pentru texturi 3D, texturi cu suport pentru niveluri de detaliu și generarea MIP-urilor (MipMap).
  • În DLL-ul win32u, au fost implementate funcțiile NtUserGetMessagePos() și NtUserSetMessageExtraInfo().
  • Au fost închise rapoartele de erori legate de funcționarea aplicațiilor: IrfanView, Kodak EasyShare, Git for Windows, Family Tree Maker 2017, Foxit PhantomPDF Business 10.0, Vocaloid 6, Photolemur 3.
    TrackChecker.
  • Au fost închise rapoartele de erori legate de funcționarea jocurilor: Star Wars Racer, Star Wars: Knights of the Old Republic, Age of Empires III: The Asian Dynasties.

Proiectul Wine a publicat, de asemenea, versiunea 2.0 a pachetului vkd3d cu implementarea Direct3D 12, care funcționează prin translația apelurilor către API-ul grafic Vulkan. Pachetul include bibliotecile libvkd3d cu implementarea Direct3D 12, libvkd3d-shader cu traductorul modelului de shader și libvkd3d-utils cu funcții pentru simplificarea portării aplicațiilor Direct3D 12, precum și un set de exemple demonstrative, inclusiv portarea glxgears pe Direct3D 12. Codul proiectului este distribuit sub licența LGPLv2.1.

Biblioteca libvkd3d suportă majoritatea funcțiilor Direct3D 12, inclusiv instrumente pentru grafică și calcul, cozi și liste de comenzi, descrieri și descrieri de grămadă, semnături de rădăcină, acces neordonat, Sampler-e, semnături de comenzi, constante de rădăcină, desenare indirectă, metode Clear*() și Copy*(). În libvkd3d-shader este implementată translatia codului binar al modelelor de șader în reprezentare intermediară SPIR-V. Sunt suportate șaderi de vârf, pixel, teselare, calcul și șaderi geometrice simple, serializare și deserializare a semnăturii de rădăcină. Instrucțiunile de șader includ operații aritmetice, atomice și bitwise, operatori de comparație și control al fluxului de date, instrucțiuni de sample, gather și load, operații de acces neordonat (UAV, Unordered Access View).

În noua versiune a vkd3d:

  • În implementarea limbajului de shader HLSL a fost adăugată o suport inițial pentru bucle pentru 2-3 modele de shader, a fost introdusă posibilitatea de scriere în memoria partajată structurată a grupului de thread-uri, au fost implementate funcțiile încorporate tex3Dbias(), tex3Dlod() și texCUBElod(), și s-a asigurat suportul pentru semanticile SV_ClipDistance, SV_CullDistance și SV_StencilRef pentru procesarea intrărilor și ieșirilor din shader.
  • Compilatorul shaderelor HLSL implementat a eliminat automat calculele duplicate, a asigurat calcularea la etapa de compilare a expresiilor de tipul x % y cu valori cunoscute în prealabil, și a îmbunătățit distribuția registrelor temporare. În conformitate cu cerințele specificației HLSL, domeniul de vizibilitate al variabilelor în buclele „for” a fost extins (variabila rămâne disponibilă după finalizarea buclei). La parsarea numerelor zecimale, s-a oprit contabilizarea localizării (acum este folosită întotdeauna punctul ca separator).
  • A fost îmbunătățită suportul pentru vechiul format binar de shader-e Direct3D. Au fost implementate instrucțiunile m4x4, m3x4, m4x3, m3x3, m3x2, phase, texdepth,
    texreg2ar, texreg2gb, texreg2rgb. A fost adăugat suport pentru modificatorii „_dz”, „_db”, „_dw” și „_da”, care pot fi utilizați cu instrucțiunile texcrd și texld. A fost adăugat suport pentru registrele „vFace” și „vPos” pentru a lucra cu shader-e de pixel.
  • În DXIL (Direct3D Intermediate Language), în cod, în operațiile de încărcare, salvare, modificare atomică și comparare, a fost implementată posibilitatea utilizării pointerilor către datele declarate ulterior.
  • În assembler-ul shaderelor Direct3D a fost adăugat suport pentru constante încorporate pe 16 biți, precum și pentru flag-uri ‘64UAVs’,
    ‘ROVs’,
    ‘UAVLoadAdditionalFormats’,
    ‘UAVsAtEveryStage’,
    ‘allResourcesBound’,
    ‘enable11_1ShaderExtensions’,
    ‘int64Ops’,
    ‘nativeLowPrecision’,
    ‘stencilRef’,
    ‘viewportAndRTArrayIndex’ și
    ‘waveOps’.
  • Au fost implementate opțiuni de compilare a shader-elor: VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F16, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F32, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F64 și VKD3D_SHADER_COMPILE_OPTION_CONST_GLOBAL_UNIFORM.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster