私はグラフィックコードをハードウェアにインポートするプログラムでソフトウェアチェーンをよく理解していると思いますが、間違いがある場合は誰かが私を修正してほしい。
Vulkanを使用して3Dシーン(Cと仮定)をレンダリングしてレンダリングするプログラムを作成するときは、実際にコマンドをプラットフォームに送信するVulkanライブラリlibvulkan
に接続する必要があります。libvulkan
ライブラリはlibdrm
インタフェースを使用してカーネルドライバと通信するための呼び出しを作成します/dev/dri/renderX
。その後、ドライバは私のハードウェアと対話します。
要約すると:
program -> libvulkan -> libvulkan_platform -> libdrm -> /dev/dri/renderX -> kernel drm driver -> hardware
そうですか?
また、GPUがフレームをレンダリングした後は、画面にレンダリングする必要があります。これは、Vulkan Window System Integration(WSI)レイヤーを使用してプラットフォームのWindowsライブラリ(X11、waylandなど)に転送することによって行われます。しかし、Vulkanからプログラムを書くときにglfw
.where is it from?も使用します。その後、Windowsサーバーはlibdrmを使用して合成されたフレームをモニターに表示する必要があります。インタフェースを介してカーネルKMSドライバと対話し/dev/dri/cardX
、カーネルKMSドライバはハードウェアと対話します。
要約すると:
program -> libvulkan (wsi) -> glfw??? -> libX11, libwayland-client -> X server (Xorg) + modesetting_drv, Wayland compositor -> libdrm -> /dev/dri/cardX -> platform KMS driver -> hardware
そうですか?