Same applies for Context resource.
Thank you!
On Thu, Apr 27, 2017 at 2:37 AM, Tapani Pälli <tapani.pa...@intel.com
<mailto:tapani.pa...@intel.com>> wrote:
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
<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>
<mailto: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>
<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>
<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>
<mailto: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>
<https://lists.freedesktop.org/mailman/listinfo/mesa-dev
<https://lists.freedesktop.org/mailman/listinfo/mesa-dev>>