mesa/st: Free the ARB_vp/fp nir-to-tgsi temporary tokens.
authorEric Anholt <eric@anholt.net>
Mon, 11 Jan 2021 19:09:12 +0000 (11:09 -0800)
committerMarge Bot <eric+marge@anholt.net>
Tue, 12 Jan 2021 19:46:22 +0000 (19:46 +0000)
The driver interface doesn't take ownership of the TGSI tokens, so free
our temporary.

Fixes: cf3fc79cd0ab ("st/mesa: Replace mesa_to_tgsi() with prog_to_nir() and nir_to_tgsi().")
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8422>

src/mesa/state_tracker/st_program.c

index 7e360d3..7b8d27c 100644 (file)
@@ -745,6 +745,9 @@ st_create_vp_variant(struct st_context *st,
       else
          vpv->base.driver_shader = pipe->create_vs_state(pipe, &state);
 
+      if (state.type == PIPE_SHADER_IR_TGSI)
+         tgsi_free_tokens(state.tokens);
+
       return vpv;
    }
 
@@ -1351,6 +1354,9 @@ st_create_fp_variant(struct st_context *st,
       variant->base.driver_shader = pipe->create_fs_state(pipe, &state);
       variant->key = *key;
 
+      if (state.type == PIPE_SHADER_IR_TGSI)
+         tgsi_free_tokens(state.tokens);
+
       return variant;
    }