这可能是一个愚蠢的问题,因为我对这个主题不太了解...似乎用户应用程序可以直接与 GPU 对话来渲染图像,例如使用 OpenGL,通过 mesa 和 libdrm,其中 libdrm 是各种 ioctl() 调用的包装器,如下图所示。这是否意味着对于 3D 游戏的每个新帧,游戏应用程序都需要调用 ioctl() 一次(如果需要达到 KMS,甚至可能调用两次)?这听起来像是大量的用户-内核空间障碍跨越(想想 120 fps 的游戏)。
c graphics ioctl drm linux-kernel
c ×1
drm ×1
graphics ×1
ioctl ×1
linux-kernel ×1