diff options
author | Lionel Landwerlin <[email protected]> | 2019-07-31 12:12:10 +0300 |
---|---|---|
committer | Lionel Landwerlin <[email protected]> | 2019-08-21 09:44:10 +0200 |
commit | e4da8b9c331cc3ae1b86b3a7860231e202463db0 (patch) | |
tree | c3d80cc597dc048be4382b0e0167d6e5a8ffdf47 /src/compiler/glsl/glsl_parser_extras.cpp | |
parent | 9f37bc419cb842bee902eb3117a20b7a57d64381 (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/compiler/glsl/glsl_parser_extras.cpp')
-rw-r--r-- | src/compiler/glsl/glsl_parser_extras.cpp | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/src/compiler/glsl/glsl_parser_extras.cpp b/src/compiler/glsl/glsl_parser_extras.cpp index e4a7e3dbf70..3ee1af57d50 100644 --- a/src/compiler/glsl/glsl_parser_extras.cpp +++ b/src/compiler/glsl/glsl_parser_extras.cpp @@ -2326,49 +2326,3 @@ do_common_optimization(exec_list *ir, bool linked, return progress; } - -extern "C" { - -/** - * To be called at GL context ctor. - */ -void -_mesa_init_shader_compiler_types(void) -{ - glsl_type_singleton_init_or_ref(); -} - -/** - * To be called at GL context dtor. - */ -void -_mesa_destroy_shader_compiler_types(void) -{ - glsl_type_singleton_decref(); -} - -/** - * To be called at GL teardown time, this frees compiler datastructures. - * - * After calling this, any previously compiled shaders and shader - * programs would be invalid. So this should happen at approximately - * program exit. - */ -void -_mesa_destroy_shader_compiler(void) -{ - _mesa_destroy_shader_compiler_caches(); -} - -/** - * Releases compiler caches to trade off performance for memory. - * - * Intended to be used with glReleaseShaderCompiler(). - */ -void -_mesa_destroy_shader_compiler_caches(void) -{ - _mesa_glsl_release_builtin_functions(); -} - -} |