Mirの開発方針
現時点における「Mir」の開発方針が以下で紹介されています。開発方針と言っても大局的な方針であり、具体的なロードマップではありません。
とは言え「Mir」が進んでいる、あるいは進もうとしている道が上記を通して見えてくると思います。
開発者や開発チーム内で閉じてしまっている内容を表に出し、開発に関心を持ってもらい参加を促す・容易にする意図もあります。
Mirとは
「Mir」は次世代のディスプレイサーバーです。デスクトップやモバイルデバイス、そしてIoTまで、幅広い分野をサポートするディスプレイサーバーです。
デスクトップPCから見れば、既存のXサーバーを置き換えるソフトウェアになります。
「Mir」に関する詳細は、以下を参照してください。
- 公式サイト:Mir Display Server
- ユーザー向けドキュメント:Getting and Using Mir
- 開発者向けドキュメント:Welcome to Mir
- GitHub:MirServer/mir
- コミュニティー:Mir category
プラットフォームのリファクタリング
リファクタリングとは、内部設計や実装を見直し、継続的に発生し得るメンテナンスコストの削減や品質及び開発効率の向上、開発に参加するエンジニアの学習コストの削減等を目的に実施される作業のことです。端的に言えば煩雑・複雑な内容を紐解き、分かりやすくする作業ですね。
レンダーとディスプレイの分離
現在「Mir」では、レンダリング(rendering)と出力(output)を分離し、グラフィックプラットフォームを抽象化する目標がありますが、まだ道半ばです。レンダリングプラットフォームは、クライアントにMirにバッファーを渡す方法を提供し、GLテキスチャーやCPUバッファーコンテントなどMirの描画に関する要素を提供します。
出力プラットフォームは、物理ハードウェア上でレンダリングを表示する方法を提供します。
様々なデバイスの対応がもっと簡単に
レンダリング(rendering)と出力(output)の分離により、様々なデバイスの対応がもっと簡単になります。例えばレンダリングを行わないが出力を行うDisplayLink USBドックや、レンダリングハードウェアと出力ハードウェアが異なるDRMデバイスとして提供されるARMボードの対応がもっと簡単になります。
現在の分離されていない「Mir」のプラットフォームでは、このようなデバイスを綺麗に「Mir」のプラットフォームに当てはめることができません。
複数のグラフィックプラットフォームの読み込みと共存
現在の「Mir」では、ハイブリッドグラフィックのサポートに制約があり、すべてのグラフィックデバイスがMesaによってサポートされている必要があります。制限を緩和したい
この制約を緩和しNVIDIA GPUのプロプライエタリドライバーとIntel GPUのMesaドライバーでハイブリッドグラフィックをサポートするには、複数のグラフィックプラットフォームを読み込み、そして共存できる機能が「Mir」に必要になります。またこの機能は複数の出力プラットフォームの共存により、リモートデスクトップのサポートにも役立てることができるしょう。
置き換え可能なレンダラーとシーングラフ
シェルを開発する際、ツールキットが利用できればシェルの開発に大きく役立てることができます。Unity 8
「Unity 8」で「qtmir」コンポーネントは、「Mir」のデフォルトのレンダラーとシーングラフを「QtSceneGraph」に置き換えています。これにより「Unity 8」は「Qt/QML」を利用してトップバーやインジケーター、アニメーションやウィンドウ切り替えなどを実現しています。
内部インターフェースによる実装から公開可能なインターフェースへ
しかし現在この仕組みは「Mir」内部のインターフェースを使用して実現されており、外部に安定したインターフェースとして公開されておらず、外部レンダラーやシーングラフをプラグインとして柔軟に活用できる仕組みになっていません。そのためレンダラーやシーングラフを置き換え可能な仕組み作りが考えられています。
また「qtmir」が新しいAPIを使用するようにアップデートする作業や、「GSK (GTK SceneGraph Kit)」バックエンドの構築が考えられています。
高度なシェルを開発する時に役立つ
レンダラーやシーングラフを置き換えられるようになれば、「GNOME Shell」や「Unity 8」のような複雑なシェルの開発に役立てられるようになります。動的な再読み込みとクラッシュに対する耐性
新しいグラフィックドライバーをインストールした時や、既存のグラフィックドライバーをアップデートした時に、現在起動しているアプリケーションを終了すること無く、その新しいグラフィックドライバーを読み込み直し、新しいグラフィックドライバーで動作する仕組みが考えられています。これが実現すれば、クラッシュしても現在起動しているアプリケーションを終了すること無く再起動することも可能になります。
いずれもすでに「Windows」のディスプレイサブシステムで実現されていることです。
これをLinuxデスクトップでも実現したいとのことです。