[Mesa-dev] [PATCH v14 15/36] i965: Improve same-buffer restriction for imports

Jason Ekstrand jason at jlekstrand.net
Tue Jun 6 06:03:45 UTC 2017


On June 5, 2017 6:10:22 PM Varad Gautam <varad.gautam at collabora.com> wrote:

> Hi Daniel,
>
> On Mon, 2017-06-05 at 14:53 +0100, Daniel Stone wrote:
>> Hi Varad,
>>
>> On 30 May 2017 at 12:53, Varad Gautam <varadgautam at gmail.com> wrote:
>> >
>> > +   /* We only support all planes from the same bo.
>> > +    * brw_bo_gem_create_from_prime() should return the same pointer for all
>> > +    * fds received here */
>> > +   bo = brw_bo_gem_create_from_prime(screen->bufmgr, fds[0], size);
>> > +   for (i = 1; i < num_fds; i++) {
>> > +      if (bo != brw_bo_gem_create_from_prime(screen->bufmgr, fds[i], size))
>> > +         return NULL;
>>
>> This above takes a ref, which gets leaked.
>>
>>            struct brw_bo *aux =
>> brw_bo_gem_create_from_prime(screen->bufmgr, fds[i], size);
>>            brw_bo_unreference(aux);
>>            if (aux != bo)
>
> Thanks for spotting this. Can the unref(aux) happen before comparing 
> against bo?

That should be fine as we have a reference to bo. If the two pointers 
compare equal they after the under the they were equal before the unref so 
they were the same before the unref.

> Or should this be something like:
>    for (...) {
>       struct brw_bo *aux = brw_bo_gem_create_from_prime(screen->bufmgr, fds[i],
> size);
>       if (aux != bo) {
>          brw_bo_unreference(aux);
>          return NULL;
>       }
>       brw_bo_unreference(aux);
>    }
>>               return NULL;
>>
>> Thanks for the fix!
>>
>> Cheers,
>> Daniel
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev




More information about the mesa-dev mailing list