Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormano-wii <germano.costa@ig.com.br>2018-11-17 05:23:17 +0300
committermano-wii <germano.costa@ig.com.br>2018-11-17 05:23:17 +0300
commit92d1e6606c94a261349019fdcbb612069e0b990a (patch)
treeff1fa34d2aff1abcc10c27f0e45162597a28ef00 /source/blender/draw/engines/eevee/eevee_shaders.c
parent2c347ebbba9b76c26f3a4b1e4f8bbe84cb90d1f4 (diff)
Draw Manager: Fix memory leak
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_shaders.c')
-rw-r--r--source/blender/draw/engines/eevee/eevee_shaders.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_shaders.c b/source/blender/draw/engines/eevee/eevee_shaders.c
index cf75130b2ce..40ea34f21e3 100644
--- a/source/blender/draw/engines/eevee/eevee_shaders.c
+++ b/source/blender/draw/engines/eevee/eevee_shaders.c
@@ -103,6 +103,7 @@ extern GlobalsUboStorage ts;
void EEVEE_shaders_lightprobe_shaders_init(void)
{
+ BLI_assert(e_data.probe_filter_glossy_sh == NULL);
char *shader_str = NULL;
shader_str = BLI_string_joinN(
@@ -269,23 +270,27 @@ GPUShader *EEVEE_shaders_velocity_resolve_sh_get(void)
GPUShader *EEVEE_shaders_taa_resolve_sh_get(EEVEE_EffectsFlag enabled_effects)
{
- GPUShader *sh = NULL;
- char *frag_str = BLI_string_joinN(
- datatoc_common_uniforms_lib_glsl,
- datatoc_common_view_lib_glsl,
- datatoc_bsdf_common_lib_glsl,
- datatoc_effect_temporal_aa_glsl);
-
+ GPUShader **sh;
+ char *define = NULL;
if (enabled_effects & EFFECT_TAA_REPROJECT) {
- sh = e_data.taa_resolve_reproject_sh = DRW_shader_create_fullscreen(frag_str, "#define USE_REPROJECTION\n");
+ sh = &e_data.taa_resolve_reproject_sh;
+ define = "#define USE_REPROJECTION\n";
}
else {
- sh = e_data.taa_resolve_sh = DRW_shader_create_fullscreen(frag_str, NULL);
+ sh = &e_data.taa_resolve_sh;
}
+ if (*sh == NULL) {
+ char *frag_str = BLI_string_joinN(
+ datatoc_common_uniforms_lib_glsl,
+ datatoc_common_view_lib_glsl,
+ datatoc_bsdf_common_lib_glsl,
+ datatoc_effect_temporal_aa_glsl);
- MEM_freeN(frag_str);
+ *sh = DRW_shader_create_fullscreen(frag_str, define);
+ MEM_freeN(frag_str);
+ }
- return sh;
+ return *sh;
}
void EEVEE_shaders_free(void)