Xgl

移動先: 案内, 検索

Introduction

Cube - Switching desktops by rotating a 3D cube, with a running high-resolution movie bent around corner

Xgl は、OpenGLの最上層にあるXサーバアーキテクチャです。 Xgl はアンチエイリアス のフォントをレンダリングするなどの複雑なグラフィック処理を行います。その処理はOpenGLを用いない他のサーバに比べて非常に高速です。現在実装されているのはXglxですが、将来のXglの実装はXeglになる予定です。

処理速度だけではありません。Xglでは複雑なウィンドウ部品の操作速度を向上させ、驚くような視覚効果を可能にします。それはCompizのような、OpenGLで動作するコンポジション/ウィンドウマネージャの機能です。こうした視覚効果は実用にも役立ちます。Linuxというものが視覚障害者にとってより利用しやすくなり、 経験の浅いユーザでも表示内容の理解や操作がより容易になります。

Xglの性能を全て引き出すには、コンポジタ/ウィンドウマネージャと共に用いることが必要です。 Compiz はXglとともに用いるために開発されたコンポジタです。

将来のグラフィックハードウェアは3D処理のみをサポートし2Dコアは持たなくなるということも予想されます。このためX.orgに依存する全てのオペレーティングシステムにとってXglが利用できるようになることは重要な進歩なのです。

Xglのオープンソース化

2006年初頭、Xglの開発管理者David Ravemanは、自らが施したXglとCompizの 最新改良版を freedesktop.org のCVS レポジトリに寄付しました。今日では、 freedesktop.orgXgl packagesのソースコードを管理しています。

Xgl/Compizの使い方

XglをopenSUSE Linuxで利用する方法については、SUSE上のXglに関する助言を見て下さい。コンポジションマネージャの詳しい情報は、compizページにあります。使用上の問題が生じた場合は、Xglに関するトラブルシューティング を見て下さい。

よく寄せられる質問(FAQ)


  • 従来のウィンドウマネージャでcompizは使えますか?
    ダメです。 compizそれ自体 がウィンドウマネージャなのです。ウィンドウマネージャは一度にひとつしか使えません。 コンポジットマネージャとウィンドウマネージャはコンセプトとしては別物ですが、多くの視覚的効果についてはこれら二つのプロセスが密接に統合されることが必要です。その結果いわゆるコンポジティング・ウィンドウマネージャというものが提供されます。compiz がそれなのです。
  • では、glxcompmgr.rpm と xglx.rpm の違いは何ですか?
    glxcompmgr はすでに非推奨です。それに代えて xglx パッケージを用いてください。
  • Xglではダイレクトレンダリングが機能しませんが、Xorgでは機能します。なぜ OpenGL アプリケーションが加速されないのですか?
    ハードウェアアクセラレーションとダイレクトレンダリングは違います。 Xgl上でのOpenGLアプリケーションのハードウェアアクセラレーションにはドライバが pBuffers あるいは FBOsをサポートしていることが必要です。nvidia やfglrxドライバーはこの要件を満たします。一方、ダイレクトレンダリングは現在実装不可能です。この機能を実装するための機能拡張がまだ仕様化されていないためです。
    ダイレクトレンダリングはハードウェアアクセラレーションを含みますがそれに代わるものではありません。ダイレクトレンダリングはそうでないレンダリングより少し高速ですが、それほどの違いはありません。
    ダイレクトレンダリングが有効なのはglxinfo|grep direct"有効"を表示するときです。これはXglのXorg の最上層で動くものです。Xglではありません。 Xgl の最上層では常にこれは "無効"を表示します。残念ながら Unfortunately, for Xorg がダイレクトレンダリングを行うというのはグラフィックアクセラレーションを行うというのと同義であり、 前者を検知することはできますが後者のみを検知するのは困難です。
  • どうすれば私のビデオカードがpBufferやFBOに対応しているか確認する事ができますか?
    When you are running Xgl check the formats listed in /var/log/Xgl.0.log, under "pbuffer formats:" and "fbo formats:", respectively. If there are any, your driver supports the according mode. You can also call glxinfo and check for GLX_SGIX_pbuffer in the "GLX extensions:" section (not client or server glx extensions), and for GL_EXT_framebuffer_object in the "OpenGL extensions:" section.
  • キューブ効果の上面と底面にデスクトップを配置できますか?
    ダメです。というのはキューブ効果の上面と底面は正方形なので、アスペクト比のあるモニタ画面を表示することはできません。 ただし、該当するデスクトップを回転した状態で見たいというのであれば (compare 上方に回転したものと横方向に回転したものを比較する) それはカンタンです。側面の数を増やせばよいのです。方法は. apps/compiz/general/screen0/options/sizeのオプションを変更することです。
  • Xglで複数のモニタをセットアップするにはどうすればよいですか
    Xgl 及び compiz は現時点では Xinerama 機能拡張をサポートしていません。現在開発中です。
    Xglは無論 merged framebuffer のセットアップでも動きますが、異なるモニタの識別はできません。たとえば、ログインスクリーンはモニタ間で分割されてしまいます。
  • これら全部はXorg 7の一部なのですか?
    違います。Xglは、Xorg内のコミュニティで開発されてはいますが、ブランチが違います。統合されるのは、恐らくXorg 7.2以降になる見込みです。
  • 設定ファイルでコンポジットを有効にできますか?
    それはしないでください。Xglはネイティブでコンポジットをサポートしますからその下の XorgはCompositeをエクスポートする必要がありません。これは重要なことです。たとえば nvidia ドライバはまだOpenGL と Compositeを 同時に用いると問題を起こします。
  • tearing artifacts(画面の欠落部分)を除去するにはどうすればよいですか
    これは別途扱うべきフクザツな問題です。

技術的背景

Xgl と compiz はいずれも、主に David Reveman (Novell) により開発されました。これに Matthias Hopf (SUSE)が追加をしています。 Dave Arlie, Adam Jackson (Red Hat) 及び Jon Smirl は単体で動くXeglを開発しています。これは、ここでは取り上げませんが、Xgl関連の技術です。. Xgl は 抽象化レイヤにglitz API を用いています。これは David Reveman とPeter Nilsson (UMU)により設計及び実装がなされたものです。

Xgl はいくつかの趣向の異なるバックエンドを有しますが、その中で glx バックエンド(Xglxと呼ばれる)は現在主要な開発の駆動力となっています。このバックエンドは通常の Xserverの最上位のウィンドウで動作し ( Xnestに相当する)必要なOpenGL のサポートをします。 フルスクリーンウィンドウ一つを作成するには -fullscreen というスイッチを用います。ディスプレイ名には本来のXサーバのそれとは異なるディスプレイ名を用いる必要がありますので注意してください。他のバックエンドとしてはXegl があります。これは Xgl をフレームバッファ上で直接動作させることができます。ただしこれはまだまだ開発の段階であり、Linuxでは ATI R200 ベースのグラフィックカードでしか動作しません。

glxをバックエンドにしたXglは単体では動作しません。自動的にXorgサーバを起動し、その上で動きます。SUSEのデフォルト設定ではディスプレイ番号 :93 が与えられています。このディスプレイではXgl だけがXorgと通信することが許可されており、他のアプリケーションのためにdisplay :0 を作成します。

ハードウェア情報


以下のグラフィックハードウェアは、XGLを使用する際にうまく動作する事が知られており、推奨されています。例外がある場合は追記して下さい。

  • Intel
    Intel製のグラフィックチップ上で完璧に動作させるには、XglとCompizの最新のパッケージが必要です。
    • i915, i945
      Accelerated XVideoが壊れています。トラブルシューティングを参照して下さい。
    • compiz --長年に渡るDRIの不具合により、入れ替えると、多くの場合、Xサーバを破壊します。
  • NVidia
    NVIDIAのカードでXglが動作するには、プロプライエタリなドライバーが必要です。現在のところ、NVIDIAのプロプライエタリドライバーをインストールした後、Xglのrpmを削除し、再インストールする必要があるでしょう。
    • GeForce 4xxxシリーズ
      これらのカードでは、XVideoは加速されません。
    • GeForce FX 5xxxシリーズ、Quadro FXシリーズ
      これらのカードでは、Accelerated XVideoは動作が低下します。原因は調査中です。
    • GeForce 6xxxシリーズ
    • GeForce 7xxxシリーズ(GeForce 7600では、全ての効果は使えませんが、ほとんどは動作します)
  • ATI
    • If you can get the fglrx package installed, most newer generation ATI based cards will work with Xgl
    • Mobility Radeon 9700 SE: Xgl running with proprietary fglrx driver 8.23
    • HighTech Systems Radeon 9600: Xgl/Beryl/Compiz running with fglrx 8.33
    • Radeon X300: Xgl running with proprietary fglrx driver 8.23
    • Firegl 5200 and 5250 (T60p): Xgl running with proprietary fglrx driver 8.32 and version 8.33.6 and Xorg 7.2

If you are not sure what card you are using, you can run the following command (as root): hwinfo --gfxcard

If your card isn't listed then you can check out the Gentoo hardware list as well.

問題が発生しうるハードウェア

Hardware with known glitches or incompatibilities:

  • ATI
    • Mobility Radeon M6 LY (7000), Mobility Radeon M9 (9000) and Mobility Radeon M9+ (9200)
      Drawing artifacts and occasional flickering.
    • Radeon 9200
      No hardware acceleration using fglrx 8.22.5 driver
    • Radeon XPRESS 200M 5955 (PCIE), Driver: "fglrx_pci", XGL works but the 2D/3D files will not work propely(2D/3D games,full screen videos, etc.)
    • Some older Radeon chipsets have been shown to work with very reduced performance with the open source drivers on SLED10
  • Intel
    • i855GM
      Works, but effects are overall very slow.
    • i815, i845
      Too old, Xgl works, but compiz will not work. Maybe a compatibility layer will be added later.

関連ページ


外部リンク


関連するWiki、議論、コミュニティのページ

ソース

Novell及びopenSUSE関連

評価記事、文書、スクリーンショット、動画