Το έργο Wine κυκλοφόρησε το Vkd3d 1.2 με υλοποίηση Direct3D 12

Wine Project δημοσιεύεται απελευθέρωση πακέτου vkd3d 1.2 με μια υλοποίηση Direct3D 12 που λειτουργεί μέσω μετάδοσης κλήσεων στο API γραφικών Vulkan. Το πακέτο περιλαμβάνει βιβλιοθήκες libvkd3d με υλοποιήσεις Direct3D 12, libvkd3d-shader με μεταφραστή μοντέλων shader 4 και 5 και libvkd3d-utils με λειτουργίες για την απλοποίηση της μεταφοράς εφαρμογών Direct3D 12, καθώς και ένα σύνολο παραδειγμάτων επίδειξης, συμπεριλαμβανομένης μιας θύρας του glxgears στο Direct3D 12. Κωδικός έργου διανέμονται από άδεια σύμφωνα με το LGPLv2.1.

βιβλιοθήκη libvkd3d υποστηρίζει Τα περισσότερα από τα χαρακτηριστικά του Direct3D 12, συμπεριλαμβανομένων γραφικών και υπολογιστικών εγκαταστάσεων, ουρές και λίστες εντολών, λαβές και λαβές σωρών, υπογραφές ρίζας, πρόσβαση εκτός σειράς, Δειγματοληψίες, υπογραφές εντολών, σταθερές ρίζας, έμμεση απόδοση, μέθοδοι Clear*() και Αντιγραφή*().

Στο libvkd3d-shader, υλοποιείται η μετάφραση του bytecode των μοντέλων shader 4 και 5 σε μια ενδιάμεση αναπαράσταση SPIR-V. Υποστηρίζονται σκίαστρες Vertex, pixel, tessellation, compute και απλής γεωμετρίας, σειριοποίηση υπογραφής ρίζας και deserialization. Οι οδηγίες Shader περιλαμβάνουν αριθμητικές, ατομικές και bit λειτουργίες, σύγκριση και τελεστές ελέγχου ροής δεδομένων, δειγματοληψία, συλλογή και φόρτωση εντολών, λειτουργίες πρόσβασης χωρίς σειρά (UAV, Unordered Access View).

Από τα πιο σημαντικά καινοτομίες στο Vkd3d 1.2 επισημαίνονται τα ακόλουθα:

  • Η βιβλιοθήκη libvkd3d-shader είναι έτοιμη για χρήση σε έργα τρίτων.
  • Υποστήριξη shader Tessellation.
  • Υποστήριξη για μετατροπή, σειριοποίηση και αποσειριοποίηση υπογραφών root (vkd3d_serialize_versioned_root_signature() και vkd3d_create_versioned_root_signature_deserializer()).
  • Υποστήριξη για έξοδο ροής.
  • Εφαρμογή πολλών λειτουργιών Direct3D 12 που δεν ήταν διαθέσιμες στο παρελθόν, συμπεριλαμβανομένης της υποστήριξης για πολλαπλή δειγματοληψία, κράτηση πόρων,
    έμμεση ευρετηριασμένη απόδοση, απόδοση βάθους χωρίς σκίαση εικονοστοιχείων, ταυτόχρονη πρόσβαση σε πόρους από διαφορετικές ουρές εντολών, μηδενικές προβολές.

  • Προστέθηκαν μεταβλητές περιβάλλοντος: VKD3D_CONFIG για να ορίσετε επιλογές για αλλαγή της συμπεριφοράς libvkd3d και VKD3D_VULKAN_DEVICE για παράκαμψη της συσκευής για το Vulkan API.
  • Προστέθηκε υποστήριξη για οδηγίες bufinfo shader,
    eval_centroid,
    eval_sample_index,
    ld2ms,
    δείγμα_β,
    δείγμα_δ,
    δείγμα_πληροφοριών,
    δείγμαπος.

Πηγή: opennet.ru

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