Το πρόγραμμα οδήγησης Vulkan χρησιμοποιεί τώρα το backend build ACO της Valve

Στη βάση κώδικα που χρησιμοποιείται για τη διαμόρφωση της έκδοσης Mesa 20.2, το πρόγραμμα οδήγησης RADV, Vulkan για μάρκες AMD άλλαξε σε backend προεπιλογή για μεταγλώττιση shaders »ACO», που αναπτύχθηκε από τη Valve ως εναλλακτική λύση για τον μεταγλωττιστή shader LLVM.

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

Η αλλαγή από τον ελεγκτή RADV στο νέο backend ήταν δυνατή μετά την επίτευξη ισοτιμίας στη λειτουργικότητα ACO με το παλιό AMD που αναπτύχθηκε για το πρόγραμμα οδήγησης AMDGPU, το οποίο εξακολουθεί να χρησιμοποιείται στο πρόγραμμα οδήγησης RadeonSI OpenGL.

Οι δοκιμές από τη Valve έδειξαν ότι το ACO είναι σχεδόν διπλάσιο από το μεταγλωττιστή AMDGPU shader build και δείχνει αύξηση του FPS σε ορισμένα παιχνίδια όταν εκτελείται σε συστήματα με το πρόγραμμα οδήγησης RADV.

Τα προγράμματα οδήγησης AMD OpenGL και Vulkan χρησιμοποιούν αυτήν τη στιγμή έναν μεταγλωττιστή shader που αποτελεί μέρος του έργου LLVM upstream. Αυτό το έργο είναι τεράστιο και έχει πολλούς διαφορετικούς στόχους, και η ηλεκτρονική συλλογή παιχνιδιών shaders είναι μόνο ένας από αυτούς. 

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

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

ACO είναι γραμμένο σε C ++, ανέπτυξε λαμβάνοντας υπόψη τη δυνατότητα εφαρμογής για τη συλλογή JIT, και χρησιμοποιήστε τα γρήγορα για να επαναλάβετε δομές δεδομένων, αποφεύγοντας δομές που βασίζονται σε δείκτη, όπως συνδεδεμένες λίστες και συμβολοσειρές από τη χρήση def Η ενδιάμεση αναπαράσταση του κώδικα βασίζεται πλήρως στο SSA (Single Static Allocation) και επιτρέπει την κατανομή των εγγραφών, υπολογίζοντας με ακρίβεια την εγγραφή βάσει του shader.

Η ενδιάμεση αναπαράσταση του κώδικα βασίζεται πλήρως στο SSA (Single Static Allocation) και επιτρέπει την κατανομή των εγγραφών, υπολογίζοντας με ακρίβεια την εγγραφή με βάση το shader.

Προς το παρόν υποστηρίζονται μόνο pixel (θραύσματα) και υπολογίστε shaders σε διακριτές GPU AMD (dGPU VI +). Ωστόσο, η ACO συλλέγει ήδη σωστά shaders για όλα τα δοκιμασμένα παιχνίδια, συμπεριλαμβανομένων σύνθετων shaders από το Shadow of the Tomb Raider και το Wolfenstein II.

Το προτεινόμενο πρωτότυπο ACO για το τεστ είναι σχεδόν διπλάσιο από τον μεταγλωττιστή AMDGPU shader και δείχνει αύξηση του FPS σε ορισμένα παιχνίδια όταν εκτελούνται σε συστήματα με τον ελεγκτή RADV.

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

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

Επιπλέον, Η αποφυγή του LLVM καθιστά δυνατή την εφαρμογή μιας πιο επιθετικής ανάλυσης ασυμφωνίες και καλύτερη διαχείριση φορτίου καταγραφής, επιτρέποντας πιο αποτελεσματική παραγωγή εκτελέσιμων αρχείων.

Τέλος, είναι επίσης Είναι σημαντικό να σημειωθεί ότι αυτή τη στιγμή το ACO λειτουργεί μόνο για τον ελεγκτή Mesa RADV Vulkan. Αλλά οι προγραμματιστές ACO επιβεβαίωσαν ότι το επόμενο βήμα τους θα είναι να ξεκινήσουν να εργάζονται για την επέκταση των δυνατοτήτων του ACO για την υποστήριξη του προγράμματος οδήγησης OpenGL RadeonSI, έτσι ώστε στο μέλλον και για αυτό το πρόγραμμα οδήγησης, το ACO μπορεί να αντικαταστήσει τον προεπιλεγμένο μεταγλωττιστή LLVM shader. .

Πόσο εκείνοι που προτιμούν να συνεχίσουν με το backend που χρησιμοποιήθηκε προηγουμένως από τον μεταγλωττιστή shader LLVM, μπορούν να επιστρέψουν σε αυτό, απλά πρέπει να αλλάξουν μια μεταβλητή.

Η μεταβλητή περιβάλλοντος που παρέχεται για την πραγματοποίηση αυτής της αλλαγής είναι "RADV_DEBUG = llvm".


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   VaryHeavy dijo

    Και πώς επιλέγει ένας χρήστης με ποιο backend να τρέξει ένα παιχνίδι; Τι αρχεία πρέπει να τροποποιήσει;