Μετά από δύο χρόνια εργασίας, η κοινοπραξία Khronos, η οποία αναπτύσσει πρότυπα γραφικών, δημοσίευσε την προδιαγραφή Vulkan 1.3, η οποία ορίζει ένα API για την πρόσβαση στις δυνατότητες γραφικών και υπολογιστών της GPU. Η νέα προδιαγραφή έχει ενσωματώσει διορθώσεις και επεκτάσεις που έχουν συσσωρευτεί κατά τη διάρκεια δύο ετών. Σημειώνεται ότι οι απαιτήσεις της προδιαγραφής Vulkan 1.3 έχουν σχεδιαστεί για υλικό γραφικών κλάσης OpenGL ES 3.1, το οποίο θα διασφαλίσει την υποστήριξη για το νέο API γραφικών σε όλες τις GPU που υποστηρίζουν το Vulkan 1.2. Το κιτ εργαλείων Vulkan SDK έχει προγραμματιστεί να δημοσιευτεί στα μέσα Φεβρουαρίου. Εκτός από την κύρια προδιαγραφή, έχει προγραμματιστεί να προσφέρει πρόσθετες επεκτάσεις για κινητές και επιτραπέζιες συσκευές μεσαίας και υψηλής τεχνολογίας, οι οποίες θα υποστηριχθούν ως μέρος της έκδοσης Vulkan Milestone.
Ταυτόχρονα, παρουσιάστηκε ένα σχέδιο για την εφαρμογή υποστήριξης για τη νέα προδιαγραφή και πρόσθετες επεκτάσεις σε κάρτες γραφικών και προγράμματα οδήγησης συσκευών. Προϊόντα που υποστηρίζουν το Vulkan 1.3 προετοιμάζονται από τις Intel, AMD, ARM και NVIDIA. Για παράδειγμα, η AMD ανακοίνωσε ότι σύντομα θα παρέχει υποστήριξη για το Vulkan 1.3 στη σειρά καρτών γραφικών AMD Radeon RX Vega, καθώς και σε όλες τις κάρτες που βασίζονται στην αρχιτεκτονική AMD RDNA. Η NVIDIA ετοιμάζεται να δημοσιεύσει προγράμματα οδήγησης που υποστηρίζουν το Vulkan 1.3 για... Linux и WindowsΗ ARM θα προσθέσει υποστήριξη Vulkan 1.3 στις GPU Mali.
Βασικές καινοτομίες:
- Υλοποιήθηκε υποστήριξη για απλοποιημένα περάσματα απόδοσης (Streamlining Render Passes, VK_KHR_dynamic_rendering), τα οποία σας επιτρέπουν να ξεκινήσετε την απόδοση χωρίς να δημιουργήσετε περάσματα απόδοσης και αντικείμενα framebuffer.
- Έχουν προστεθεί νέες επεκτάσεις για την απλοποίηση της διαχείρισης της μεταγλώττισης γραφικών pipeline (ένα σύνολο λειτουργιών που μετατρέπει τα πρωτόγονα και τις υφές των διανυσματικών γραφικών σε αναπαράσταση pixel).
- VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 — προσθέστε επιπλέον δυναμικές καταστάσεις για να μειώσετε τον αριθμό των μεταγλωττισμένων και συνδεδεμένων αντικειμένων κατάστασης.
- VK_EXT_pipeline_creation_cache_control - παρέχει προηγμένους ελέγχους σχετικά με το πότε και πώς να μεταγλωττίζονται οι αγωγοί.
- VK_EXT_pipeline_creation_feedback - Παρέχει πληροφορίες σχετικά με μεταγλωττισμένες διοχετεύσεις για τη διευκόλυνση της δημιουργίας προφίλ και της αποσφαλμάτωσης.
- Ορισμένες λειτουργίες έχουν μετακινηθεί από προαιρετικές σε υποχρεωτικές. Για παράδειγμα, η υλοποίηση αναφορών buffer (VK_KHR_buffer_device_address) και το μοντέλο μνήμης Vulkan, το οποίο καθορίζει τον τρόπο με τον οποίο τα ταυτόχρονα νήματα μπορούν να έχουν πρόσβαση σε κοινόχρηστα δεδομένα και λειτουργίες συγχρονισμού, είναι πλέον υποχρεωτικά.
- Οι παρεχόμενες δυνατότητες λεπτομερούς ελέγχου υποομάδων (VK_EXT_subgroup_size_control) επιτρέπουν στους προμηθευτές να παρέχουν υποστήριξη για πολλαπλά μεγέθη υποομάδων και στους προγραμματιστές να επιλέγουν το επιθυμητό μέγεθος.
- Παρέχεται η επέκταση VK_KHR_shader_integer_dot_product, η οποία μπορεί να χρησιμοποιηθεί για τη βελτιστοποίηση της εργασίας των πλαισίων μηχανικής μάθησης, χάρη στην επιτάχυνση υλικού των λειτουργιών των προϊόντων dot.
- Συνολικά, περιλαμβάνονται 23 νέες επεκτάσεις:
- VK_KHR_copy_commands2
- VK_KHR_δυναμική_απόδοση
- VK_KHR_format_feature_flags2
- VK_KHR_maintenance4
- VK_KHR_shader_integer_dot_product
- VK_KHR_shader_non_semantic_info
- VK_KHR_shader_terminate_invocation
- VK_KHR_συγχρονισμός2
- VK_KHR_zero_initialize_workgroup_memory
- VK_EXT_4444_ μορφές
- VK_EXT_extended_dynamic_state
- VK_EXT_extended_dynamic_state2
- VK_EXT_image_robustness
- VK_EXT_inline_uniform_block
- VK_EXT_pipeline_creation_cache_control
- VK_EXT_pipeline_creation_feedback
- VK_EXT_ιδιωτικά_δεδομένα
- VK_EXT_shader_demote_to_helper_inocation
- VK_EXT_subgroup_size_control
- VK_EXT_texel_buffer_alignment
- VK_EXT_texture_compression_astc_hdr
- VK_EXT_tooling_info
- VK_EXT_ycbcr_2plane_444_formats
- Προστέθηκε νέος τύπος αντικειμένου VkPrivateDataSlot. Υλοποιήθηκαν 37 νέες εντολές και περισσότερες από 60 δομές.
- Η προδιαγραφή SPIR-V 1.6 έχει ενημερωθεί, ορίζοντας μια καθολική ενδιάμεση αναπαράσταση των shaders για όλες τις πλατφόρμες, η οποία μπορεί να χρησιμοποιηθεί τόσο για γραφικά όσο και για παράλληλη υπολογιστική. Το SPIR-V υποδηλώνει την κατανομή μιας ξεχωριστής φάσης μεταγλώττισης των shaders σε μια ενδιάμεση αναπαράσταση, η οποία επιτρέπει τη δημιουργία frontends για διάφορες γλώσσες υψηλού επιπέδου. Με βάση διάφορες υλοποιήσεις υψηλού επιπέδου, δημιουργείται ξεχωριστά ένας ενιαίος ενδιάμεσος κώδικας, ο οποίος μπορεί να χρησιμοποιηθεί από προγράμματα οδήγησης OpenGL, Vulkan και OpenCL χωρίς τη χρήση ενσωματωμένου μεταγλωττιστή shader.
- Προτάθηκε η έννοια των προφίλ συμβατότητας. Η Google ήταν η πρώτη που ετοίμασε ένα βασικό προφίλ για την πλατφόρμα. Android, το οποίο θα απλοποιήσει τον προσδιορισμό του επιπέδου υποστήριξης της συσκευής για προηγμένες λειτουργίες Vulkan πέρα από την προδιαγραφή Vulkan 1.0. Για τις περισσότερες συσκευές, η υποστήριξη προφίλ θα επιτευχθεί χωρίς ενημερώσεις OTA.
Ας υπενθυμίσουμε ότι το Vulkan API είναι αξιοσημείωτο για τη ριζική απλοποίηση των προγραμμάτων οδήγησης, τη μεταφορά της δημιουργίας εντολών GPU στην πλευρά της εφαρμογής, τη δυνατότητα σύνδεσης επιπέδων εντοπισμού σφαλμάτων, την ενοποίηση του API για διάφορες πλατφόρμες και τη χρήση μιας προμεταγλωττισμένης ενδιάμεσης αναπαράστασης κώδικα για εκτέλεση στην πλευρά της GPU. Για να διασφαλιστεί η υψηλή απόδοση και η προβλεψιμότητα, το Vulkan παρέχει στις εφαρμογές τα μέσα για τον άμεσο έλεγχο των λειτουργιών της GPU και ενσωματωμένη υποστήριξη για πολυνηματική επεξεργασία εντολών GPU, η οποία ελαχιστοποιεί την επιβάρυνση που εισάγεται από το πρόγραμμα οδήγησης, και οι δυνατότητες που εφαρμόζονται στην πλευρά του προγράμματος οδήγησης απλοποιούνται σημαντικά και γίνονται πιο προβλέψιμες. Για παράδειγμα, λειτουργίες όπως η διαχείριση μνήμης και ο χειρισμός σφαλμάτων, που υλοποιούνται σε OpenGL στην πλευρά του προγράμματος οδήγησης, μεταφέρονται στο επίπεδο εφαρμογής στο Vulkan.
Το Vulkan καλύπτει όλες τις διαθέσιμες πλατφόρμες και παρέχει ένα ενιαίο API για υπολογιστές, κινητά και web, επιτρέποντας ένα ενιαίο, κοινό API σε διάφορες GPU και περιοχές εφαρμογών. Η πολυεπίπεδη αρχιτεκτονική του Vulkan, η οποία επιτρέπει τη δημιουργία εργαλείων που λειτουργούν με οποιαδήποτε GPU, επιτρέπει στους κατασκευαστές υλικού να αξιοποιούν κοινά εργαλεία για την αναθεώρηση κώδικα, τον εντοπισμό σφαλμάτων και τη δημιουργία προφίλ κατά την ανάπτυξη. Για τη δημιουργία shader, προσφέρεται μια νέα φορητή ενδιάμεση αναπαράσταση (IR) που ονομάζεται SPIR-V, βασισμένη σε LLVM και μοιράζεται βασικές τεχνολογίες με το OpenCL. Για τη διαχείριση συσκευών και οθονών, το Vulkan προσφέρει τη διεπαφή Window System Integration (WSI), η οποία εκτελεί παρόμοιες εργασίες με το EGL στο OpenGL ES. Η υποστήριξη WSI είναι διαθέσιμη άμεσα στο Wayland—όλες οι εφαρμογές που βασίζονται στο Vulkan μπορούν να εκτελούνται σε μη τροποποιημένο περιβάλλον. διακομιστές Wayland. Παρέχεται επίσης η δυνατότητα εργασίας μέσω WSI. Android, X11 (με DRI3), Windows, Tizen, macOS και iOS.
Πηγή: opennet.ru
