Microsoft と Collabora は、これらのオープン スタンダード向けに開発されたソフトウェアがすべての DirectX 12 対応デバイスで正しく実行されるように、DirectX 用の OpenCL および OpenGL マッピング レイヤーを開発しています。
DirectXは、Microsoft独自のWindows向けハードウェアアクセラレーショングラフィックAPIです。OpenGLはクロスプラットフォームグラフィックAPIであり、OpenCLはCPUとGPU上で並列プログラミングを行うためのクロスプラットフォームフレームワークです。多くのGPU向けにWindows OpenCLおよびOpenGLドライバーが存在しますが、サポート範囲は様々であり、DirectX実装の方がより最適化されている可能性があります。マッピングレイヤーは、オープンソースのMesa 3Dプロジェクトの拡張機能として提供され、Microsoftは新しいDirectX 3D 12(D3D12)バックエンドを提供します。
レドモンド氏は、主な目的はゲームアプリケーションではなく、「ネイティブドライバが利用できないOpenCLおよびOpenGLベースの生産性向上およびクリエイティブアプリケーションのサポートを向上させること」だと述べた。
CollaboraのErik Faye-Lund氏は、このプロジェクトについてこちらで詳しく説明しています。「これは、GPUベンダーが自社のハードウェアにD3D12ドライバを実装するだけで、3つのAPIすべてをサポートできることを意味します」と、グラフィックスソフトウェア開発者は述べています。「このマッピングレイヤーは、古いOpenCLおよびOpenGLアプリケーションをD3D12に移植するための出発点としても役立つことが期待されています。」
サポートされるバージョンは OpenCL 1.2 と OpenGL 3.3 です。
作業の大部分は、DirectXドライバが使用するDirectX中間言語(DXIL)の生成に費やされています。DXILはLLVMビットコードに基づいていますが、古いドライバとの互換性を保つために古いバージョンを使用しています。残念ながら、LLVMの新しいバージョンでは古い形式のビットコードを生成できないため、チームは新しいDXILエミッターを実装する必要があったとFaye-Lund氏は述べています。
OpenCLコンパイラはDirectX中間言語を生成する
「これは単なる発表に過ぎず、やるべき仕事は山ほど残っている」とルンド氏は語った。
当面の目標は、OpenCL 1.2 および OpenGL 3.3 の適合テストに合格し、生産性アプリケーションに重点を置いたアプリケーションの互換性に取り組み、その作業をメインの Mesa コードベースにアップストリームすることです。®