[Mesa-dev] [RFC] mesa: drop current draw/read buffer when ctx is released

Chih-Wei Huang cwhuang at linux.org.tw
Fri Oct 28 16:46:58 UTC 2016

2016-10-28 22:09 GMT+08:00 Rob Herring <robh at kernel.org>:
> +Mauro, Chih-Wei
> On Fri, Oct 28, 2016 at 7:22 AM, Rob Clark <robdclark at gmail.com> wrote:
>> On Fri, Oct 28, 2016 at 1:24 AM, Tapani Pälli <tapani.palli at intel.com> wrote:
>>> On 10/27/2016 01:48 PM, Rob Clark wrote:
>>>> On Thu, Oct 27, 2016 at 2:59 AM, Tapani Pälli <tapani.palli at intel.com>
>>>> wrote:
>>>>> On 10/27/2016 12:16 AM, Rob Clark wrote:
>>>>>> So, not quite sure if this is the *correct* solution, but it is at least
>>>>>> *a* solution to a problem with android wallpaper vs mesa that I've been
>>>>>> debugging.  Basically, what happens is:
>>>>> Could you tell more how to trigger this, is this with some particular
>>>>> live
>>>>> wallpaper and has this been working before (regression)? For me at least
>>>>> these default wallpapers have been working ok.
>>>> Actually, it is the default static wallpaper that is problematic.  And
>>>> IIRC, it has never worked, at least not with any of the gallium
>>>> drivers (freedreno, virgl, vc4, etc).  Live-wallpaper did work, but
>>>> does not appear to exist in AOSP builds anymore.
>>>> If this works with i965 on android, I'd be curious how.  Or if you're
>>>> android build had some mesa patches that are not upstream?
>>> I can confirm that default wallpaper is working on i965. Our Mesa tree
>>> currently looks like this:
>>> https://github.com/android-ia/external-mesa
>>> It's now quite a bit behind though because we were dealing with some
>>> non-graphics issues and are planning to rebase soon.
>> I suppose it is possible that it is triggered by something different
>> that mesa/st does vs dri/i965?  Although I find it odd that
>> dri2_make_current() would drop the reference to the EGLSurface when
>> unbinding ctx, but _mesa_make_current() would not drop the reference
>> to the corresponding gl_framebuffer.
>> Maybe the classic driver is holding an extra reference to the
>> EGLSurface so the _eglPutSurface() call in dri2_make_current() does
>> not actually drop the last refcnt?  Which would ensure when the window
>> surface is created it ends up with a different address..
>> but, I wonder if you could try w/ Rob Herring's tree.. this is what we
>> are using for the upstream kernel + AOSP builds[1]:
>>   https://github.com/robherring/mesa/commits/android-m
>> I guess in theory we should both need the same patches on top of
>> mesa..  although also I guess we should also just try to get to the
>> point where we can both use upstream mesa tree directly.
> Looks like we have some similar patches for gralloc headers and using
> render node (since I picked up Tomasz's patches).
>> [1] see: https://github.com/robherring/generic_device/wiki/KConfig-based-Multi-platform-Android-Device-(and-Mesa-graphics)
>> Btw, I guess in theory the qemu/x86 build from rob's generic_device
>> stuff should also work on real hw, so I think we should be able to
>> test exact same build that is failing with gallium/virgl with i965.
>> But I don't have any real hw for that.
> Mauro or Chih-Wei should be able to answer this (being do static
> wallpapers work in i965?).

Yes, it works i i965.
But it does break on some gallium drivers sometimes.

More information about the mesa-dev mailing list