Walk the array of cbufs backwards and free all of them.

v3: Rebase on top of changes since Aug 2014

Signed-off-by: Aaron Watry <awa...@gmail.com>
---
 src/gallium/drivers/r600/evergreen_compute.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/gallium/drivers/r600/evergreen_compute.c 
b/src/gallium/drivers/r600/evergreen_compute.c
index 90fdd79..4334743 100644
--- a/src/gallium/drivers/r600/evergreen_compute.c
+++ b/src/gallium/drivers/r600/evergreen_compute.c
@@ -252,6 +252,15 @@ void evergreen_delete_compute_state(struct pipe_context 
*ctx, void* state)
        if (!shader)
                return;
 
+       if (shader->ctx){
+               struct pipe_framebuffer_state *fb_state = 
&shader->ctx->framebuffer.state;
+               for (int i = fb_state->nr_cbufs - 1; fb_state->nr_cbufs > 0 ; 
i--){
+                       shader->ctx->b.b.surface_destroy(ctx, 
fb_state->cbufs[i]);
+                       fb_state->cbufs[i] = NULL;
+                       fb_state->nr_cbufs--;
+               }
+       }
+
        FREE(shader);
 }
 
-- 
2.1.0

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to