関連記事
Apple向けVulkan互換レイヤー「MoltenVK 1.4.2-rc1」公開、GPUのデグレード解消と新機能追加も2つの修正を差し戻し

(Khronos.org)[写真拡大]
Appleプラットフォーム向けVulkan互換レイヤー「MoltenVK 1.4.2-rc1」が公開された。本バージョンでは、GPU固有のデグレード解消や新機能の追加が行われた一方、不具合を招いた2つの修正が差し戻されている。Vulkanを利用するゲームやアプリの開発者は、安定版のリリースに向けて自社プロジェクトでの検証を進めることが推奨される。
■MoltenVK 1.4.2-rc1の概要と動作環境の変更
Khronos GroupのオープンソースVulkan互換レイヤー「MoltenVK」は、2026年7月19日に初の1.4.2リリース候補版となる「v1.4.2-rc1」を公式GitHubリポジトリで公開した。このビルドは、2025年11月30日にMoltenVK 1.4.1がリリースされて以降に蓄積されたGPU固有のデグレード(リグレッション)を解消し、macOSでこれまで欠けていた2つの新しいレンダリング機能を追加している。一方で、新たな問題を引き起こした2つの修正を差し戻しており、これは一方のグラフィックスAPIをもう一方のAPIへと変換する際に生じる、構造的な開発の難しさを反映している。
macOS、iOS、およびプライベートAPI向けの事前ビルド済みtarファイルは、現在GitHubのKhronosGroupリポジトリで入手可能となっている。Vulkan SDKを通じてMoltenVKを統合している開発者は、今後リリースされる予定の安定版1.4.2に合わせたSDKバンドルの更新を待つ必要がある。
開発者が1.4.2-rc1を導入する前にまず確認すべきなのは、動作環境の最小要件が引き上げられた点である。本バージョンからmacOS 12(Monterey)、iOS 15、およびtvOS 15が必須となった。この変更は、これらのOSリリースで導入されたMetal APIの機能にMoltenVKを適合させるためのものであり、Monterey未満のIntel Macや古いiOS/tvOSデバイスのサポートは事実上終了する。すべてのハードウェアがmacOS 12に対応しているApple Silicon環境を対象とする開発チームにとっては影響がないとみられるが、古いハードウェアを含めた幅広いOS互換性を維持している開発チームは、本リリース候補版でビルドを出荷する前にサポート対象を再確認する必要がある。
■MoltenVKの役割と依存するプロジェクト
MoltenVKはVulkanアプリケーションとApple製ハードウェアの間に位置し、Vulkan APIの呼び出しとSPIR-Vシェーダーのバイトコードを、AppleのGPUが実際に実行するMetalフレームワークの呼び出しとMetal Shading Language(MSL)に変換する役割を担う。AppleはネイティブのVulkanドライバーを提供しておらず、サードパーティ製の低レベルグラフィックスドライバーを導入する仕組みも存在しないため、MoltenVKがなければ、クロスプラットフォームで低オーバーヘッドのグラフィックスAPIであるVulkan向けに書かれたソフトウェアは、macOS、iOS、tvOS上で動作しない。この事実は、2026年1月にLunarGが発表した「State of Vulkan on Apple」の分析でも確認されている。
このライブラリの影響範囲は広い。LunarGが配布する公式のVulkan SDKにはmacOS用のMoltenVKが同梱されており、SDL2もAppleプラットフォームのサポートをこれに依存している。WindowsのDirectXゲームをVulkanに変換する「DXVK」などのプロジェクトも、Apple SiliconやIntel Macをターゲットにする際にMoltenVKに依存している。さらに、「Minecraft Java Edition 26.2」などのゲームタイトルで使用されているゲームエンジンも、Mac向けのVulkanパスをMoltenVK経由で実行している。MoltenVKはApache 2.0ライセンスで公開されており、主にカナダのThe Brenwill Workshop社とKhronos Groupが維持管理を担当し、ValveとLunarGからの資金援助を受けている。
■追加された2つの新機能:サンプラーMin/Maxとgl_DrawID
今回のリリース候補版では、VulkanからMetalへの機能マッピングにおける長年のギャップを埋める2つの機能が追加された。
1つ目は、ネイティブのサンプラーMin/Maxフィルタリングである。これにより、テクスチャの縮小操作をMetalのサンプリングパイプラインに直接移行できるようになる。Vulkanの「VkSamplerReductionMode」は、テクスチャサンプラーが加重平均ではなく、2x2以上のフィルタ領域における最小値または最大値を返すことを可能にする機能で、シャドウマップのレンダリングや被写界深度の計算、スクリーンスペース・アンビエントオクルージョン(SSAO)などで使用される。Metal 2以降では「MTLSamplerDescriptor」の縮小モードAPIを介してこれがネイティブに公開されている。MoltenVK 1.4.2-rc1ではこれに対するネイティブパスが追加され、汎用的なデータ型変換を経由していた従来のアプローチが置き換えられた。これにより、Min/Max縮小を使用するレンダリングパスでのテクスチャサンプリングが高速化される効果が期待できる。
2つ目は、macOS上での「gl_DrawID」および「DrawIndex」のサポートである。Vulkanにおいて「gl_DrawID」は、マルチドロー・インダイレクト(multi-draw-indirect)バッチ内で現在実行されている描画コールを識別する組み込みのシェーダー変数であり、数千の描画コールを1回のGPU送信にまとめる現代のGPU駆動型レンダリングパイプラインの中心的な機能である。Metalにはこれに直接対応する機能がないため、MoltenVKは描画コールごとに対象のインデックスをシェーダー定数やバッファ読み込みにエンコードして合成する必要がある。この合成処理をすべてのサポート対象GPUファミリーで正しく動作させることは非常に複雑であり、WindowsやLinuxのVulkan実装では何年も前からサポートされていたものの、macOSでは今回のリリース候補版まで利用できなかった。これにより、WindowsやLinuxからmacOSへマルチドロー・インダイレクト技術を移植するエンジン開発者は、回避策を講じる必要がなくなる。
■GPU固有のデグレードを解消するバグ修正
1.4.2-rc1の変更点の大部分は、1.4.1以降に蓄積されたハードウェア固有のデグレードに対する修正である。
NVIDIAまたはIntelのグラフィックスを搭載した古いMacハードウェア(Mac 1 GPU)において、描画のデグレードを引き起こしていた「discarded-fragment store checks」と「combined sampler argument buffers」の2つの挙動が無効化された。これらはリファクタリングの過程で有効化されていたが、対象のGPUファミリーで誤った描画結果を生じさせていた。
また、macOS上のAMD GPUにおけるサブグループサイズの補正も行われた。AMD GPUは64ワイドではなく32ワイドのSIMDグループ(ウェーブフロント)で動作するが、以前のビルドのデグレードにより、報告および使用されるサブグループサイズが誤った値にシフトしていた。これにより、「subgroupAdd」や「subgroupBallot」などのサブグループ演算に依存するコンピュートシェーダーがAMDハードウェア上で誤った結果を出力する可能性があったが、今回の修正により正しい32ワイドのサイズに復元された。
スワップチェーンの安定性についても、同サイズのウィンドウにおけるスワップチェーン再作成時に、特定のシナリオでMetal drawableが誤って1x1のレンダリングターゲットに縮小されてしまう問題が修正された。さらに、スワップチェーン画像用にキャッシュされたMetalテクスチャが再作成時に適切に無効化されるようになり、スワップのタイミングに影響を与えていたバッファとヒープの同期問題も修正されている。デスクリプタレイアウトに関しては、引数バッファのアライメントパディングがデスクリプタセットの末尾に移動され、GPUメモリの誤整合読み込みを引き起こす可能性があったレイアウトの前提が修正された。
■差し戻された2つの修正とその背景
今回のリリース候補版では、すべての変更がそのまま採用されたわけではない。2つの変更セットがさらなる調査のために差し戻された。この差し戻しは、Metalの上にVulkan互換レイヤーを構築する際の構造的な摩擦を示している。
まず、「VK_KHR_external_semaphore_fd」の実装が差し戻された。プロセス間およびキュー間の同期にAppleの「MTLSharedEvent」プリミティブを使用するアプローチをとっていたが、これが測定可能なパフォーマンス低下を引き起こしたためである。MTLSharedEventはプロセスやキューをまたいでMetalコマンドバッファを同期するためのAppleの仕組みだが、そのセマンティクスがVulkanのファイル記述子ベースの外部セマフォモデルと完全には一致せず、この不整合がCPU側のオーバーヘッドを生じさせ、ベンチマークに影響を与えていた。安定版として出荷するには、別の実装アプローチが必要となる。
次に、Apple Siliconにおけるカラーチャネル破損の修正も差し戻された。特定のレンダリング構成においてカラーチャネルのデータが誤った順序で読み書きされるという不具合に対し、提案された解決策が新たな問題を引き起こしたためである。このバグは未解決のままであり、安定版1.4.2のリリースを阻む主要な2つの課題のうちの1つとなっている。
これら2つの差し戻しは特異なことではない。Vulkan SDKの管理者であるLunarGが2026年1月の分析で指摘したように、MoltenVKは「完全に準拠したVulkan実装ではなく、ベースとなるVulkan APIの一部の機能が欠けている」という構造的な現実を反映している。VulkanとMetalは、それぞれ異なるハードウェア設計思想に基づいて設計された低オーバーヘッドのグラフィックスAPIである。同期モデルやSIMD実行セマンティクス、特定のGPUファミリーにおけるチャネル順序などの設計思想が異なる場合、MoltenVKは回避策を見つけるか、パフォーマンスコストを支払って挙動を合成するか、あるいはその機能を未実装のままにするしかない。今回の差し戻しは、一方の問題を解決したことで別の問題が浮き彫りになった典型例である。
■インフラの更新と完全準拠の競合「KosmicKrisp」
インフラ面では、SPIR-VバイトコードをMSLに変換するためにMoltenVKが使用しているシェーダー変換ライブラリ「SPIRV-Cross」が更新され、リポジトリ内での管理方法がGitサブモジュールからシンボリックリンクへと移行された。これにより、MoltenVK自体の開発に携わる開発者のコントリビューションワークフローが簡素化され、依存関係の同期に伴う摩擦が軽減される。
また、AppleプラットフォームにおけるVulkanエコシステムには、2026年初頭から「KosmicKrisp」という競合が存在している。2026年1月、LunarGはオープンソースのMesa 3Dグラフィックスドライバスタックに基づく、もう1つのVulkan-on-Metal実装を開発したことを発表した。MoltenVKとは異なり、KosmicKrispはVulkan 1.3仕様に完全準拠しており、Vulkan 1.4への準拠も間近とされている。
ただし、対応プラットフォームの範囲に違いがある。KosmicKrispはMetal 4を必要とし、Apple Silicon搭載ハードウェアでのみ動作する。これに対し、MoltenVKはx86_64 Intel Mac、iOS、tvOS、および古いmacOSバージョンを実行するシステムをサポートする唯一の選択肢である。現在のVulkan SDKには両方の実装が同梱されており、LunarGは、開発者がアプリケーションバンドルに両方を同梱し、実行時にハードウェアに応じて動的に実装を選択することを推奨している。最新のApple Siliconデスクトップのみをターゲットにする場合はKosmicKrispが完全な準拠性を保証するが、iOSやtvOS、レガシーなMacのサポートが必要な場合は、引き続きMoltenVKが唯一の手段となる。
■リリース履歴と今後の展望
今回の1.4.2-rc1の公開は、2025年11月30日にリリースされたMoltenVK 1.4.1から約7か月半ぶりとなる。1.4.1では、4つのメンテナンス拡張機能(VK_KHR_maintenance9、VK_KHR_shader_fma、VK_KHR_surface_maintenance1、VK_KHR_swapchain_maintenance1)の追加や、CMakeビルドのサポート、visionOSのデモターゲットの導入が行われていた。さらにその前の1.4.0(2025年8月20日リリース)では、Vulkan 1.4が初めてAppleプラットフォームに導入され、多くの拡張機能が追加された。
今回の1.4.2は主にこれまでの成果の整理と統合を目的としており、プラットフォーム機能の確定とデグレードの解消が行われた一方、未完成の2つの修正が差し戻された。セマフォのパフォーマンス問題とApple Siliconのチャネル破損問題が解決され次第、安定版がリリースされる予定である。新機能やバグ修正を今すぐ必要とする開発者はrc1でのテストが可能だが、本番環境での安定性を求める場合は最終的な安定版のリリースを待つべきである。
■注目ポイントQ&A
●MoltenVK 1.4.2-rc1の主な変更点は何ですか?
最小動作環境がmacOS 12、iOS 15、tvOS 15に引き上げられたほか、サンプラーのMin/Maxフィルタリングやgl_DrawIDのサポートなどの新機能が追加されました。また、GPU固有の不具合が多数修正された一方、パフォーマンス低下や新たな問題を引き起こした2つの修正(外部セマフォとカラーチャネル破損の修正)が差し戻されています。
●MoltenVKとKosmicKrispの違いは何ですか?
MoltenVKは幅広いAppleデバイス(Intel Mac、iOS、tvOS、visionOSなど)をサポートしますが、Vulkan規格への完全準拠ではありません。一方、KosmicKrispはVulkan 1.3に完全準拠していますが、Metal 4とApple Silicon搭載ハードウェアが必須となります。開発者はターゲット環境に応じてこれらを使い分けることができます。
●なぜ一部の修正が差し戻されたのですか?
VulkanとMetalは設計思想や同期モデル、SIMD実行セマンティクスなどが異なるため、MoltenVKによる変換処理で一方の不具合を解決しようとすると、別の問題(パフォーマンス低下や新たなバグ)が発生することがあります。今回の外部セマフォやカラーチャネル破損の修正も、こうしたAPI間の構造的なギャップにより差し戻されました。
●macOS上のDXVKやWineでMoltenVKを使用する際の注意点はありますか?
DXVKはmacOS上でVulkanを利用するためにMoltenVKに依存しています。ただし、MoltenVK 1.2.11で導入された「MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS」が有効な場合、一部のDX11ゲームでフレームレートが大幅に低下する現象が報告されています。この設定値を「0」にすることでパフォーマンスが回復することが知られています。
元記事: MoltenVK 1.4.2-rc1 Closes GPU Regression Backlog, Drops Two Contested Fixes
※この記事はTech Timesから提供を受けた記事を日本向けに翻訳・編集したものです。
スポンサードリンク

