mesa: add memory_barrier_by_region() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
Samuel Pitoiset 2017-07-19 10:34:06 +02:00
parent d21ae02fb2
commit 4de0033d73

View 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)
{