[Mesa-dev] [PATCH 05/17] mesa: Move shader memory barrier functions into barrier.c.
Francisco Jerez
currojerez at riseup.net
Thu Jul 21 04:49:35 UTC 2016
---
src/mesa/main/barrier.c | 51 +++++++++++++++++++++++++++++++++++++++++++++
src/mesa/main/barrier.h | 6 ++++++
src/mesa/main/shaderimage.c | 51 ---------------------------------------------
src/mesa/main/shaderimage.h | 6 ------
4 files changed, 57 insertions(+), 57 deletions(-)
diff --git a/src/mesa/main/barrier.c b/src/mesa/main/barrier.c
index beb48fb..7ae8fc6 100644
--- a/src/mesa/main/barrier.c
+++ b/src/mesa/main/barrier.c
@@ -57,3 +57,54 @@ _mesa_TextureBarrierNV(void)
ctx->Driver.TextureBarrier(ctx);
}
+
+void GLAPIENTRY
+_mesa_MemoryBarrier(GLbitfield barriers)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ if (ctx->Driver.MemoryBarrier)
+ ctx->Driver.MemoryBarrier(ctx, barriers);
+}
+
+void GLAPIENTRY
+_mesa_MemoryBarrierByRegion(GLbitfield barriers)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ GLbitfield all_allowed_bits = GL_ATOMIC_COUNTER_BARRIER_BIT |
+ GL_FRAMEBUFFER_BARRIER_BIT |
+ GL_SHADER_IMAGE_ACCESS_BARRIER_BIT |
+ GL_SHADER_STORAGE_BARRIER_BIT |
+ GL_TEXTURE_FETCH_BARRIER_BIT |
+ GL_UNIFORM_BARRIER_BIT;
+
+ if (ctx->Driver.MemoryBarrier) {
+ /* From section 7.11.2 of the OpenGL ES 3.1 specification:
+ *
+ * "When barriers is ALL_BARRIER_BITS, shader memory accesses will be
+ * synchronized relative to all these barrier bits, but not to other
+ * barrier bits specific to MemoryBarrier."
+ *
+ * That is, if barriers is the special value GL_ALL_BARRIER_BITS, then all
+ * barriers allowed by glMemoryBarrierByRegion should be activated."
+ */
+ if (barriers == GL_ALL_BARRIER_BITS) {
+ ctx->Driver.MemoryBarrier(ctx, all_allowed_bits);
+ return;
+ }
+
+ /* From section 7.11.2 of the OpenGL ES 3.1 specification:
+ *
+ * "An INVALID_VALUE error is generated if barriers is not the special
+ * value ALL_BARRIER_BITS, and has any bits set other than those
+ * described above."
+ */
+ if ((barriers & ~all_allowed_bits) != 0) {
+ _mesa_error(ctx, GL_INVALID_VALUE,
+ "glMemoryBarrierByRegion(unsupported barrier bit");
+ }
+
+ ctx->Driver.MemoryBarrier(ctx, barriers);
+ }
+}
diff --git a/src/mesa/main/barrier.h b/src/mesa/main/barrier.h
index 0652d14..8eee583 100644
--- a/src/mesa/main/barrier.h
+++ b/src/mesa/main/barrier.h
@@ -41,4 +41,10 @@ _mesa_init_barrier_functions(struct dd_function_table *driver);
extern void GLAPIENTRY
_mesa_TextureBarrierNV(void);
+void GLAPIENTRY
+_mesa_MemoryBarrier(GLbitfield barriers);
+
+void GLAPIENTRY
+_mesa_MemoryBarrierByRegion(GLbitfield barriers);
+
#endif /* BARRIER_H */
diff --git a/src/mesa/main/shaderimage.c b/src/mesa/main/shaderimage.c
index 90643c4..db36e3b 100644
--- a/src/mesa/main/shaderimage.c
+++ b/src/mesa/main/shaderimage.c
@@ -753,54 +753,3 @@ _mesa_BindImageTextures(GLuint first, GLsizei count, const GLuint *textures)
_mesa_end_texture_lookups(ctx);
}
-
-void GLAPIENTRY
-_mesa_MemoryBarrier(GLbitfield barriers)
-{
- GET_CURRENT_CONTEXT(ctx);
-
- if (ctx->Driver.MemoryBarrier)
- ctx->Driver.MemoryBarrier(ctx, barriers);
-}
-
-void GLAPIENTRY
-_mesa_MemoryBarrierByRegion(GLbitfield barriers)
-{
- GET_CURRENT_CONTEXT(ctx);
-
- GLbitfield all_allowed_bits = GL_ATOMIC_COUNTER_BARRIER_BIT |
- GL_FRAMEBUFFER_BARRIER_BIT |
- GL_SHADER_IMAGE_ACCESS_BARRIER_BIT |
- GL_SHADER_STORAGE_BARRIER_BIT |
- GL_TEXTURE_FETCH_BARRIER_BIT |
- GL_UNIFORM_BARRIER_BIT;
-
- if (ctx->Driver.MemoryBarrier) {
- /* From section 7.11.2 of the OpenGL ES 3.1 specification:
- *
- * "When barriers is ALL_BARRIER_BITS, shader memory accesses will be
- * synchronized relative to all these barrier bits, but not to other
- * barrier bits specific to MemoryBarrier."
- *
- * That is, if barriers is the special value GL_ALL_BARRIER_BITS, then all
- * barriers allowed by glMemoryBarrierByRegion should be activated."
- */
- if (barriers == GL_ALL_BARRIER_BITS) {
- ctx->Driver.MemoryBarrier(ctx, all_allowed_bits);
- return;
- }
-
- /* From section 7.11.2 of the OpenGL ES 3.1 specification:
- *
- * "An INVALID_VALUE error is generated if barriers is not the special
- * value ALL_BARRIER_BITS, and has any bits set other than those
- * described above."
- */
- if ((barriers & ~all_allowed_bits) != 0) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glMemoryBarrierByRegion(unsupported barrier bit");
- }
-
- ctx->Driver.MemoryBarrier(ctx, barriers);
- }
-}
diff --git a/src/mesa/main/shaderimage.h b/src/mesa/main/shaderimage.h
index 85193e1..2cf0b0a 100644
--- a/src/mesa/main/shaderimage.h
+++ b/src/mesa/main/shaderimage.h
@@ -87,12 +87,6 @@ _mesa_BindImageTexture(GLuint unit, GLuint texture, GLint level,
void GLAPIENTRY
_mesa_BindImageTextures(GLuint first, GLsizei count, const GLuint *textures);
-void GLAPIENTRY
-_mesa_MemoryBarrier(GLbitfield barriers);
-
-void GLAPIENTRY
-_mesa_MemoryBarrierByRegion(GLbitfield barriers);
-
#ifdef __cplusplus
}
#endif
--
2.9.0
More information about the mesa-dev
mailing list