On Wed, Dec 21, 2016 at 12:32 PM, Charmaine Lee <charmai...@vmware.com> wrote:
>
> Hi Rob,
>
> Your mesa commit a5e733c mesa: drop current draw/read buffer when ctx is 
> released
> is causing rendering issue when running with vmware svga driver.
>
> The problem is when the winsys draw/read buffers are unreferenced, the whole 
> object
> including the underlying resource can be prematurely destroyed. When the 
> buffers are bound
> to a context again, the whole object hierarchy is recreated but we already 
> lost the previous
> content, hence causing rendering corruption.

It's possible perhaps that something else needs to be holding a
reference to the corresponding EGL level object?  IIRC the EGL level
object was freed but not mesa/st level object, leading to new EGL
surface being allocated w/ same ptr address and confusing mesa/st.
Which *definitely* seems wrong.

> I believe the winsys draw/read buffers are purposely there to be not 
> unreferenced at
> context unbind time. There are timestamps in st_framebuffer and 
> st_framebuffer_iface
> to keep track of when the frame buffer needs to be re-validated. Could it be
> somehow those stamps are out-of-sync in your case? Is there a better fix
> to your original problem?

*Maybe* but I don't totally understand how the timestamp thing is
expected to work.  But it is already a couple months ago that I was
debugging it and I won't really have the android setup again for a
while.

But somehow we either need to hold reference to the EGL surface while
we have a ptr to it or drop the reference so we don't have a stale ptr
that we can be confused by after a new EGL surface is created.

BR,
-R

>
> -Charmaine
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to