ValveはCodeWeaversと協力し、LinuxでWindows用ゲームを動かすためのProtonの開発を行っています。互換性データベースProtonDBによると、現在ではWindowsの人気ゲームトップ100のうち80%がLinuxでも動作するようになっているなか、CodeWeaversはゲームのさらなる互換性向上のため、今後DirectX 12への対応を行っていく計画があることを明らかにしました(公式ブログ)。
CrossOverはDirectX 12のゲームを実行するために、VKD3D(Vulkanの上に構築された3Dグラフィックスライブラリ)を使用し、VKD3Dのパフォーマンスを向上するための多くの作業を行っています。
Linux用のDirectX 12のサポートは、実験的なコードがすでにValve社のProton(ゲーム用のWineのスペシャルバージョン)にマージされていることもあり、2022年のCrossOver 22に含まれる予定です。ただしMacの場合、Metalを考慮する必要があるためさらに複雑な作業が必要になるそうです。
Metalはテッセレーションを異なる方法で行い、ジオメトリシェーダとトランスフォームフィードバックが欠落していて、さらにDirectX 12への対応を考えるとリソースの制限に関する問題が存在するとのことです。
In general, Metal does tessellation differently, and is missing geometry shaders and transform feedback. Specific to DirectX 12 and Metal, there is an issue with limits on resources. Generally, games need access to at least one million shader resource views (SRVs). Access to that many SRVs requires resource binding at the Tier 2 level. Metal only supports about 500,000 resources per argument buffer, so Tier 2 resource binding isn’t possible. Metal’s limit of half a million is sufficient for Vulkan descriptor indexing, but not for D3D12. This limitation means CrossOver Mac can't support Tier 2 binding and therefore a lot of DirectX 12 games will not run.
一般的に、Metalはテッセレーションを異なる方法で行い、ジオメトリ・シェーダとトランスフォーム・フィードバックが欠落しています。DirectX 12とMetalに固有の問題として、リソースの制限に関する問題があります。一般に、ゲームでは、少なくとも100万個のシェーダーリソースビュー(SRV)にアクセスする必要があります。これだけの SRV にアクセスするには、Tier 2 レベルでのリソースバインディングが必要です。Metalは引数バッファあたり約50万個のリソースしかサポートしていないため、Tier 2のリソースバインディングは不可能です。Metalの50万という制限は、Vulkanのディスクリプタのインデキシングには十分だが、D3D12には使えない。この制限は、CrossOver MacがTier 2バインディングをサポートできないことを意味し、したがって多くのDirectX 12ゲームが実行できないことを意味します。
このためMacにDirectX 12がやってくるのはCrossOver 23になる予定とされています。
まだ時間が必要ですが、計画が実現すれば、新型Macに搭載されたAppleシリコンの優れたパフォーマンスを活かしてWindowsゲームを楽しめることができるようになりそうです。