diff options
author | Tapani Pälli <[email protected]> | 2019-03-15 09:47:49 +0200 |
---|---|---|
committer | Tapani Pälli <[email protected]> | 2019-04-16 12:58:00 +0300 |
commit | 624789e3708c87ea2a4c8d2266266b489b421cba (patch) | |
tree | c59e3a43f0d8e7f0196237d4868046681c46fce6 /src/compiler/glsl/standalone.cpp | |
parent | 04508f57d1d36587f3cc048f0f5dae0611f9330c (diff) |
compiler/glsl: handle case where we have multiple users for types
Both Vulkan and OpenGL might be using glsl_types simultaneously or we
can also have multiple concurrent Vulkan instances using glsl_types.
Patch adds a one time init to track number of users and will release
types only when last user calls _glsl_type_singleton_decref().
This change fixes glsl_type memory leaks we have with anv driver.
v2: reuse hash_mutex, cleanup, apply fix also to radv driver and
rename helper functions (Jason)
v3: move init, destroy to happen on GL context init and destroy
Signed-off-by: Tapani Pälli <[email protected]>
Reviewed-by: Timothy Arceri <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/compiler/glsl/standalone.cpp')
-rw-r--r-- | src/compiler/glsl/standalone.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/compiler/glsl/standalone.cpp b/src/compiler/glsl/standalone.cpp index 942b9ee4986..7b3d358ca96 100644 --- a/src/compiler/glsl/standalone.cpp +++ b/src/compiler/glsl/standalone.cpp @@ -132,6 +132,7 @@ static void initialize_context(struct gl_context *ctx, gl_api api) { initialize_context_to_defaults(ctx, api); + glsl_type_singleton_init_or_ref(); /* The standalone compiler needs to claim support for almost * everything in order to compile the built-in functions. @@ -617,6 +618,6 @@ standalone_compiler_cleanup(struct gl_shader_program *whole_program) delete whole_program->FragDataIndexBindings; ralloc_free(whole_program); - _mesa_glsl_release_types(); + glsl_type_singleton_decref(); _mesa_glsl_release_builtin_functions(); } |