libdrmとGPUデバイスドライバに関する質問

libdrmとGPUデバイスドライバに関する質問

記事OpenGLを使用した3Dレンダリングに関連するステップを要約します。

  1. 描画に「OpenGL」を使ってプログラムを起動します。
  2. 「Mesa」ライブラリはOpenGL APIを実装しています。カード固有のドライバを使用して、APIをハードウェア固有の形式に変換します。ドライバが内部的にGalliumを使用している場合、OpenGL APIを共通の中間表現TGSIに変換する共有コンポーネントがあります。 APIはGalliumを介して渡され、すべてのデバイス固有のドライバはTGSIからハードウェアコマンドに変換されます。
  3. libdrmは特別な秘密カード固有のioctlを使用してLinuxカーネルと通信します。
  4. Linuxカーネルには、カードにメモリを割り当てる特別な権限があります。
  5. Mesa レベルに戻ると、Mesa は DRI2 を使用して Xorg と通信し、バッファのロールオーバーやウィンドウの位置などの同期を保証します。

3段階がわかりませんね。ステップ2では、カーネルスペースのGPUデバイスドライバが「ハードウェアコマンド」を生成します。その後、これらのハードウェアコマンドはユーザースペースのlibdrmに提供されますか? !私はデバイスドライバがGPU自体と直接対話していると思います。ここでlibdrmの役割は何ですか?

関連情報