r600g: don't leak driver const buffers
The buffers are referenced from r600_update_driver_const_buffers() -> r600_set_constant_buffer() -> u_upload_data(), but nothing ever releases the reference. Similar case with driver_consts. Found using valgrind. Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> Cc: <mesa-stable@lists.freedesktop.org> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
739ac3d39d
commit
0153ff8379
|
@ -68,6 +68,7 @@ static const struct debug_named_value r600_debug_options[] = {
|
|||
static void r600_destroy_context(struct pipe_context *context)
|
||||
{
|
||||
struct r600_context *rctx = (struct r600_context *)context;
|
||||
unsigned sh;
|
||||
|
||||
r600_isa_destroy(rctx->isa);
|
||||
|
||||
|
@ -76,6 +77,11 @@ static void r600_destroy_context(struct pipe_context *context)
|
|||
pipe_resource_reference((struct pipe_resource**)&rctx->dummy_cmask, NULL);
|
||||
pipe_resource_reference((struct pipe_resource**)&rctx->dummy_fmask, NULL);
|
||||
|
||||
for (sh = 0; sh < PIPE_SHADER_TYPES; sh++) {
|
||||
rctx->b.b.set_constant_buffer(&rctx->b.b, sh, R600_BUFFER_INFO_CONST_BUFFER, NULL);
|
||||
free(rctx->driver_consts[sh].constants);
|
||||
}
|
||||
|
||||
if (rctx->fixed_func_tcs_shader)
|
||||
rctx->b.b.delete_tcs_state(&rctx->b.b, rctx->fixed_func_tcs_shader);
|
||||
|
||||
|
|
Loading…
Reference in New Issue