Οι προγραμματιστές της Collabora παρουσίασαν έναν νέο ελεγκτή Gallium για το Mesa

Ελεγκτής συνεργασίας

Πρόσφατα Κυκλοφόρησαν προγραμματιστές Collabora μέσω μιας ανάρτησης ιστολογίου, το νέο χειριστήριο Gallium για Mesa, που εφαρμόζει ένα ενδιάμεσο στρώμα για να οργανώσετε το OpenCL 1.2 και το OpenGL 3.3 API σχετικά με προγράμματα οδήγησης με υποστήριξη DirectX 12 (D3D12) και ότι ο πηγαίος κώδικας τους κυκλοφορεί με άδεια MIT.

Ο προτεινόμενος ελεγκτής θα σάς επιτρέπει να χρησιμοποιείτε το Mesa σε συσκευές που δεν είναι αρχικά συμβατές με OpenCL και OpenGL και επίσης ως αφετηρία για τη μεταφορά εφαρμογών OpenGL / OpenCL για εργασία στο D3D12. Για κατασκευαστές GPU, το υποσύστημα επιτρέπει την παροχή υποστήριξης για OpenCL και OpenGL, με προγράμματα οδήγησης που υποστηρίζουν μόνο το D3D12.

Στην ανάρτηση ιστολογίου τους, οι προγραμματιστές μοιράζονται:

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

Σχετικά σχέδια, παρατηρείται η επίτευξη της πλήρους έγκρισης των δοκιμών του Υποστήριξη OpenCL 1.2 και OpenGL 3.3, επαλήθευση συμβατότητας με εφαρμογές, καθώς και βέλτιστες πρακτικές στην κύρια σύνθεση Mesa.

Σχετικά με το νέο χειριστήριο

Η ανάπτυξη του νέου ελεγκτή πραγματοποιείται σε συνεργασία με μηχανικούς της Microsoft να αναπτύξει εργαλεία D3D11On12 σε κιτ μεταφοράς D3D11 και βιβλιοθήκη D3D12 D3D12TranslationLayer, καθώς και τυπικά γραφικά πρωτόγονα εργαλεία πάνω από το D3D12.

Η εφαρμογή περιλαμβάνει πρόγραμμα οδήγησης Gallium, μεταγλωττιστή OpenCL, ο χρόνος εκτέλεσης OpenCL και ο μεταγλωττιστής shader NIR-to-DXIL, ο οποίος μετατρέπει την ενδιάμεση αναπαράσταση των shader NIR που χρησιμοποιούνται στο Mesa σε δυαδική μορφή DXIL (ενδιάμεση γλώσσα DirectX), συμβατή με το DirectX 12 και βασίζεται στον κωδικό bit LLVM 3.7 (Microsoft Το DirectX Shader Compiler είναι ουσιαστικά ένα εκτεταμένο πιρούνι του LLVM 3.7). Ο μεταγλωττιστής OpenCL προετοιμάστηκε με βάση την εμπειρία του έργου LLVM και την εργαλειοθήκη SPIRV-LLVM

Αυτή η εργασία βασίζεται σε πολλά προηγούμενα έργα. Πρώτα απ 'όλα, το χτίζουμε χρησιμοποιώντας το Mesa 3D, με τη διεπαφή Gallium ως βάση για το επίπεδο OpenGL και το NIR ως βάση για τον μεταγλωττιστή OpenCL. Χρησιμοποιούμε επίσης τον μεταφραστή LLVM και τον Khronos SPIRV-LLVM ως μεταγλωττιστή.

Επιπλέον, αξιοποιούμε την εμπειρία της Microsoft στη δημιουργία του επιπέδου μετάφρασης D3D12, καθώς και τη δική μας εμπειρία στην ανάπτυξη του Zink.

Ο πηγαίος κώδικας OpenCL μεταγλωττίζεται με clang στον ενδιάμεσο ψευδοκώδικα LLVM (LLVM IR), ο οποίος στη συνέχεια μετατρέπεται σε ενδιάμεση αναπαράσταση του πυρήνα OpenCL σε μορφή SPIR-V.

Οι πυρήνες στην αναπαράσταση SPIR-V μεταφέρονται στο Mesa, μεταφράστηκε σε μορφή NIR, βελτιστοποιήθηκε και μεταφέρθηκε σε NIR-to-DXIL για τη δημιουργία κατάλληλων υπολογιστικών shader DXIL για εκτέλεση GPU χρησιμοποιώντας χρόνο εκτέλεσης με βάση το DirectX 12. Αντί να χρησιμοποιήσετε το Clover στην εφαρμογή OpenCL Mesa, προτείνεται ένας νέος χρόνος εκτέλεσης OpenCL, ο οποίος επιτρέπει περισσότερες απευθείας μετατροπές στο DirectX 12 API.

Τα προγράμματα οδήγησης OpenCL και OpenGL προετοιμάζονται χρησιμοποιώντας τη διεπαφή Gallium παρέχεται στο Mesa, το οποίο σας επιτρέπει να παρακάμψετε τις λεπτομέρειες του OpenGL κατά τη δημιουργία προγραμμάτων οδήγησης και να μεταφράζετε κλήσεις OpenGL σε οντότητες που είναι πιο κοντά στα γραφικά πρωτότυπα που λειτουργούν οι σύγχρονες GPU.

Το πρόγραμμα οδήγησης Gallium δέχεται εντολές OpenGL και με τη συμμετοχή του μεταφραστή NIR-to-DXIL, δημιουργεί buffer εντολών που εκτελούνται στην GPU χρησιμοποιώντας το πρόγραμμα οδήγησης D3D12.

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

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

Πρώτα απ 'όλα, πρέπει να φτάσουμε στο επίπεδο των δυνατοτήτων που θέλουμε. Οι στόχοι μας αυτή τη στιγμή είναι να περάσουμε τον έλεγχο συμμόρφωσης για OpenCL 1.2 και OpenGL 3.3. Έχουμε πολύ δρόμο ακόμα, αλλά με λίγη σκληρή δουλειά και ιδρώτα, είμαι σίγουρος ότι θα φτάσουμε εκεί.

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


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

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

*

*

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