Δημοσιεύτηκε το πρότυπο γραφικών Vulkan 1.3

Μετά από δύο χρόνια δουλειάς, η κοινοπραξία προτύπων γραφικών Khronos δημοσίευσε την προδιαγραφή Vulkan 1.3, η οποία ορίζει ένα API για πρόσβαση στα γραφικά και τις υπολογιστικές δυνατότητες των GPU. Η νέα προδιαγραφή ενσωματώνει διορθώσεις και επεκτάσεις που συσσωρεύτηκαν σε διάστημα δύο ετών. Σημειώνεται ότι οι απαιτήσεις της προδιαγραφής Vulkan 1.3 έχουν σχεδιαστεί για εξοπλισμό γραφικών κλάσης OpenGL ES 3.1, ο οποίος θα διασφαλίζει υποστήριξη για το νέο API γραφικών σε όλες τις GPU που υποστηρίζουν Vulkan 1.2. Τα εργαλεία Vulkan SDK προγραμματίζεται να δημοσιευτούν στα μέσα Φεβρουαρίου. Εκτός από τις κύριες προδιαγραφές, σχεδιάζεται να προσφερθούν πρόσθετες επεκτάσεις για φορητές και επιτραπέζιους υπολογιστές μεσαίας και προηγμένης κατηγορίας, οι οποίες θα υποστηρίζονται ως μέρος της έκδοσης «Vulkan Milestone».

Ταυτόχρονα, παρουσιάζεται σχέδιο υλοποίησης υποστήριξης για τις νέες προδιαγραφές και πρόσθετες επεκτάσεις σε κάρτες γραφικών και προγράμματα οδήγησης συσκευών. Η Intel, η AMD, η ARM και η NVIDIA ετοιμάζονται να κυκλοφορήσουν προϊόντα που υποστηρίζουν το Vulkan 1.3. Για παράδειγμα, η AMD ανακοίνωσε ότι σύντομα θα υποστηρίξει το Vulkan 1.3 στη σειρά καρτών γραφικών AMD Radeon RX Vega, καθώς και σε όλες τις κάρτες που βασίζονται στην αρχιτεκτονική AMD RDNA. Η NVIDIA ετοιμάζεται να δημοσιεύσει προγράμματα οδήγησης με υποστήριξη για Vulkan 1.3 για Linux και Windows. Η ARM θα προσθέσει υποστήριξη για το Vulkan 1.3 στις GPU του Mali.

Βασικές καινοτομίες:

  • Έχει υλοποιηθεί υποστήριξη για απλοποιημένα περάσματα απόδοσης (Βελτιστοποίηση περασμάτων απόδοσης, 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, η οποία μπορεί να χρησιμοποιηθεί για τη βελτιστοποίηση της απόδοσης των πλαισίων μηχανικής εκμάθησης χάρη στην επιτάχυνση υλικού των λειτουργιών του προϊόντος με κουκκίδες.
  • Περιλαμβάνονται συνολικά 23 νέες επεκτάσεις:
    • VK_KHR_copy_commands2
    • VK_KHR_dynamic_rendering
    • 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 έχει ενημερωθεί για να ορίσει μια ενδιάμεση αναπαράσταση shader που είναι καθολική για όλες τις πλατφόρμες και μπορεί να χρησιμοποιηθεί τόσο για γραφικά όσο και για παράλληλους υπολογιστές. Το SPIR-V περιλαμβάνει τον διαχωρισμό μιας ξεχωριστής φάσης μεταγλώττισης shader σε μια ενδιάμεση αναπαράσταση, η οποία σας επιτρέπει να δημιουργήσετε frontends για διάφορες γλώσσες υψηλού επιπέδου. Με βάση διάφορες υλοποιήσεις υψηλού επιπέδου, δημιουργείται ξεχωριστά ένας ενδιάμεσος κώδικας, ο οποίος μπορεί να χρησιμοποιηθεί από προγράμματα οδήγησης OpenGL, Vulkan και OpenCL χωρίς τη χρήση του ενσωματωμένου μεταγλωττιστή shader.
  • Προτείνεται η έννοια των προφίλ συμβατότητας. Η Google είναι η πρώτη που κυκλοφόρησε ένα βασικό προφίλ για την πλατφόρμα Android, το οποίο θα διευκολύνει τον προσδιορισμό του επιπέδου υποστήριξης για προηγμένες δυνατότητες Vulkan σε μια συσκευή πέρα ​​από τις προδιαγραφές Vulkan 1.0. Για τις περισσότερες συσκευές, η υποστήριξη προφίλ μπορεί να παρέχεται χωρίς εγκατάσταση ενημερώσεων OTA.

Ας θυμηθούμε ότι το Vulkan API διακρίνεται για τη ριζική απλοποίηση των προγραμμάτων οδήγησης, τη μεταφορά της παραγωγής εντολών GPU στην πλευρά της εφαρμογής, τη δυνατότητα σύνδεσης επιπέδων εντοπισμού σφαλμάτων, την ενοποίηση του API για διάφορες πλατφόρμες και τη χρήση προμεταγλωττισμένου ενδιάμεση αναπαράσταση κώδικα για εκτέλεση στην πλευρά της GPU. Για να διασφαλίσει υψηλή απόδοση και προβλεψιμότητα, το Vulkan παρέχει στις εφαρμογές άμεσο έλεγχο των λειτουργιών GPU και εγγενή υποστήριξη για GPU multi-threading, η οποία ελαχιστοποιεί την επιβάρυνση του προγράμματος οδήγησης και καθιστά τις δυνατότητες από την πλευρά του προγράμματος οδήγησης πολύ απλούστερες και πιο προβλέψιμες. Για παράδειγμα, λειτουργίες όπως η διαχείριση μνήμης και ο χειρισμός σφαλμάτων, που υλοποιούνται στο OpenGL στην πλευρά του προγράμματος οδήγησης, μετακινούνται στο επίπεδο εφαρμογής στο Vulkan.

Το Vulkan εκτείνεται σε όλες τις διαθέσιμες πλατφόρμες και παρέχει ένα ενιαίο API για επιτραπέζιους υπολογιστές, κινητά και web, επιτρέποντας τη χρήση ενός κοινού API σε πολλές GPU και εφαρμογές. Χάρη στην αρχιτεκτονική πολλαπλών επιπέδων του Vulkan, που σημαίνει εργαλεία που λειτουργούν με οποιαδήποτε GPU, οι OEM μπορούν να χρησιμοποιούν βιομηχανικά πρότυπα εργαλεία για έλεγχο κώδικα, εντοπισμό σφαλμάτων και δημιουργία προφίλ κατά την ανάπτυξη. Για τη δημιουργία shaders, προτείνεται μια νέα φορητή ενδιάμεση αναπαράσταση, το SPIR-V, που βασίζεται στο LLVM και στην κοινή χρήση βασικών τεχνολογιών με το OpenCL. Για τον έλεγχο συσκευών και οθονών, η Vulkan προσφέρει τη διεπαφή WSI (Window System Integration), η οποία επιλύει περίπου τα ίδια προβλήματα με το EGL στο OpenGL ES. Η υποστήριξη WSI είναι διαθέσιμη εξαρχής στο Wayland - όλες οι εφαρμογές που χρησιμοποιούν Vulkan μπορούν να εκτελεστούν σε περιβάλλον μη τροποποιημένων διακομιστών Wayland. Η δυνατότητα εργασίας μέσω WSI παρέχεται επίσης για Android, X11 (με DRI3), Windows, Tizen, macOS και iOS.

Πηγή: opennet.ru

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