summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/radeon/radeon_screen.c
diff options
context:
space:
mode:
authorJerome Glisse <glisse@freedesktop.org>2008-11-14 11:25:28 +0100
committerJerome Glisse <glisse@freedesktop.org>2008-11-14 11:26:17 +0100
commit5b79c18c83288eaaa6af25fdf3fe71b8347b5c1d (patch)
tree3886605dda186b66c10829293ecfad894a5ad2af /src/mesa/drivers/dri/radeon/radeon_screen.c
parent93a9d2f18de8517af92eba787a4eee34765481ab (diff)
radeon: dri2 don't forget to free buffer
Diffstat (limited to 'src/mesa/drivers/dri/radeon/radeon_screen.c')
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_screen.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
index 9cc91ac197..93131d269c 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
@@ -1059,6 +1059,7 @@ radeonDestroyScreen( __DRIscreenPrivate *sPriv )
return;
if (sPriv->dri2.enabled) {
+ radeon_tracker_print(&screen->bom->tracker, stderr);
radeon_bo_manager_gem_shutdown(screen->bom);
} else {
radeon_bo_manager_legacy_shutdown(screen->bom);
@@ -1357,6 +1358,22 @@ radeonCreateBuffer( __DRIscreenPrivate *driScrnPriv,
static void
radeonDestroyBuffer(__DRIdrawablePrivate *driDrawPriv)
{
+ struct radeon_renderbuffer *rb;
+ GLframebuffer *fb;
+
+ fb = (void*)driDrawPriv->driverPrivate;
+ rb = (void *)fb->Attachment[BUFFER_FRONT_LEFT].Renderbuffer;
+ if (rb && rb->bo) {
+ radeon_bo_unref(rb->bo);
+ }
+ rb = (void *)fb->Attachment[BUFFER_BACK_LEFT].Renderbuffer;
+ if (rb && rb->bo) {
+ radeon_bo_unref(rb->bo);
+ }
+ rb = (void *)fb->Attachment[BUFFER_DEPTH].Renderbuffer;
+ if (rb && rb->bo) {
+ radeon_bo_unref(rb->bo);
+ }
_mesa_unreference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)));
}