[Mesa-dev] [PATCH] egl_dri2: fix aux buffer leak in drm platform

Kristian Høgsberg krh at bitplanet.net
Tue Apr 10 16:02:38 PDT 2012


On Tue, Apr 10, 2012 at 6:30 PM, Mandeep Baines
<mandeep.baines at gmail.com> wrote:
> Attached is the test case I've been using.

Nice, I've been meaning to update eglkms.c to also demonstrate
pageflipping.  Do you mind if I commit your version?

Kristian

> On Tue, Apr 10, 2012 at 3:26 PM,  <mandeep.baines at gmail.com> wrote:
>> From: Mandeep Singh Baines <msb at chromium.org>
>>
>> Keep a reference to any newly allocated aux buffers to avoid
>> re-allocating for every st_framebuffer_validate() (i.e. leaking).
>>
>> Signed-off-by: Mandeep Singh Baines <msb at chromium.org>
>> Cc: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira at intel.com>
>> Cc: Benjamin Franzke <benjaminfranzke at googlemail.com>
>> Cc: Kristian Hogsberg <krh at bitplanet.net>
>> Cc: David Reveman <reveman at chromium.org>
>> Cc: Stephane Marchesin <marcheu at chromium.org>
>> ---
>>  src/egl/drivers/dri2/platform_drm.c |    9 ++++-----
>>  1 files changed, 4 insertions(+), 5 deletions(-)
>>
>> diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c
>> index 18ecd17..54067ff 100644
>> --- a/src/egl/drivers/dri2/platform_drm.c
>> +++ b/src/egl/drivers/dri2/platform_drm.c
>> @@ -220,16 +220,15 @@ get_aux_bo(struct dri2_egl_surface *dri2_surf,
>>  {
>>    struct dri2_egl_display *dri2_dpy =
>>       dri2_egl_display(dri2_surf->base.Resource.Display);
>> -   __DRIbuffer *b;
>> +   __DRIbuffer *b = dri2_surf->dri_buffers[attachment];
>>
>> -   b = NULL;
>> -   if (dri2_surf->dri_buffers[attachment])
>> -      b = dri2_surf->dri_buffers[attachment];
>> -   if (b == NULL)
>> +   if (b == NULL) {
>>       b = dri2_dpy->dri2->allocateBuffer(dri2_dpy->dri_screen,
>>                                         attachment, format,
>>                                         dri2_surf->base.Width,
>>                                         dri2_surf->base.Height);
>> +      dri2_surf->dri_buffers[attachment] = b;
>> +   }
>>    if (b == NULL)
>>       return -1;
>>
>> --
>> 1.7.3.4
>>


More information about the mesa-dev mailing list