OSDN Git Service

etnaviv: Consolidate buffer references from framebuffers
authorTomeu Vizoso <tomeu.vizoso@collabora.com>
Mon, 17 Dec 2018 08:56:00 +0000 (09:56 +0100)
committerEmil Velikov <emil.l.velikov@gmail.com>
Wed, 30 Jan 2019 17:33:50 +0000 (17:33 +0000)
commit5e8af9e609632f7062bf9dc81b44c6877a7d8ee4
treead301ab97f6c6320d34f36180250c59d548e5811
parentf072585522a137b3b01cb08d624f6e3f340e6583
etnaviv: Consolidate buffer references from framebuffers

We were leaking surfaces because the references taken in
etna_set_framebuffer_state weren't being released on context destroy.

Instead of just directly releasing those references in
etna_context_destroy, use the util_copy_framebuffer_state helper.

Take the chance to remove the duplicated buffer references in
compiled_framebuffer_state to avoid confusion.

The leak can be reproduced with a client that continuously creates and
destroys contexts.

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reported-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
(cherry picked from commit bf1dfcc3e8120400c9a78d03dd914a786728b5f7)
[Emil: resolve trivial conflict - dummy_rt does not exist in branch]
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Conflicts:
src/gallium/drivers/etnaviv/etnaviv_context.c
src/gallium/drivers/etnaviv/etnaviv_context.c
src/gallium/drivers/etnaviv/etnaviv_internal.h
src/gallium/drivers/etnaviv/etnaviv_state.c