summaryrefslogtreecommitdiffstats
path: root/src/mesa/main
diff options
context:
space:
mode:
authorFrancisco Jerez <[email protected]>2016-07-05 23:21:21 -0700
committerFrancisco Jerez <[email protected]>2016-08-24 13:28:30 -0700
commit303fb5881c36b8c1270f3c8071705eea336c341b (patch)
tree92bf4b1472f95718ffb40b600b483a788484febb /src/mesa/main
parent6a976bbf84c9c8790fa61bbeb5eb24a2e646c76c (diff)
mesa: Add blend barrier entry point and driver hook.
Both MESA_shader_framebuffer_fetch_non_coherent and the non-coherent variant of KHR_blend_equation_advanced will use this driver hook to request coherency between framebuffer reads and writes. This intentionally doesn't hook up glBlendBarrierMESA to the dispatch layer since the extension isn't exposed to applications yet, see [1] for more details. [1] https://lists.freedesktop.org/archives/mesa-dev/2016-July/124028.html Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa/main')
-rw-r--r--src/mesa/main/barrier.c14
-rw-r--r--src/mesa/main/barrier.h3
-rw-r--r--src/mesa/main/dd.h12
3 files changed, 29 insertions, 0 deletions
diff --git a/src/mesa/main/barrier.c b/src/mesa/main/barrier.c
index 7ae8fc6b0aa..42a5e0f9203 100644
--- a/src/mesa/main/barrier.c
+++ b/src/mesa/main/barrier.c
@@ -108,3 +108,17 @@ _mesa_MemoryBarrierByRegion(GLbitfield barriers)
ctx->Driver.MemoryBarrier(ctx, barriers);
}
}
+
+void GLAPIENTRY
+_mesa_BlendBarrierMESA(void)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ if (!ctx->Extensions.MESA_shader_framebuffer_fetch_non_coherent) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glBlendBarrier(not supported)");
+ return;
+ }
+
+ ctx->Driver.BlendBarrier(ctx);
+}
diff --git a/src/mesa/main/barrier.h b/src/mesa/main/barrier.h
index 8eee583c7ff..21dce90d074 100644
--- a/src/mesa/main/barrier.h
+++ b/src/mesa/main/barrier.h
@@ -47,4 +47,7 @@ _mesa_MemoryBarrier(GLbitfield barriers);
void GLAPIENTRY
_mesa_MemoryBarrierByRegion(GLbitfield barriers);
+void GLAPIENTRY
+_mesa_BlendBarrierMESA(void);
+
#endif /* BARRIER_H */
diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h
index a3dc191b444..257dc103817 100644
--- a/src/mesa/main/dd.h
+++ b/src/mesa/main/dd.h
@@ -958,6 +958,18 @@ struct dd_function_table {
/** @} */
/**
+ * GL_MESA_shader_framebuffer_fetch_non_coherent rendering barrier.
+ *
+ * On return from this function any framebuffer contents written by
+ * previous draw commands are guaranteed to be visible from subsequent
+ * fragment shader invocations using the
+ * MESA_shader_framebuffer_fetch_non_coherent interface.
+ */
+ /** @{ */
+ void (*BlendBarrier)(struct gl_context *ctx);
+ /** @} */
+
+ /**
* \name GL_ARB_compute_shader interface
*/
/*@{*/