發展圖形標準的 Khronos 聯盟,
規格 ,它定義了用於存取GPU的圖形和計算功能的API。新規範整合了兩年來累積的修復,並 。支援新版 Vulkan 的驅動程式已經可用 英特爾公司 、ARM、Imagination Technologies 和 。 Mesa 為驅動程式提供 Vulkan 1.2 支持 (AMD 卡)和 (英特爾)。調試器中也實現了 Vulkan 1.2 支持 , 以及一組範例 .
主要的 :
- 著色器程式語言的實現,直到它準備好被廣泛使用 由微軟為 DirectX 開發。 Vulkan 支援 HLSL,允許在 Vulkan 和基於 DirectX 的應用程式中運行相同的 HLSL 著色器,並簡化了從 HLSL 到 SPIR-V 的轉換。建議使用標準編譯器編譯著色器
微軟於 2017 年開放,基於 LLVM 技術。 Vulkan 支援透過單獨的後端實現,允許將 HLSL 轉換為 SPIR-V 著色器的中間表示。該實作不僅涵蓋所有內建功能
HLSL,包括數學類型、控制流程、函數、集合、資源類型、命名空間、Shader Model 6.2、結構和方法,同時也支援 Vulkan 專用擴展,例如 NVIDIA 的 VKRay。 《天命 2》、《荒野大鏢客 XNUMX》、《刺客教條:奧德賽》和《古墓奇兵》等遊戲已能夠在 Vulkan 上以 HLSL 模式運作。 - 規範更新 它定義了跨所有平台的著色器通用中間表示,可用於圖形和平行計算。
SPIR-V 涉及隔離一個單獨的階段,用於將著色器編譯為中間表示,這允許為各種高階語言建立前端。基於各種高級實現,單獨產生單一中間程式碼,可供OpenGL、Vulkan 和OpenCL 驅動程式使用,而無需使用內建著色器編譯器。
- Vulkan 核心 API 包含 23 個擴展,可提高效能、增強視覺品質並簡化開發。新增的擴充包括:
- (時間軸訊號量),統一了主機和裝置佇列的同步(允許使用一個原語實現裝置和主機之間的全向同步,而無需使用單獨的 VkFence 和 VkSemaphore 原語)。新的信號量由單調遞增的 64 位元值表示,該值可在多個執行緒中監視和更新。

- 能夠在著色器中使用低精度數字類型;
- HLSL相容的記憶體佈局選項;
- 無綁定資源,透過使用系統記憶體和 GPU 記憶體的共享虛擬空間,消除了著色器可用資源數量的限制;
- ,定義了並發執行的執行緒如何存取共享資料和同步操作;
- 在多個著色器之間重複使用佈局描述符;
- 緩衝鏈結。
新增擴充功能的完整清單:
- (時間軸訊號量),統一了主機和裝置佇列的同步(允許使用一個原語實現裝置和主機之間的全向同步,而無需使用單獨的 VkFence 和 VkSemaphore 原語)。新的信號量由單調遞增的 64 位元值表示,該值可在多個執行緒中監視和更新。
- 50 多個新結構和 13 個新功能;
- 已經為典型的目標平台準備了規範的縮短版本,簡化了尚未支援所有擴展的平台上的工作,並且允許無需選擇性激活基本的 Vulkan API 功能。
- 專案工作仍在繼續,以確保與其他圖形 API 的可移植性。例如,Vulkan 提供了允許 OpenGL 串流傳輸的擴充()、OpenCL(, )、OpenGL ES (GLOVE、Angle) 和 DirectX (, ),反之亦然,以確保 Vulkan 在沒有原生支援的平台上運作( и 在 OpenGL 和 DirectX 上工作, 以及用於在 Metal 上工作的 gfx-rs)。
添加了擴充功能以提高與 DirectX 和 HLSL 的兼容性
VK_KHR_host_query_reset、VK_KHR_uniform_buffer_standard_layout、VK_EXT_scalar_block_layou、VK_KHR_separate_stencil_usage、VK_KHR_separate_depth_stencil_layouts 和 SPIRilV 實現了特定的功能。
未來計劃包括開發機器學習、光線追蹤、視訊編碼和解碼的擴展、對 VRS(可變速率著色)和網格著色器的支援。
我們提醒您,Vulkan API 徹底簡化驅動程式、將 GPU 命令產生轉移到應用程式端、連接偵錯層的能力、統一不同平台的 API 以及使用預編譯的程式碼中間表示在 GPU 端執行。為了確保高效能和可預測性,Vulkan 為應用程式提供了直接控制 GPU 操作的方法和對多執行緒 GPU 命令處理的原生支持,從而最大限度地減少了驅動程式開銷,並使驅動程式端功能變得更加簡單和可預測。例如,記憶體管理和錯誤處理等操作在驅動程式端以OpenGL實現,而在Vulkan中則移至應用程式層級。
Vulkan охватывает все доступные платформы и предоставляет единый API для настольных, мобильных систем и Web, позволяя использовать один общий API для различных графических процессоров и областей применения. Благодаря многослойной архитектуре Vulkan, подразумевающей создание инструментов, работающих с любыми GPU, производители оборудования могут использовать при разработке типовые инструменты для проверки кода, отладки и профилирования. Для создания шейдеров предлагается новое переносимое промежуточное представление SPIR-V, основанное на LLVM и использующее общие с OpenCL базовые технологии. Для управления устройствами и экранами в Vulkan предлагается интерфейс WSI (Window System Integration), решающий примерно те же задачи, что и EGL в OpenGL ES. Поддержка WSI из коробки доступна в Wayland — все приложения, использующие Vulkan, могут запускаться в окружении немодифицированных серверов Wayland. Возможность работы через WSI также обеспечена для AndroidX11(附 DRI3) Windows、Tizen、 macOS 和iOS。
來源: opennet.ru


