Οι προγραμματιστές της βιβλιοθήκης GTK ανακοίνωσαν την ετοιμότητα δύο νέων μηχανών απόδοσης, της "ngl" και της "vulkan", οι οποίες χρησιμοποιούν τα API γραφικών OpenGL (GL 3.3+ και GLES 3.0+) και Vulkan. Οι νέες μηχανές περιλαμβάνονται στην πειραματική έκδοση GTK 4.13.6. Η μηχανή ngl χρησιμοποιείται πλέον από προεπιλογή στον πειραματικό κλάδο GTK, αλλά εάν εντοπιστούν σημαντικά προβλήματα, η παλιά μηχανή απόδοσης "gl" θα επιστραφεί στον επόμενο σταθερό κλάδο 4.14.
Οι νέες μηχανές είναι τοποθετημένες ως ενοποιημένες και συναρμολογημένες από μία ενιαία βάση κώδικα. Η ουσία της ενοποίησης έγκειται στο ότι το Vulkan API χρησιμοποιείται ως βάση, πάνω στο οποίο δημιουργείται ένα ξεχωριστό επίπεδο αφαίρεσης για το OpenGL, λαμβάνοντας υπόψη τις διαφορές μεταξύ OpenGL και Vulkan. Αυτή η προσέγγιση επέτρεψε και στις δύο μηχανές να χρησιμοποιούν μια κοινή υποδομή για την επεξεργασία του γραφήματος σκηνής, των μετασχηματισμών, της προσωρινής αποθήκευσης υφών και των γλύφων. Η ενοποίηση απλοποίησε επίσης σημαντικά τη συντήρηση της βάσης κώδικα και των δύο μηχανών και τη διατήρησή τους ενημερωμένες και συγχρονισμένες.
Σε αντίθεση με την παλιά μηχανή gl, η οποία χρησιμοποιούσε ένα ξεχωριστό απλό shader για κάθε τύπο rendernode και περιοδικά αναταξινόμηνε τα δεδομένα κατά την απόδοση εκτός οθόνης, οι νέες μηχανές χρησιμοποιούν ένα σύνθετο shader (ubershader) αντί για απόδοση εκτός οθόνης, ερμηνεύοντας τα δεδομένα από το buffer. Στην τρέχουσα μορφή της, η νέα υλοποίηση εξακολουθεί να υστερεί σε σχέση με την παλιά όσον αφορά τις βελτιστοποιήσεις, καθώς η κύρια εστίαση στο τρέχον στάδιο είναι η σωστή λειτουργία και η ευκολία συντήρησης.
Νέες δυνατότητες που λείπουν από την παλιά μηχανή "gl":
- Εξομάλυνση περιγραμμάτων - σας επιτρέπει να διατηρήσετε μικρές λεπτομέρειες και να επιτύχετε πιο ομαλά περιγράμματα.

- Δημιουργήστε αυθαίρετες διαβαθμίσεις που μπορούν να χρησιμοποιήσουν οποιονδήποτε αριθμό χρωμάτων και εξομάλυνση (στη μηχανή "gl", υποστηρίχθηκαν μόνο γραμμικές, ακτινικές και κωνικές διαβαθμίσεις με 6 χρώματα στοπ).

- Κλασματική κλιμάκωση, η οποία σας επιτρέπει να ορίσετε μη ακέραιες τιμές κλίμακας, για παράδειγμα, όταν χρησιμοποιείτε κλίμακα 125% για ένα παράθυρο 1200x800, θα εκχωρηθεί ένα buffer 1500x1000 και όχι 2400x1600 όπως στην παλιά μηχανή.
- Υποστήριξη για την τεχνολογία DMA-BUF για τη χρήση πολλαπλών GPU και την μεταφορά μεμονωμένων λειτουργιών σε μια άλλη GPU.
- Πολλοί κόμβοι απόδοσης που ήταν προβληματικοί στην παλιά υλοποίηση αντιμετωπίζονται πλέον σωστά.
Οι περιορισμοί των νέων μηχανών περιλαμβάνουν την έλλειψη υποστήριξης για κλασματική τοποθέτηση και κόμβους glshader, οι οποίοι ήταν σε μεγάλο βαθμό συνδεδεμένοι με τα χαρακτηριστικά της παλιάς μηχανής και δεν χρειάζονταν πλέον μετά την προσθήκη κόμβων μάσκας και υφών με διαφάνεια. Αναφέρεται επίσης η πιθανότητα πιθανών προβλημάτων με τα προγράμματα οδήγησης γραφικών λόγω της αλλαγής στη μέθοδο εργασίας με τα προγράμματα οδήγησης.
Στο μέλλον, δεν αποκλείεται η δημιουργία μηχανών απόδοσης που χρησιμοποιούν Metal στο νέο ενοποιημένο μοντέλο. macOS και DirectX σε Windows, αλλά η δημιουργία τέτοιων μηχανών περιπλέκεται από τη χρήση άλλων γλωσσών για shaders (οι μηχανές "ngl" και "vulkan" χρησιμοποιούν τη γλώσσα GLSL, επομένως για το Metal και το Direct θα πρέπει είτε να αντιγράψετε τους shaders είτε να χρησιμοποιήσετε ένα layer που βασίζεται στο σύνολο εργαλείων SPIRV-Cross).
Τα μελλοντικά σχέδια περιλαμβάνουν υποστήριξη HDR και σωστή διαχείριση χρωμάτων, απόδοση διαδρομής από την πλευρά της GPU, απόδοση γλυφών, απόδοση εκτός κύριου νήματος και βελτιστοποιήσεις απόδοσης για παλαιότερες και συσκευές χαμηλότερης κατηγορίας. Στην τρέχουσα μορφή της, η απόδοση της μηχανής vulkan είναι κοντά σε αυτήν της παλιάς μηχανής gl. Η μηχανή ngl υστερεί σε απόδοση από την παλιά μηχανή gl, αλλά εξακολουθεί να είναι ικανή για απόδοση στα 60 ή 144 FPS. Αυτό αναμένεται να αλλάξει μετά την ολοκλήρωση των βελτιστοποιήσεων.
Πηγή: opennet.ru

