Podczas gdy wysokowydajny graficzny i obliczeniowy interfejs API Vulkan jest wspierany przez wielu dostawców, Microsoft i Apple to dwie godne uwagi organizacje, które nie poparły tego standardu Khronos Group. Jeśli chodzi o Microsoft, to oczywiście preferują on własny Direct3D. Jednak Microsoft przygotowuje się do przesłania swojego pierwszego rozszerzenia Vulkan.
W ramach przygotowań do przesłania pierwszego rozszerzenia Vulkan z dnia na dzień nastąpiło połączenie z Repozytorium specyfikacji Vulkan do dodawania prefiksu dostawcy „MSFT”.
Vk.xml ma teraz znacznik MSFT reprezentujący wszelkie postępujące rozszerzenia Microsoft Corporation.
Inżynierowie firmy Microsoft pracują nad warstwowym rozszerzeniem sterownika Vulkan. Intencją proponowanego rozszerzenia VK_MSFT_layered_driver jest pomoc wspólnemu programowi ładującemu Vulkan w lepszym radzeniu sobie z warstwami sterowników w celu poprawy sortowania urządzeń fizycznych. Oto ich opis problemu wyjaśniający sytuację, którą VK_MSFT_layered_driver ma nadzieję rozwiązać:
“Program ładujący Vulkan może sortować urządzenia fizyczne zgodnie z kryteriami specyficznymi dla platformy. Na przykład w systemie Windows program ładujący używa identyfikatorów LUID, aby ustawić urządzenia fizyczne w tej samej kolejności jako adaptery DXGI. Możliwe jest jednak posiadanie wielu sterowników Vulkan, które zapewniają obsługę tego samego urządzenia fizycznego, z których jeden jest „natywną” implementacją dostarczoną przez dostawcę, a drugi jest implementacją „warstwową” na innym interfejsie API. warstwowe implementacje obejmowałyby VulkanOn12 (aka Dozen), nałożony na D3D12 i MoltenVK, nałożony na Metal.
W systemie, w którym fizyczne urządzenie ma dwa możliwe sterowniki, porządek sortowania między nimi jest obecnie nieokreślony. Idealny porządek sortowania należy umieścić wszystkie natywne/niewarstwowe sterowniki posortowane przed wszystkimi warstwowymi sterownikami, ponieważ należy oczekiwać, że natywne sterowniki zapewnią większą funkcjonalność i wyższą wydajność, ponieważ nakładanie warstw z natury zwiększa narzut. Ale ładowacz nie ma sposobu, aby dowiedzieć się, który sterownik preferować.
Dodatkowym problemem, którego nie obejmuje ta specyfikacja, jest sytuacja, w której masz wiele „natywnych” sterowników dla jednego urządzenia fizycznego. W takim przypadku kolejność sortowania pozostaje nieokreślona, ponieważ poprawna kolejność między sterownikami nie jest oczywista.”
Z perspektywy Microsoftu próbują poprawić obsługę własnego sterownika Mesa Dzn dla Vulkan API na szczycie Direct3D 12. Jak wspomniano, to rozszerzenie może być również pomocne dla MoltenVK w Vulkan na szczycie Apple Graphics/Compute API.
Osoby zainteresowane warstwowymi rozszerzeniami sterowników mogą zobaczyć ten pull request dotyczący najnowszych dyskusji. W każdym razie fajnie jest widzieć, jak Microsoft przygotowuje swój pierwszy wkład w Vulkan.