Phoronix: Another Shot At The KMS Page-Flipping Ioctl
Being worked on for the past several months by Kristian Høgsberg and other developers has been the KMS page-flipping ioctl, which makes it possible for kernel mode-setting drivers to benefit from tear-free updating of the screen with low-latency page-flipping. This kernel DRM ioctl is also a requirement for the Wayland Display Server...
You have to specify the next buffer to the ioctl, so you can use the ioctl for double buffering, triple buffering or anything you like. The number of buffers is determined by user space.
I asked because under Windows, I can force triple buffering from Catalyst Control Center for OpenGL apps, and am not sure if this is a driver feature (kernel space) or just something the control center (user space) does completely outside of kernel space.
In any event, isn't that ioctl supposed to be used by the drivers? Are games and applications expected to support triple buffering themselves? Under Windows, some do. The majority doesn't however, which is why you can force it in the drivers.
yes, the ioctl is supposed to be used by drivers or maybe even by frameworks like SDL, not directly by the games et al.
remember that a good portion of the driver runs in userspace. The kernel itself just manages resources and rendering time between processes (DRI + KSM), the actual drawing commands are issued from userspace (i.e. mesa).
can the driver force double/triple buffering for an application? Depends on the application. openGL itself doesn't provide a way to manage multiple buffers or vwaits at all, you need to use additional libraries (glut, SDL, Qt, ...). I don't know which of those rely on the driver for buffer management and which use their own.