Linuxグラフィックスタックがどのように機能し、どのように連携するかを尋ねたいと思います。
これまで私が理解したのは、次のように動作することです。 Linuxカーネルは、通常のドライバとGPU/ベンダー固有のドライバの両方を持つDRMメカニズムを介してGPUドライバを公開します。 KMSと呼ばれる計算とビデオ出力の2つの部分に分けられます。
LinuxがVTで起動したら、フレームバッファドライバを使用してグラフィックを表示します。その後、X11を起動すると仮定すると、X11は引き継がれ(WMに従って)KMSを介して何かを表示します。
OpenGL APIは、ソフトウェアレンダリングにCPUを使用するか、DRMのコンピューティング部分を介してハードウェアアクセラレーションを提供するligGLライブラリを介して公開されます。
私の質問は、X11とOpenGLの間の接続に関するものです。これまで、私はこれをGLXと呼ばれるX11拡張で行う必要があると読んでいました。しかし、実際にどのように機能するのか知りたいです。私が知っている限り、OpenGLはX11(または他のディスプレイサーバー)とは全く独立しているので、技術的にOpenGL(libGL)を使用してグラフィックを計算し、グラフィックデータをすべてのディスプレイサーバーに渡すことが可能でなければなりません。またはフレームバッファ(もちろん、ほとんどの場合、実際にはX11 / Waylandのウィンドウフレームバッファです)。
私の質問はどうすればいいのかということです。つまり、OpenGLのレンダリング/出力フレームバッファを取得して他のものに渡す方法、またはそれが動作する方法であれば、レンダリング時に一部のフレームバッファ(例えばX11ウィンドウのフレームバッファ)をOpenGLにバインドする方法です。 /出力?