Το έργο Wine δημοσίευσε το Vkd3d 1.11 με υλοποίηση Direct3D 12

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

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

Στη νέα έκδοση:

  • Προστέθηκε αρχική υποστήριξη για τη μεταγλώττιση παλαιού bytecode Direct3D σε ενδιάμεση αναπαράσταση shader SPIR-V.
  • Ο μεταγλωττιστής HLSL έχει προσθέσει αρχική υποστήριξη για τη μεταγλώττιση προφίλ εφέ Direct3D ('fx_2_0', 'fx_4_0', 'fx_4_1' και 'fx_5_0').
  • Προστέθηκε πειραματική υποστήριξη για τη μεταγλώττιση της DirectX Intermediate Language (DXIL) σε αναπαράσταση SPIR-V και οδηγίες συναρμολόγησης shader Direct3D.
  • Το HLSL υποστηρίζει πλέον τα προφίλ "fx_2_0", "fx_4_0", "fx_4_1" και "fx_5_0", υλοποιεί τις ενσωματωμένες συναρτήσεις acos(), asin(), atan() και atan2() και παρέχει υποστήριξη για πόρους "Buffer".
  • Προστέθηκε μια βελτιστοποίηση που εκτελεί ασύγχρονες ενημερώσεις περιγραφέων, κάτι που μπορεί να οδηγήσει σε επιταχύνσεις για εφαρμογές που ενημερώνουν μεγάλο αριθμό περιγραφέων σε κάθε πλαίσιο.
  • Ενεργοποιήθηκε η χρήση των επεκτάσεων Vulkan VK_EXT_mutable_descriptor_type και VK_EXT_shader_viewport_index_layer για τη βελτίωση της αποτελεσματικότητας της εργασίας με την ομάδα περιγραφέων και την επιτάχυνση της απόδοσης των συστοιχιών shader κορυφών και tessellation.
  • Προστέθηκε υποστήριξη για τις διεπαφές προγραμματισμού ID3D12Device7 και ID3D12Resource2. Η μέθοδος GetResourceAllocationInfo3() έχει προστεθεί στη διεπαφή ID12D4Device1.
  • Προστέθηκε υποστήριξη για διεπαφές D3DReflect() και D3DDisassemble().
  • Υλοποιημένα ερωτήματα επαλήθευσης D3D12_FEATURE_D3D12_OPTIONS6 D3D12_FEATURE_D3D12_OPTIONS7, D3D12_FEATURE_D3D12_OPTIONS8, D3D12_FEATURE_D3D12_OPTIONS9, D3D12_FEATURE_D3D12_OPTIONS10, D3D12_FEATURE_D3D12_OPTIONS11, D3D12_FEATURE_D3D12_OPTIONS12, D3D12_FEATURE_D3D12_OPTIONS13.
  • Προστέθηκαν νέες επιλογές δημιουργίας: VKD3D_SHADER_COMPILE_OPTION_FEATURE, VKD3D_SHADER_COMPILE_OPTION_FEATURE_INT64, VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64, VKD3D_SHADER_API_VERSION_1_10 και VKD3D_SHADER_SPIRV_EXTENSION_EXT_VIEWPORT_INDEX_LAYER.
  • Οι συναρτήσεις D3D12CreateDeviceVKD3D() και D3D12CreateDevice() χρησιμοποιούν τις επεκτάσεις Vulkan VK_KHR_android_surface, VK_KHR_wayland_surface, VK_KHR_win32_surface, VK_KHR_xlib_surface, VK_EXT_metal_surface και VK_MVK_ios_surface.

Πηγή: opennet.ru

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