
D7VK 2.2 ja està disponible com una nova versió de la capa de traducció grà fica dissenyada per executar jocs clà ssics de Windows a Linux. El projecte, derivat de DXVK, se centra a traduir les antigues APIs Direct3D 7, 6, 5 i 3 a Vulkan per utilitzar-les mitjançant Wine i Proton, i aquesta nova versió dedica bona part del seu treball a una de les parts que encara presentava més mancances: el suport de Direct3D 3.
L'actualització arriba unes setmanes després de D7VK 2.1 i continua el procés de maduració d'una tecnologia especialment interessant per als que volen recuperar jocs de finals dels anys 90 i principis dels 2000 en sistemes Linux moderns. A més de millorar Direct3D 3, D7VK 2.2 incorpora nombroses correccions i ajustaments interns, i pren com a base la recent versió DXVK 3.1.
D7VK 2.2 posa el focus a Direct3D 3
La principal novetat de D7VK 2.2 estĂ relacionada amb Direct3D 3, una API que havia quedat una mica endarrerida davant de la resta de tecnologies antigues suportades pel projecte. Tot i que els jocs Direct3D 3 que el desenvolupador havia pogut recopilar i provar ja funcionaven amb D7VK, encara existien diferents casos lĂmit i comportaments que no estaven implementats correctament.
Això era especialment problemĂ tic perquè el catĂ leg de jocs que utilitzen Direct3D 3 Ă©s difĂcil de reconstruir. Es tracta de tĂtols molt antics, molts dels quals ja no es comercialitzen o sĂłn complicats de localitzar, per la qual cosa resulta difĂcil provar totes les possibles implementacions que es poden trobar a la prĂ ctica.
Amb aquesta versiĂł, el desenvolupador ha revisat bona part de la implementaciĂł de Direct3D 3 per apropar-la al nivell de maduresa assolit per les altres API compatibles amb D7VK.
El comportament dels dispositius D3D3 s'ajusta a l'original
Un dels canvis tècnics consisteix a refer el sistema de recompte de referències dels dispositius Direct3D 3. D7VK 2.2 modifica aquest mecanisme perquè el comportament coincideixi amb el de la implementació nativa de l'API.
Aquest tipus de detall pot semblar poc rellevant per a lusuari, però Ă©s fonamental en una capa de traducciĂł. Els jocs antics poden dependre de comportaments concrets relacionats amb la creaciĂł i la destrucciĂł d'objectes, i una diferència aparentment petita pot provocar errors difĂcils de diagnosticar.
La nova implementaciĂł redueix aixĂ les possibilitats que determinats tĂtols fallin en gestionar els dispositius grĂ fics d'una manera que D7VK no esperava.
D7VK 2.2 introdueix millores en la transparència mitjançant color key
D7VK 2.2 també modifica la gestió de color keying a dispositius Direct3D 3 purs. Fins ara, el projecte utilitzava un model molt senzill en què aquesta funció estava sempre activada en determinades circumstà ncies.
La nova versió permet controlar correctament quan s'ha habilitat, reproduint d'una manera més fidel el comportament de Direct3D 3. Això és especialment important per a jocs antics que utilitzen tècniques de transparència basades en colors concrets.
A mĂ©s, s'han optimitzat els cĂ lculs relacionats amb els rangs de color normalitzats. Aquests valors s'actualitzen Ăşnicament quan canvia la descripciĂł de la superfĂcie, permetent mantenir-los en memòria cau i reutilitzar-los posteriorment.
El resultat hauria de ser una petita o moderada millora del rendiment en jocs que utilitzen color key transparency, a més d'un comportament més correcte.
Es corregeixen casos lĂmit dels execute buffers
Un altre apartat important de D7VK 2.2 Ă©s la revisiĂł de les validacions dels execute buffers de Direct3D 3. El projecte ha reorganitzat part daquesta lògica per solucionar diferents casos lĂmit detectats durant les proves.
Per comprovar el comportament esperat de l'API, el desenvolupador ha pogut recolzar-se tambĂ© en proves de Wine especĂficament relacionades amb Direct3D 3. Aquestes proves permeten comparar el comportament de D7VK amb què s'espera una implementaciĂł compatible i detectar diferències que podrien passar desapercebudes en utilitzar Ăşnicament jocs coneguts.
Aquest treball resulta particularment valuĂłs per a una API tan antiga, on els tĂtols disponibles per fer proves sĂłn escassos i no sempre cobreixen totes les possibilitats de la implementaciĂł original.
Major robustesa per a les textures de Direct3D 5 i 3
L'actualitzaciĂł no es limita a Direct3D 3. D7VK 2.2 tambĂ© millora la gestiĂł de textures utilitzades per Direct3D 5 i Direct3D 3 per evitar que les superfĂcies subjacents quedin fora d'abast mentre encara s'utilitzen.
El canvi augmenta la robustesa del maneig de recursos grà fics i pot solucionar errors que només apareguin sota determinades seqüències d'operacions. El desenvolupador assenyala a més que aquesta millora ha tingut un efecte positiu a Frogger , publicat originalment el 1997.
La correcciĂł mostra com els canvis interns destinats a solucionar problemes de gestiĂł de recursos poden acabar tenint efectes visibles en jocs concrets, fins i tot quan la modificaciĂł no estĂ dissenyada especĂficament per a aquests.
D7VK 2.2 també corregeix problemes de transformació i matrius
D7VK 2.2 soluciona a més un error relacionat amb la transformació dels execute buffers de Direct3D 3. El problema estava provocat per una determinació incorrecta del format FVF utilitzat per a les entrades dels vèrtexs.
També s'ha corregit un problema als cà lculs de matrius de projecció heretades. La fallada va ser detectada grà cies a una prova de Wine que no es comportava com esperava, i podia haver tingut conseqüències negatives en determinades aplicacions Direct3D 6, 5 i 3.
Aquests canvis tornen a demostrar la importĂ ncia de les proves de compatibilitat per a D7VK. Molts dels problemes de les API grĂ fiques antigues no apareixen necessĂ riament en els jocs mĂ©s coneguts, sinĂł en combinacions especĂfiques de caracterĂstiques que poden romandre ocultes durant anys.
Menys sobrecĂ rrega a les rutes de dibuix antigues
La nova versió també reorganitza el camà de dibuix Begin() / Vertex() / End() utilitzat per Direct3D 6 i Direct3D 5. La modificació redueix el consum de memòria i proporciona una petita millora de rendiment.
De nou, Frogger es troba entre els jocs que es poden beneficiar d'aquest canvi. Encara que no es tracta d'una optimitzaciĂł que duplicarĂ els FPS de tots els tĂtols retro, sĂ que contribueix a reduir part de la sobrecĂ rrega acumulada a les rutes utilitzades per les API mĂ©s antigues.
D7VK ja ha rebut importants optimitzacions de rendiment en versions anteriors, per la qual cosa el treball actual se centra cada cop més en polir la implementació i eliminar costos innecessaris.
D7VK 2.2 part de DXVK 3.1
Una altra caracterĂstica important d'aquesta versiĂł Ă©s que D7VK 2.2 ha estat depassat sobre DXVK 3.1 . Això permet al projecte beneficiar-se d'una base mĂ©s recent i mantenir-ne alineada la implementaciĂł amb l'evoluciĂł de DXVK.
La relació entre tots dos projectes és especialment important. D7VK va néixer com un fork de DXVK especialitzat en les APIs Direct3D antigues que no estan cobertes per l'ús habitual de DXVK, mentre que tots dos utilitzen Vulkan com a destinació per a les trucades grà fiques procedents de Windows.
Grà cies a aquesta relació, les millores estructurals que arriben a DXVK poden servir com a base perquè D7VK continuï evolucionant sense haver de desenvolupar des de zero tota la infraestructura necessà ria per comunicar-se amb Vulkan.
Un projecte pensat per recuperar jocs clĂ ssics
D7VK té un objectiu molt concret dins de l'ecosistema Linux: permetre que jocs de Windows que utilitzen Direct3D 7, 6, 5 i 3 es puguin executar mitjançant Vulkan. Això ho diferencia de DXVK, que està orientat principalment a Direct3D 9, 10 i 11.
La importĂ ncia del projecte augmenta quan es tracta de tĂtols que depenen de tecnologies grĂ fiques que Wine no implementa directament de la mateixa manera o que es poden beneficiar d'una traducciĂł mĂ©s precisa cap a Vulkan.
En combinar D7VK amb Wine o Proton, els usuaris de Linux poden recuperar una quantitat considerable de programari de finals del segle XX i principis del XXI sense haver de recórrer necessà riament a una instal·lació antiga de Windows.
Per als que utilitzen Wine o Proton per jugar a Linux i tenen interès a recuperar tĂtols clĂ ssics, D7VK 2.2 reforça una de les peces mĂ©s interessants de la infraestructura de compatibilitat. I encara que moltes millores siguin invisibles per a l'usuari, cada correcciĂł augmenta les possibilitats que un altre joc perdut a l'era de Direct3D 3, 5, 6 o 7 pugui tornar a funcionar correctament en un sistema Linux modern.