Linux上でネイティブなDirectX 10/11の実装が実現 – Gallium3DによりオープンソースでGPUドライバ実装が可能に

phoronix.com Direct3D 10/11 Is Now Natively Implemented On Linux! Published on September 21, 2010 Written by Michael Larabel より。

概要として、

Luca BarbieriとMesa / Gallium3D開発者がオープンソースのグラフィクスドライバでMicrosoftのDirectX10と11のAPIをLinuxに搭載することに成功し、既に動作しておりWineに統合中とのこと。

Luca Barbieriは「D3D1x」と呼ばれているDirect3D 10/11 COM APIをGallium3Dに追加した。
Lucaはこれは単なる初期バージョンであるとしているが、既に動作しいくつかのDirectX10/11のテクスチャデモがLinux上で動作させることが可能。
これは現在のWine実装のようにDirect3DをOpenGLへ変換したりせず、ネイティブにGallium3DとTGSIに直接グラフィクスドライバ及びハードウエアとやりとりが可能である。
Gallium3Dの設計に感謝し、Direct3Dのサポートが基本的にLinuxドライバにほんの少しかほとんど変更無しで「フリー」で可能となる。

freedesktop.orgのコミットを読むと、「最初のゴールは複数のAPIサポートというGalliumの約束を現実にすることであり、Galliumの上に非常に薄い簡単な実装により動作を可能にすることを提供し、たくさんの巨大な絡みあったプログラムコードの必要なOpenGLの代わりになる。2番目のゴールはWineを使いLinux上でWindowsのDirect3D 10/11仕様のゲームを動作させることである。」

Wineもこの活躍に感謝を示し、DLLのいらないWineへの組み込みは行われいているが、Lucaは目標達成は全く持って簡単であると語った。

もしこの出来事がより良くできなければ、「FglrxとnvidiaドライバはOpenGLを使えるようなGalliumドライバを開発することでサポートが可能となり、それは比較的簡単な作業である。Direct3D 10/11の偉大な設計とGalliumとの近密性に感謝し、このアプローチが体感できるようなオーバーヘッド無しで結果を得られ、FglrxやnvidiaのプロプライエタリドライバからGalliumのオープンソースドライバに切り替えるパッチを提供するだけででほとんどメンテナンス可能になる。

特にDirectX10.0の限定サポートやDirectX11.0の未サポート状態のWineにとってこのニュースは信じられないようなものである。

現在の他のゴールについて、「3番目のゴールはWindowsシステム以外で動作するOpenGLを代替する高品質なグラフィクスプログラムの実現を可能にし、特にLinuxやその他フリーやオープンソースシステムにもたらされる。一から開発されたこの非常に簡潔で練られたコードに感謝し、Direct3D 10/11はOpenGLに比べ極めて良いAPIであり、極端なまでに少ないコードと開発時間でサポートすることが可能となり、あなたは現在存在するMesa OpenGL実装のプログラムソースと比較することも可能である。」

Linux上で標準でDirect3D 10/11が実装されたことについていくつか考えさせられるのは、「最後に、成熟したDirect3D 10/11実装はOpenGL実装に比べ本質的により高速でより高信頼であり、劇的に小さなAPIはアプリケーションを開発する目的のために必要な開発により多くの時間を割くことが可能になる。」

VMwareは以前Direct3Dの実装をし、それはオープンソースでもなく、Windows上でのGallium3D実装でDirectX9をターゲットにしたものであったが、それとは全く異なり、コミュニティメンバー達により開発されたオープンソースであるということである。

Gallium3Dの成果はMesa開発者たちにも可能なマイルストーンを準備した。
幸運にもまもなく私たちはOpenGL 3.x/4.0が実装されるのを遂に実現できるだろう。Linux上でのDirect3D 10/11実装の実現には26,000行の追加がMesaに必要であった。
私はMicroosftがDirect3DをLinux上で実装するのに彼らに何故ビール(※beerとwine。ソース元のページには開発者がビールで祝っている画像がある)を買ってやったのか不思議でたまらない。

※コミット内容

  • Independently created headers for Direct3D 10, 10.1, 11 and DXGI 1.1, partially based on the existing Wine headers for D3D10 and DXGI 1.0
  • A parser for Direct3D 10/11 DXBC and TokenizedProgramFormat (TPF)
  • A shader translator from TokenizedProgramFormat to TGSI
  • Implementation of the Direct3D 11 core interfaces
  • Automatically generated implementation of Direct3D 10 and 10.1
  • Implementation of DXGI using the “native” framework of the EGL st
  • Demos, usable either on Windows or on this implementation
    • d3d11tri, a clone of tri
    • d3d11tex, a (multi)texturing demo
    • d3d11gears, an improved version of glxgears
    • d3d11spikysphere, a D3D11 tessellation demo (currently Windows-only)
  • A downloader for the Microsoft HLSL compiler, needed to recompile the shaders (compiled shader bytecode is also included)

なお、x86_32でのみテストしたとのこと。

—-

すごい事になったな。OpenGLを介さずに実現するとは。

広告
コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。