Η Collabora αναπτύσσει ένα πρόσθετο για την εκτέλεση των OpenCL και OpenGL πάνω από το DirectX

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

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

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

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

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

Η Collabora αναπτύσσει ένα πρόσθετο για την εκτέλεση των OpenCL και OpenGL πάνω από το DirectX

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

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο