Το D7VK 2.2 βελτιώνει την υποστήριξη του Direct3D 3 για την αναπαραγωγή κλασικών παιχνιδιών των Windows σε Linux

  • Το D7VK 2.2 βελτιώνει σημαντικά την υποστήριξη του Direct3D 3, διορθώνοντας προβλήματα συσκευών, buffer εκτέλεσης και μετασχηματισμό κορυφών.
  • Η ενημέρωση βελτιώνει επίσης τη διαχείριση υφών και τη διαφάνεια των πλήκτρων χρώματος και μειώνει την επιβάρυνση σε ορισμένες διαδρομές Direct3D 5 και 6.
  • Το D7VK 2.2 βασίζεται στο DXVK 3.1 και συνεχίζει να βελτιώνει την εκτέλεση κλασικών παιχνιδιών των Windows χρησιμοποιώντας Wine και Proton σε Linux.

D7VK 2.2

Το D7VK 2.2 είναι πλέον διαθέσιμο ως μια νέα έκδοση του επιπέδου μετάφρασης γραφικών που έχει σχεδιαστεί για την εκτέλεση κλασικών παιχνιδιών των Windows σε Linux. Το έργο, που προέρχεται από το DXVK, επικεντρώνεται στη μετάφραση των παλαιότερων API Direct3D 7, 6, 5 και 3 στο Vulkan για χρήση με Wine και Proton, και αυτή η νέα έκδοση αφιερώνει ένα σημαντικό μέρος της δουλειάς της σε έναν από τους τομείς που εξακολουθούσε να παρουσιάζει τις περισσότερες ελλείψεις: την υποστήριξη Direct3D 3.

Η ενημέρωση έρχεται λίγες μόνο εβδομάδες μετά το D7VK 2.1 και συνεχίζει τη διαδικασία ωρίμανσης μιας τεχνολογίας που είναι ιδιαίτερα ενδιαφέρουσα για όσους θέλουν να παίξουν παιχνίδια από τα τέλη της δεκαετίας του '90 και τις αρχές της δεκαετίας του 2000 σε σύγχρονα συστήματα Linux. Εκτός από τη βελτίωση του Direct3D 3, το D7VK 2.2 ενσωματώνει πολλές διορθώσεις σφαλμάτων και εσωτερικές προσαρμογές, και βασίζεται στην πρόσφατη έκδοση DXVK 3.1.

Το D7VK 2.2 εστιάζει στο Direct3D 3

Το κύριο νέο χαρακτηριστικό στο D7VK 2.2 σχετίζεται με το Direct3D 3, ένα API που υστερούσε κάπως σε σχέση με τις άλλες παλαιότερες τεχνολογίες που υποστηρίζονταν από το έργο. Παρόλο που τα παιχνίδια του Direct3D 3 που ο προγραμματιστής είχε καταφέρει να συλλέξει και να δοκιμάσει λειτουργούσαν ήδη με το D7VK, υπήρχαν ακόμη αρκετές ακραίες περιπτώσεις και συμπεριφορές που δεν είχαν υλοποιηθεί σωστά.

Αυτό ήταν ιδιαίτερα προβληματικό επειδή ο κατάλογος των παιχνιδιών που χρησιμοποιούν το Direct3D 3 είναι δύσκολο να ανακατασκευαστεί. Πρόκειται για πολύ παλιούς τίτλους, πολλοί από τους οποίους δεν είναι πλέον εμπορικά διαθέσιμοι ή είναι δύσκολο να βρεθούν, γεγονός που καθιστά δύσκολη τη δοκιμή όλων των πιθανών υλοποιήσεων που ενδέχεται να συναντηθούν στην πράξη.

Με αυτήν την έκδοση, ο προγραμματιστής έχει αναθεωρήσει ένα μεγάλο μέρος της υλοποίησης του Direct3D 3 για να την φέρει πιο κοντά στο επίπεδο ωριμότητας που έχουν επιτύχει τα άλλα API που είναι συμβατά με το D7VK.

Η συμπεριφορά των συσκευών D3D3 συμμορφώνεται με την αρχική

Μία από τις τεχνικές αλλαγές περιλαμβάνει την επαναφορά του συστήματος καταμέτρησης αναφορών για συσκευές Direct3D 3. Το D7VK 2.2 τροποποιεί αυτόν τον μηχανισμό έτσι ώστε η συμπεριφορά του να ταιριάζει με αυτήν της εγγενούς υλοποίησης API.

Αυτού του είδους η λεπτομέρεια μπορεί να φαίνεται άσχετη στον χρήστη, αλλά είναι κρίσιμη σε ένα επίπεδο μετάφρασης. Τα παλαιότερα παιχνίδια μπορούν να βασίζονται σε συγκεκριμένες συμπεριφορές που σχετίζονται με τη δημιουργία και την καταστροφή αντικειμένων και μια φαινομενικά μικρή διαφορά μπορεί να οδηγήσει σε σφάλματα που είναι δύσκολο να διαγνωστούν.

Η νέα εφαρμογή μειώνει έτσι τις πιθανότητες ορισμένων τίτλων να μην μπορούν να διαχειριστούν τις συσκευές γραφικών τους με τρόπο που δεν περίμενε το D7VK.

Το D7VK 2.2 εισάγει βελτιώσεις στη διαφάνεια χρησιμοποιώντας το πλήκτρο χρώματος

Το D7VK 2.2 τροποποιεί επίσης τη διαχείριση χρωματικής κωδικοποίησης σε συσκευές που βασίζονται αποκλειστικά στο Direct3D 3. Μέχρι τώρα, το έργο χρησιμοποιούσε ένα πολύ απλό μοντέλο στο οποίο αυτή η λειτουργία παρέμενε πάντα ενεργοποιημένη υπό ορισμένες συνθήκες.

Η νέα έκδοση επιτρέπει τον ακριβή έλεγχο του πότε να ενεργοποιηθεί, αναπαράγοντας πιο πιστά τη συμπεριφορά του Direct3D 3. Αυτό είναι ιδιαίτερα σημαντικό για παλαιότερα παιχνίδια που χρησιμοποιούν τεχνικές διαφάνειας που βασίζονται σε συγκεκριμένα χρώματα.

Επιπλέον, οι υπολογισμοί που σχετίζονται με κανονικοποιημένα εύρη χρωμάτων έχουν βελτιστοποιηθεί. Αυτές οι τιμές ενημερώνονται πλέον μόνο όταν αλλάζει η περιγραφή της επιφάνειας, επιτρέποντάς τους να αποθηκευτούν προσωρινά και να επαναχρησιμοποιηθούν αργότερα.

Το αποτέλεσμα θα πρέπει να είναι μια μικρή έως μέτρια βελτίωση στην απόδοση σε παιχνίδια που χρησιμοποιούν διαφάνεια χρωματικών πλήκτρων, καθώς και πιο σωστή συμπεριφορά.

Οι οριακές περιπτώσεις στα buffer εκτέλεσης διορθώνονται

Μια άλλη σημαντική πτυχή του D7VK 2.2 είναι η αναθεώρηση των επικυρώσεων εκτέλεσης buffer του Direct3D 3. Το έργο έχει αναδιοργανώσει μέρος αυτής της λογικής για να αντιμετωπίσει διάφορες περιπτώσεις ακραίων σημείων που εντοπίστηκαν κατά τη διάρκεια των δοκιμών.

Για την επαλήθευση της αναμενόμενης συμπεριφοράς του API, ο προγραμματιστής μπόρεσε επίσης να βασιστεί σε δοκιμές Wine που σχετίζονται ειδικά με το Direct3D 3. Αυτές οι δοκιμές επιτρέπουν τη σύγκριση της συμπεριφοράς του D7VK με αυτήν που αναμένεται από μια συμβατή υλοποίηση και την ανίχνευση διαφορών που μπορεί να περάσουν απαρατήρητες όταν χρησιμοποιούνται μόνο γνωστά παιχνίδια.

Αυτή η εργασία είναι ιδιαίτερα πολύτιμη για ένα τόσο παλιό API, όπου οι διαθέσιμοι τίτλοι για δοκιμή είναι σπάνιοι και δεν καλύπτουν πάντα όλες τις δυνατότητες της αρχικής υλοποίησης.

Μεγαλύτερη ανθεκτικότητα για υφές Direct3D 5 και 3

Η ενημέρωση δεν περιορίζεται στο Direct3D 3. Το D7VK 2.2 βελτιώνει επίσης τον χειρισμό των υφών που χρησιμοποιούνται από το Direct3D 5 και το Direct3D 3, ώστε να αποτρέπεται η έξοδος των υποκείμενων επιφανειών εκτός εμβέλειας ενώ εξακολουθούν να χρησιμοποιούνται.

Η αλλαγή αυξάνει την ανθεκτικότητα του χειρισμού των πόρων γραφικών και μπορεί να επιλύσει σφάλματα που εμφανίζονται μόνο σε συγκεκριμένες ακολουθίες λειτουργιών. Ο προγραμματιστής σημειώνει επίσης ότι αυτή η βελτίωση είχε θετική επίδραση στο Frogger , το οποίο κυκλοφόρησε αρχικά το 1997.

Η ενημέρωση κώδικα δείχνει πώς οι εσωτερικές αλλαγές που αποσκοπούν στην αντιμετώπιση προβλημάτων διαχείρισης πόρων μπορούν να καταλήξουν να έχουν ορατά αποτελέσματα σε συγκεκριμένα παιχνίδια, ακόμη και όταν η τροποποίηση δεν έχει σχεδιαστεί ειδικά για αυτά.

Το D7VK 2.2 διορθώνει επίσης προβλήματα μετασχηματισμού και πινάκων

Το D7VK 2.2 διορθώνει επίσης ένα σφάλμα που σχετίζεται με τον μετασχηματισμό των buffer εκτέλεσης του Direct3D 3. Το πρόβλημα προκλήθηκε από εσφαλμένο προσδιορισμό της μορφής FVF που χρησιμοποιείται για τις εισόδους κορυφών.

Διορθώθηκε επίσης ένα πρόβλημα με τους υπολογισμούς του παλαιότερου πίνακα προβολής. Το σφάλμα ανακαλύφθηκε μέσω μιας δοκιμής Wine που δεν συμπεριφερόταν όπως αναμενόταν και θα μπορούσε να έχει επηρεάσει αρνητικά ορισμένες εφαρμογές Direct3D 6, 5 και 3.

Αυτές οι αλλαγές καταδεικνύουν περαιτέρω τη σημασία των δοκιμών συμβατότητας για το D7VK. Πολλά από τα προβλήματα με τα παλαιότερα API γραφικών δεν εμφανίζονται απαραίτητα στα πιο δημοφιλή παιχνίδια, αλλά μάλλον σε συγκεκριμένους συνδυασμούς χαρακτηριστικών που μπορούν να παραμείνουν κρυμμένα για χρόνια.

Λιγότερη επιβάρυνση σε παλαιές διαδρομές σχεδίασης

Η νέα έκδοση αναδιοργανώνει επίσης τη διαδρομή σχεδίασης Begin() / Vertex() / End() Χρησιμοποιείται από τα Direct3D 6 και Direct3D 5. Η τροποποίηση μειώνει την κατανάλωση μνήμης και παρέχει μια μικρή βελτίωση στην απόδοση.

Για άλλη μια φορά, το Frogger είναι ανάμεσα στα παιχνίδια που μπορούν να επωφεληθούν από αυτήν την αλλαγή. Ενώ αυτή η βελτιστοποίηση δεν θα διπλασιάσει τα FPS όλων των ρετρό τίτλων, βοηθά στη μείωση μέρους του overhead που συσσωρεύεται στις διαδρομές που χρησιμοποιούνται από παλαιότερα API.

Το D7VK έχει ήδη λάβει σημαντικές βελτιστοποιήσεις απόδοσης σε προηγούμενες εκδόσεις, επομένως η τρέχουσα εργασία επικεντρώνεται όλο και περισσότερο στη βελτίωση της υλοποίησης και στην εξάλειψη των περιττών εξόδων.

D7VK 2.2 μέρος του DXVK 3.1

Ένα άλλο σημαντικό χαρακτηριστικό αυτής της έκδοσης είναι ότι το D7VK 2.2 έχει αντικατασταθεί από το DXVK 3.1 . Αυτό επιτρέπει στο έργο να επωφεληθεί από μια πιο πρόσφατη βάση και να διατηρήσει την υλοποίησή του ευθυγραμμισμένη με την εξέλιξη του DXVK.

Η σχέση μεταξύ των δύο έργων είναι ιδιαίτερα σημαντική. Το D7VK προήλθε ως μια διακλάδωση του DXVK που ειδικευόταν σε παλαιότερα API Direct3D που δεν καλύπτονταν από την τυπική χρήση του DXVK, ενώ και τα δύο χρησιμοποιούν το Vulkan ως προορισμό για κλήσεις γραφικών που προέρχονται από τα Windows.

Χάρη σε αυτή τη σχέση, οι δομικές βελτιώσεις που έρχονται στο DXVK μπορούν να χρησιμεύσουν ως βάση για να συνεχίσει το D7VK να εξελίσσεται χωρίς να χρειάζεται να αναπτύξει από την αρχή όλη την απαραίτητη υποδομή για την επικοινωνία με το Vulkan.

Ένα έργο σχεδιασμένο για να αναβιώσει κλασικά παιχνίδια

Το D7VK έχει έναν πολύ συγκεκριμένο στόχο μέσα στο οικοσύστημα Linux: να επιτρέψει σε παιχνίδια των Windows που χρησιμοποιούν Direct3D 7, 6, 5 και 3 να εκτελούνται χρησιμοποιώντας το Vulkan. Αυτό το διαφοροποιεί από το DXVK, το οποίο επικεντρώνεται κυρίως στα Direct3D 9, 10 και 11.

Η σημασία του έργου αυξάνεται όταν πρόκειται για τίτλους που εξαρτώνται από τεχνολογίες γραφικών που το Wine δεν εφαρμόζει άμεσα με τον ίδιο τρόπο ή που μπορούν να επωφεληθούν από μια πιο ακριβή μετάφραση στο Vulkan.

Συνδυάζοντας το D7VK με το Wine ή το Proton, οι χρήστες Linux μπορούν να ανακτήσουν ένα σημαντικό ποσό λογισμικού από τα τέλη του 20ού και τις αρχές του 21ου αιώνα χωρίς απαραίτητα να χρειαστεί να καταφύγουν σε μια παλιά εγκατάσταση των Windows.

Για όσους χρησιμοποιούν Wine ή Proton για να παίζουν παιχνίδια σε Linux και ενδιαφέρονται να αναβιώσουν κλασικούς τίτλους, το D7VK 2.2 ενισχύει ένα από τα πιο σημαντικά κομμάτια της υποδομής συμβατότητας. Και ενώ πολλές από τις βελτιώσεις του μπορεί να είναι αόρατες στον χρήστη, κάθε διόρθωση αυξάνει τις πιθανότητες ένα άλλο παιχνίδι που χάθηκε στην εποχή του Direct3D 3, 5, 6 ή 7 να μπορεί να λειτουργήσει ξανά σωστά σε ένα σύγχρονο σύστημα Linux.


Προσθήκη ως προτιμώμενης πηγής στην Google