summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nvfx/nvfx_context.c
diff options
context:
space:
mode:
authorLuca Barbieri <luca@luca-barbieri.com>2010-08-09 05:05:12 +0200
committerLuca Barbieri <luca@luca-barbieri.com>2010-08-21 20:42:13 +0200
commit6a73d99a5236eeb822e9bdd26bd669638cf036c6 (patch)
tree7c462a61631fccd37bc777c9774f5569328b5a24 /src/gallium/drivers/nvfx/nvfx_context.c
parente189823eb4427e091e052d65cc9db3d7353f02bf (diff)
nvfx: properly unreference bound objects on context destruction
Diffstat (limited to 'src/gallium/drivers/nvfx/nvfx_context.c')
-rw-r--r--src/gallium/drivers/nvfx/nvfx_context.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/drivers/nvfx/nvfx_context.c b/src/gallium/drivers/nvfx/nvfx_context.c
index 7218abff22..3d45f5f0ba 100644
--- a/src/gallium/drivers/nvfx/nvfx_context.c
+++ b/src/gallium/drivers/nvfx/nvfx_context.c
@@ -1,5 +1,6 @@
#include "draw/draw_context.h"
#include "pipe/p_defines.h"
+#include "util/u_framebuffer.h"
#include "nvfx_context.h"
#include "nvfx_screen.h"
@@ -31,6 +32,13 @@ nvfx_destroy(struct pipe_context *pipe)
{
struct nvfx_context *nvfx = nvfx_context(pipe);
+ for(unsigned i = 0; i < nvfx->vtxbuf_nr; ++i)
+ pipe_resource_reference(&nvfx->vtxbuf[i].buffer, 0);
+ pipe_resource_reference(&nvfx->idxbuf.buffer, 0);
+ util_unreference_framebuffer_state(&nvfx->framebuffer);
+ for(unsigned i = 0; i < PIPE_MAX_SAMPLERS; ++i)
+ pipe_sampler_view_reference(&nvfx->fragment_sampler_views[i], 0);
+
if (nvfx->draw)
draw_destroy(nvfx->draw);
FREE(nvfx);