Mesa (master): mesa: Add a mutex and refcounting to gl_shader_state

Ian Romanick idr at kemper.freedesktop.org
Fri Feb 21 23:41:20 UTC 2014


Module: Mesa
Branch: master
Commit: 0f137a1d73c415dc8744d4b9e6c194232715f023
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0f137a1d73c415dc8744d4b9e6c194232715f023

Author: Gregory Hainaut <gregory.hainaut at gmail.com>
Date:   Fri Jun 28 13:43:43 2013 -0700

mesa: Add a mutex and refcounting to gl_shader_state

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

---

 src/mesa/main/mtypes.h    |    4 ++++
 src/mesa/main/shaderapi.c |    8 ++++++++
 2 files changed, 12 insertions(+)

diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index a29058b..48ae519 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 939e9801..ac95dc7 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);
 }
 
 




More information about the mesa-commit mailing list