It turns out we can allow COHERENT storage/mappings all the time, regardless of LLC vs non-LLC. It just means never using temporary mappings to avoid GPU stalls, and on non-LLC we have to use the GTT intead of CPU mappings. If we were to use CPU maps on non-LLC (which might be useful if apps end up using buffer_storage on PBO reads, to avoid WC read slowness), those would be PERSISTENT but not COHERENT, but doing that would require us driving the clflushes from userspace somehow.
2f87935 i965: Add support for GL_ARB_buffer_storage.
docs/GL3.txt | 2 +-
src/mesa/drivers/dri/i965/intel_buffer_objects.c | 9 +++++++--
src/mesa/drivers/dri/i965/intel_extensions.c | 1 +
3 files changed, 9 insertions(+), 3 deletions(-)