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.