D7VK 2.2 millora el suport de Direct3D 3 per jugar a clĂ ssics de Windows a Linux

  • D7VK 2.2 millora de forma important el suport de Direct3D 3, corregint problemes de dispositius, execute buffers i transformaciĂł de vèrtexs.
  • L'actualitzaciĂł tambĂ© millora la gestiĂł de textures i color key transparency i redueix la sobrecĂ rrega d'algunes rutes de Direct3D 5 i 6.
  • D7VK 2.2 estĂ  basat en DXVK 3.1 i continua millorant l'execuciĂł de jocs clĂ ssics de Windows mitjançant Wine i Proton a Linux.

D7VK 2.2

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.


Afegir com a font preferida a Google