mesa: add memory_barrier_by_region() helper
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 19 Jul 2017 08:34:06 +0000 (10:34 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 31 Jul 2017 11:53:39 +0000 (13:53 +0200)
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/mesa/main/barrier.c

index e55d13cb6b3e79efae630d2c920b6eb45d2d7d5a..0798d6efad2b6cd19ec32cdccb9523033322635c 100644 (file)
@@ -67,11 +67,10 @@ _mesa_MemoryBarrier(GLbitfield barriers)
       ctx->Driver.MemoryBarrier(ctx, barriers);
 }
 
-void GLAPIENTRY
-_mesa_MemoryBarrierByRegion(GLbitfield barriers)
+static ALWAYS_INLINE void
+memory_barrier_by_region(struct gl_context *ctx, GLbitfield barriers,
+                         bool no_error)
 {
-   GET_CURRENT_CONTEXT(ctx);
-
    GLbitfield all_allowed_bits = GL_ATOMIC_COUNTER_BARRIER_BIT |
                                  GL_FRAMEBUFFER_BARRIER_BIT |
                                  GL_SHADER_IMAGE_ACCESS_BARRIER_BIT |
@@ -100,7 +99,7 @@ _mesa_MemoryBarrierByRegion(GLbitfield barriers)
        *     value ALL_BARRIER_BITS, and has any bits set other than those
        *     described above."
        */
-      if ((barriers & ~all_allowed_bits) != 0) {
+      if (!no_error && (barriers & ~all_allowed_bits) != 0) {
          _mesa_error(ctx, GL_INVALID_VALUE,
                      "glMemoryBarrierByRegion(unsupported barrier bit");
       }
@@ -109,6 +108,13 @@ _mesa_MemoryBarrierByRegion(GLbitfield barriers)
    }
 }
 
+void GLAPIENTRY
+_mesa_MemoryBarrierByRegion(GLbitfield barriers)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   memory_barrier_by_region(ctx, barriers, false);
+}
+
 void GLAPIENTRY
 _mesa_BlendBarrier(void)
 {