Tested on CEDAR

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

diff --git a/src/gallium/drivers/r600/evergreen_compute.c 
b/src/gallium/drivers/r600/evergreen_compute.c
index dcb7183..71a9218 100644
--- a/src/gallium/drivers/r600/evergreen_compute.c
+++ b/src/gallium/drivers/r600/evergreen_compute.c
@@ -238,7 +238,18 @@ void evergreen_delete_compute_state(struct pipe_context 
*ctx, void* state)
        if (!shader)
                return;
 
-       FREE(shader->kernels);
+       if (shader->kernels) {
+               for (int i = 0; i < shader->num_kernels; i++) {
+                       if (shader->kernels[i].code_bo) {
+                               pipe_resource_reference(
+                                       (struct pipe_resource**) 
&shader->kernels[i].code_bo,
+                                       NULL
+                               );
+                       }
+                       FREE(shader->kernels[i].bc.bytecode);
+               }
+               FREE(shader->kernels);
+       }
 
     if (shader->ctx){
         struct pipe_framebuffer_state *fb_state = 
&shader->ctx->framebuffer.state;
-- 
1.9.1

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

Reply via email to