Sync points in the Intel gfx driver

Why and how we're adding a sync API to the Intel gfx driver

Discussion of the motivation for explicit sync points and how we're implementing them in the Intel gfx driver, called i915 in the Linux kernel sources.

Explicit synchronization APIs like NVfence or ARBsync allow rendering clients to manage their GPU usage explicitly, rather than relying on an underlying implementation to implicitly synchronize activity reading and writing multiple buffers. In cases where the low level driver (generally in the kernel) doesn't have information about buffer usage, an explicit synchronization mechanism becomes necessary, and in the current i915 environment of implicit synchronization, an additional explicit API can still be useful for tracking performance, non-rendering activity like mode sets, and explicitly queueing unsynchronized activity that an implicit synchronization approach would prevent.