mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-29 16:00:24 +01:00
r600: clean up the GS ring buffers when the context is destroyed
This fixes two memory leaks reported by ASAN: Direct leak of 248 byte(s) in 1 object(s) allocated from: in malloc (/usr/lib64/gcc/x86_64-pc-linux-gnu/7.3.0/libasan.so+0xdb880) in r600_alloc_buffer_struct ../../samba/mesa/src/gallium/drivers/r600/r600_buffer_common.c:578 in r600_buffer_create ../../samba/mesa/src/gallium/drivers/r600/r600_buffer_common.c:600 in r600_resource_create_common ../../samba/mesa/src/gallium/drivers/r600/r600_pipe_common.c:1265 in r600_resource_create ../../samba/mesa/src/gallium/drivers/r600/r600_pipe.c:725 in pipe_buffer_create ../../samba/mesa/src/gallium/auxiliary/util/u_inlines.h:291 in update_gs_block_state ../../samba/mesa/src/gallium/drivers/r600/r600_state_common.c:1482 Direct leak of 248 byte(s) in 1 object(s) allocated from: in malloc (/usr/lib64/gcc/x86_64-pc-linux-gnu/7.3.0/libasan.so+0xdb880) in r600_alloc_buffer_struct ../../samba/mesa/src/gallium/drivers/r600/r600_buffer_common.c:578 in r600_buffer_create ../../samba/mesa/src/gallium/drivers/r600/r600_buffer_common.c:600 in r600_resource_create_common ../../samba/mesa/src/gallium/drivers/r600/r600_pipe_common.c:1265 in r600_resource_create ../../samba/mesa/src/gallium/drivers/r600/r600_pipe.c:722 in pipe_buffer_create ../../samba/mesa/src/gallium/auxiliary/util/u_inlines.h:291 in update_gs_block_state ../../samba/mesa/src/gallium/drivers/r600/r600_state_common.c:1489 Signed-off-by: Gert Wollny <gert.wollny@collabora.com> Fixes:1371d65a7fr600g: initial support for geometry shaders on evergreen (v2) Reviewed-by: Roland Scheidegger <sroland@vmware.com> (cherry picked from commit61b535437e)
This commit is contained in:
parent
3036ffa1a2
commit
3dd73ab248
1 changed files with 6 additions and 0 deletions
|
|
@ -105,6 +105,12 @@ static void r600_destroy_context(struct pipe_context *context)
|
|||
}
|
||||
util_unreference_framebuffer_state(&rctx->framebuffer.state);
|
||||
|
||||
if (rctx->gs_rings.gsvs_ring.buffer)
|
||||
pipe_resource_reference(&rctx->gs_rings.gsvs_ring.buffer, NULL);
|
||||
|
||||
if (rctx->gs_rings.esgs_ring.buffer)
|
||||
pipe_resource_reference(&rctx->gs_rings.esgs_ring.buffer, NULL);
|
||||
|
||||
for (sh = 0; sh < PIPE_SHADER_TYPES; ++sh)
|
||||
for (i = 0; i < PIPE_MAX_CONSTANT_BUFFERS; ++i)
|
||||
rctx->b.b.set_constant_buffer(context, sh, i, NULL);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue