diff options
author | Gregory Hainaut <[email protected]> | 2013-06-28 13:43:43 -0700 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2014-02-21 15:41:02 -0800 |
commit | 0f137a1d73c415dc8744d4b9e6c194232715f023 (patch) | |
tree | affe87d5f8ad08c2225cfdbb01635618210bbc71 /src/mesa | |
parent | 47476fa673eb2eaf3046674c35bce533b38ad800 (diff) |
mesa: Add a mutex and refcounting to gl_shader_state
Reviewed-by: Ian Romanick <[email protected]>
Reviewed-by: Jordan Justen <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/main/mtypes.h | 4 | ||||
-rw-r--r-- | src/mesa/main/shaderapi.c | 8 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index a29058badae..48ae519ed57 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -2760,6 +2760,10 @@ struct gl_shader_program */ struct gl_shader_state { + GLint RefCount; + + _glthread_Mutex Mutex; + /** * Programs used for rendering * diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index 939e980174e..ac95dc735cf 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -121,6 +121,10 @@ _mesa_init_shader_state(struct gl_context *ctx) memcpy(&ctx->ShaderCompilerOptions[sh], &options, sizeof(options)); ctx->Shader.Flags = _mesa_get_shader_flags(); + + /* Extended for ARB_separate_shader_objects */ + ctx->Shader.RefCount = 1; + _glthread_INIT_MUTEX(ctx->Shader.Mutex); } @@ -138,6 +142,10 @@ _mesa_free_shader_state(struct gl_context *ctx) _mesa_reference_shader_program(ctx, &ctx->Shader._CurrentFragmentProgram, NULL); _mesa_reference_shader_program(ctx, &ctx->Shader.ActiveProgram, NULL); + + /* Extended for ARB_separate_shader_objects */ + assert(ctx->Shader.RefCount == 1); + _glthread_DESTROY_MUTEX(ctx->Shader.Mutex); } |