[Mesa-dev] [PATCH 1/4] r600g/compute: Don't leak cbufs in compute state

Michel Dänzer michel at daenzer.net
Sun Nov 16 23:45:24 PST 2014


On 14.11.2014 19:37, Marek Olšák wrote:
> surface_destroy should never be called directly, because surfaces have
> a reference counter. For unreferencing resources, use
> pipe_surface_reference(&pointer, NULL). It will call surface_destroy
> if needed.

Indeed, if this was the right place for this, it could be done both
easier and more robustly:

               for (int i = 0; i < fb_state->nr_cbufs; i++)
                       pipe_surface_reference(&fb_state->cbufs[i], NULL);


> On Fri, Nov 14, 2014 at 12:43 AM, Aaron Watry <awatry at gmail.com> wrote:
>> 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 <awatry at 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 at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 


-- 
Earthling Michel Dänzer            |                  http://www.amd.com
Libre software enthusiast          |                Mesa and X developer


More information about the mesa-dev mailing list