On 04/26/2017 05:08 PM, Mike Gorchak wrote:
Hi Tapani,
Sure, I can share them, but they are QNX based. And as far as I remember
it was an issue in the past :)
I thought to ask because there are some multithread dEQP EGL tests
around this and they are passing at the moment.
Surface and context reference counts are incremented in _eglBindContext
that gets called during makecurrent. Surface count decrements via
_eglPutSurface and _eglPutContext calls. AFAIK everything looks OK.
I think the simplest way for you is to add following calls to function
eglutCreateWindow():
https://cgit.freedesktop.org/mesa/demos/tree/src/egl/eglut/eglut.c#n321
|if (!eglMakeCurrent(_eglut->dpy, win->surface, win->surface,
win->context)) _eglutFatal("failed to make window current");|
to
|if (!eglMakeCurrent(_eglut->dpy, win->surface, win->surface,
win->context)) _eglutFatal("failed to make window current");
|
|||eglDestroySurface(|||_eglut->dpy, ||||win->surface|);|
|eglDestroyContext||(||||_eglut->dpy, ||||win->context||);|
And then run GLES 1.x gears for example. According to EGL specification,
these Destroy calls should be delayed till surface and context is not
current in any thread. Perhaps I understand specification too literally,
that's why I'm asking rather than reporting it as a bug.
Thank you!
On Wed, Apr 26, 2017 at 2:09 AM, Tapani Pälli <tapani.pa...@intel.com
<mailto:tapani.pa...@intel.com>> wrote:
On 04/25/2017 10:20 PM, Mike Gorchak wrote:
Hi all,
During a quick tests of latest Mesa3D versions at different
branches 12.x, 13.x, 17.x we have found that deferred context and
surface destroy doesn't work properly.
What kind of test case are you using, could you share this?
According to docs:
https://www.khronos.org/registry/EGL/sdk/docs/man/html/eglDestroySurface.xhtml
<https://www.khronos.org/registry/EGL/sdk/docs/man/html/eglDestroySurface.xhtml>
Description
If the EGL surface is not current to any thread, eglDestroySurface
destroys it immediately. Otherwise, surface is destroyed when it
becomes not current to any thread. Furthermore, resources
associated with a pbuffer surface are not released until all color
buffers of that pbuffer bound to a texture object have been released.
Same for context destroy:
https://www.khronos.org/registry/EGL/sdk/docs/man/html/eglDestroyContext.xhtml
<https://www.khronos.org/registry/EGL/sdk/docs/man/html/eglDestroyContext.xhtml>
Description
If the EGL rendering context is not current to any thread,
eglDestroyContext destroys it immediately. Otherwise, context is
destroyed when it becomes not current to any thread.
Should this behavior be handled at EGL common DRI2 level or DRI2
platform driver level or it should be handled by EGL itself? I can
see some refcounts implemented for EGL surfaces, buteglMakeCurrent
seems don't increment them for surfaces and contexts.
Thanks!
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org <mailto:mesa-dev@lists.freedesktop.org>
https://lists.freedesktop.org/mailman/listinfo/mesa-dev
<https://lists.freedesktop.org/mailman/listinfo/mesa-dev>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev