Vulkan 1.3 グラフィックス標準が公開されました

1.3 年間の作業を経て、Khronos グラフィックス標準コンソーシアムは、GPU グラフィックスとコンピューティング機能にアクセスするための API を定義する Vulkan 1.3 仕様を公開しました。 新しい仕様には、3.1 年間にわたって蓄積された修正と拡張が組み込まれています。 Vulkan 1.2 仕様の要件は OpenGL ES XNUMX クラスのグラフィックス ハードウェア向けに設計されており、Vulkan XNUMX をサポートするすべての GPU で新しいグラフィックス API が確実にサポートされることに注意してください。 Vulkan SDK ツールキットは XNUMX 月中旬に公開される予定です。 主要な仕様に加えて、ミッドレンジおよびハイエンドのモバイルおよびデスクトップ デバイス向けの追加の拡張機能も提供する予定であり、これらは Vulkan Milestone エディションの一部としてサポートされます。

同時に、新しい仕様のサポートとグラフィックス カードとデバイス ドライバーの追加の拡張機能を実装する計画が提示されます。 Vulkan 1.3 をサポートする製品は、Intel、AMD、ARM、NVIDIA によってリリースの準備が進められています。 たとえば、AMD は、Vulkan 1.3 のサポートが、AMD Radeon RX Vega シリーズのグラフィックス カードと、AMD RDNA アーキテクチャに基づくすべてのカードで間もなく利用可能になると発表しました。 NVIDIA は、Linux および Windows 用の Vulkan 1.3 をサポートするドライバーを公開する準備を行っています。 ARM は、Mali GPU に Vulkan 1.3 サポートを追加します。

主な革新:

  • 簡略化されたレンダリング パス (ストリームライン レンダー パス、VK_KHR_dynamic_rendering) のサポートが実装されました。これにより、レンダー パスやフレームバッファ オブジェクトを作成せずにレンダリングを開始できるようになります。
  • グラフィックス パイプライン (パイプライン、ベクトル グラフィックス プリミティブとテクスチャをピクセル表現に変換する一連の操作) のコンパイルを管理しやすくするために、新しい拡張機能が追加されました。
    • VK_EXT_extended_dynamic_state、VK_EXT_extended_dynamic_state2 - 動的状態を追加して、コンパイルおよびアタッチされた状態オブジェクトの数を減らします。
    • VK_EXT_pipeline_creation_cache_control - パイプラインをコンパイルするタイミングと方法についての拡張制御を提供します。
    • VK_EXT_pipeline_creation_フィードバック - プロファイリングとデバッグを容易にするために、コンパイルされたパイプラインに関する情報を提供します。
  • 多くの機能がオプションから必須に移行されました。 たとえば、バッファ参照 (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_メンテナンス4
    • 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_フィードバック
    • VK_EXT_private_data
    • VK_EXT_shader_demote_to_helper_invocation
    • 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 仕様が更新され、すべてのプラットフォームに共通で、グラフィックスと並列コンピューティングの両方に使用できるシェーダーの中間表現が定義されています。 SPIR-V は、個別のシェーダ コンパイル フェーズを中間表現に分離することを意味しており、これにより、さまざまな高級言語のフロントエンドを作成できます。 さまざまな高レベルの実装に基づいて、組み込みのシェーダー コンパイラーを使用せずに OpenGL、Vulkan、および OpenCL ドライバーで使用できる単一の中間コードが個別に生成されます。
  • 互換性プロファイルの概念が提案されています。 Google は、Vulkan 1.0 仕様を超えるデバイス上の高度な Vulkan 機能のサポート レベルを簡単に判断できるようにする、Android プラットフォームのベースライン プロファイルを開発した最初の企業です。 ほとんどのデバイスでは、OTA アップデートをインストールしなくてもプロファイル サポートを提供できます。

Vulkan API は、ドライバーの大幅な簡素化、アプリケーション側への GPU コマンド生成の削除、デバッグ レイヤーの接続機能、さまざまなプラットフォーム向けの API の統合、および実行用のプリコンパイルされた中間コード表現の使用で注目に値することを思い出してください。 GPU側。 高いパフォーマンスと予測可能性を確保するために、Vulkan はアプリケーションに GPU 動作の直接制御と GPU マルチスレッドの組み込みサポートを提供します。これにより、ドライバーによって発生するオーバーヘッドが最小限に抑えられ、ドライバー側に実装される機能はよりシンプルで予測可能になります。 たとえば、ドライバー側の OpenGL に実装されているメモリ管理やエラー処理などの操作は、Vulkan のアプリケーション層に移されます。

Vulkan は利用可能なすべてのプラットフォームにまたがり、デスクトップ、モバイル、Web にわたって単一の API を提供し、11 つの共通 A​​PI を複数の GPU およびアプリケーションにわたって使用できるようにします。 あらゆる GPU で動作するツールを構築する Vulkan の多層アーキテクチャにより、OEM は開発時にコード レビュー、デバッグ、プロファイリングに汎用ツールを使用できます。 シェーダを作成するために、LLVM に基づき、OpenCL と同じ基本テクノロジを使用する、新しい移植可能な中間表現 SPIR-V が提案されています。 デバイスと画面を管理するために、Vulkan は WSI (Window System Integration) インターフェイスを提供します。これは、OpenGL ES の EGL とほぼ同じタスクを解決します。 WSI サポートは、Wayland ですぐに使用できます。Vulkan を使用するすべてのアプリケーションは、変更されていない Wayland サーバーの環境で実行できます。 WSI を介して動作する機能は、Android、X3 (DRIXNUMX 搭載)、Windows、Tizen、macOS、iOS にも提供されています。

出所: オープンネット.ru

コメントを追加します