
モード設定とは、 VESA BIOS拡張機能またはUEFIグラフィックス拡張機能(より新しいコンピュータの場合)を使用して、コンピュータのディスプレイコントローラの表示モード(画面解像度、色深度、リフレッシュレート)を有効にするソフトウェア操作のことです。
表示モードはカーネルによって設定されます。ユーザー空間モード設定(UMS)では、表示モードはユーザー空間プロセスによって設定されます。
カーネルモード設定はより柔軟性が高く、ユーザー空間の表示サーバーを使用している場合でも、カーネル内で致命的なシステムエラーが発生した場合にエラーを表示することができます。
ユーザー空間モードの設定では、ハードウェアに直接アクセスするためにスーパーユーザー権限が必要となるため、カーネルベースのモード設定では、ユーザー空間グラフィックスサーバーに対してそのような要件を回避する。
ハードウェア面では、GPUは複数のコンポーネントで構成されており、その中にはレンダリングエンジン(OpenGL/Vulkanコマンドを実行するGPUのコンポーネント)とディスプレイエンジン(レンダリングを実行する部分とは対照的に、画面に「ビデオストリーム」を送信するGPUのコンポーネント)があります。[ 1 ]
パフォーマンスを向上させるために、多くのGPUにはハードウェアプレーンと呼ばれる機能が搭載されています。プレーンを使用すると、ディスプレイエンジンが合成を実行できます。これはダイレクトスキャンアウトと呼ばれ、コンポジタがコピーを完全に回避できます。libliftoffは、このようなハードウェア機能をより有効活用するライブラリです。[ 1 ]
「古い」カードの場合、サポートは明らかな理由もなくランダムな基準に従って配布ごとに変更され、カードがサポートされなくなる可能性があります。[ 2 ]
Microsoft WindowsのNTベースのバージョンでは、カーネルモード設定が使用されます。カーネルモード設定によって可能になるカーネルエラー表示は、正式には「バグチェック」と呼ばれますが、一般的には「ブルースクリーン・オブ・デス」として知られています。
Linuxカーネルは、 2008年12月にリリースされたバージョン2.6.28でIntel GEMを受け入れることにより、カーネルベースのモード設定の前提条件を満たしました。[ 3 ]これは、GEM API をサポートするTungstens Graphics TTM (Translation Table Maps)メモリマネージャに置き換えられました。 [ 4 ] TTM は、RadeonおよびS3 Graphicsグラフィック チップセット用のフリーでオープンソースのドライバ用に開発されました (フリーでオープンソースのグラフィック デバイス ドライバを参照)。[ 5 ] Intel GMAグラフィック チップセットのサポートは、2009 年 3 月 23 日にリリースされたバージョン 2.6.29 で受け入れられました。[ 6 ] R600 以前のATI Radeonグラフィック カードのサポートは、2009 年 9 月 9 日にリリースされたバージョン 2.6.31 で受け入れられました。[ 7 ] R600 および R700 のサポートはDRM内で開発されており、バージョン 2.6.32 で統合されました。[ 8 ] Evergreen (R800) のサポートは、バージョン 2.6.34 で統合されました。 Nvidia はグラフィック チップに必要なドキュメントをすべて公開しなかったため、リバース エンジニアリングを使用してNvidia カード用の動作するオープンソース ドライバを構築するnouveauプロジェクトの下で開発が進められました。Nouveau は、2009 年 12 月 10 日にリリースされたカーネルのバージョン 2.6.33 で採用されました。カーネル ベースのモード設定は nouveau ドライバでサポートされているだけでなく、必須です。 [ 9 ] Wayland コンポジタ( Westonなど) とkmscon は、 ioctlを介したカーネル モード設定に依存しています。
FreeBSDはバージョン9.1以降、カーネルベースのモード設定と、Intel GPU(IronLake、SandyBridge、IvyBridge)の次世代向けGEMの両方をサポートしています。[ 10 ]
Intel カードのサポートは限定的です。デバイス「Intel CometLake-S GT2 [UHD Graphics 630]」などの一部の Intel カードは FreeBSD では動作しません。[ 11 ]ドライバーはサポートされているものの、積極的にサポートされておらず動作しないカードの中には、このような問題が発生するものがあります。[ 12 ]
NetBSD は、Intel および Radeon デバイス向けのカーネルベースのモード設定と高速グラフィックスをサポートしています。この実装は、Linux 3.15 DRM/KMS コードを移植することによりバージョン 7.0 で導入されました。[ 13 ]
OpenBSDは、IntelおよびRadeon GPU向けのカーネルベースのモード設定をサポートしています。OpenBSDバージョン5.4以降、Intel GPUのサポートが利用可能になりました。バージョン5.5のリリースに伴い、Radeonチップセットのサポートも追加されました。
2013年のLinux Plumbers Conferenceでは、以下の代替案が提示されました。