summaryrefslogtreecommitdiffstats
path: root/src/mesa/state_tracker
diff options
context:
space:
mode:
authorLionel Landwerlin <[email protected]>2019-07-31 12:12:10 +0300
committerLionel Landwerlin <[email protected]>2019-08-21 09:44:10 +0200
commite4da8b9c331cc3ae1b86b3a7860231e202463db0 (patch)
treec3d80cc597dc048be4382b0e0167d6e5a8ffdf47 /src/mesa/state_tracker
parent9f37bc419cb842bee902eb3117a20b7a57d64381 (diff)
mesa/compiler: rework tear down of builtin/types
The issue we're running into when running CTS is that glsl types are deleted while builtins depending on them are not. This happens because on one hand we have glsl types ref counted, but builtins are not. Instead builtins are destroyed when unloading libGL or explicitly calling glReleaseShaderCompiler(). This change removes almost entirely any dealing with glsl types ref/unref by letting the builtins deal with it instead. In turn we introduce a builtin ref count mechanism. Each GL context takes a reference on the builtins when compiling a shader for the first time. It releases the reference when the context is destroyed. It can also explicitly release those when glReleaseShaderCompiler() is called. Finally we also take a reference on the glsl types when loading libGL to avoid recreating glsl types too often. v2: Ensure we take a reference if we don't have one in link step (Lionel) Signed-off-by: Lionel Landwerlin <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110796 Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Tapani Pälli <[email protected]>
Diffstat (limited to 'src/mesa/state_tracker')
-rw-r--r--src/mesa/state_tracker/st_context.c5
1 files changed, 0 insertions, 5 deletions
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index eeceaf9ddd4..17436526c7b 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -1036,11 +1036,6 @@ st_destroy_context(struct st_context *st)
st_destroy_context_priv(st, true);
st = NULL;
- /* This must be called after st_destroy_context_priv() to avoid a race
- * condition between any shader compiler threads and context destruction.
- */
- _mesa_destroy_shader_compiler_types();
-
free(ctx);
if (save_ctx == ctx) {