[Mesa-dev] [PATCH] egl/dri2: dri2_make_current: Release previous context's display
Michel Dänzer
michel at daenzer.net
Wed Aug 10 07:44:58 UTC 2016
On 10/08/16 03:00 PM, Nicolas Boichat wrote:
> eglMakeCurrent can also be used to change the active display. In that
> case, we need to decrement ref_count of the previous display (possibly
> destroying it), and increment it on the next display.
>
> Also, old_dsurf/old_rsurf cannot be non-NULL if old_ctx is NULL, so
> we only need to test if old_ctx is non-NULL.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97214
> Fixes: 9ee683f877 (egl/dri2: Add reference count for dri2_egl_display)
> Cc: "12.0" <mesa-stable at lists.freedesktop.org>
> Reported-by: Alexandr Zelinsky <mexahotabop at w1l.ru>
> Tested-by: Alexandr Zelinsky <mexahotabop at w1l.ru>
> Signed-off-by: Nicolas Boichat <drinkcat at chromium.org>
> ---
> src/egl/drivers/dri2/egl_dri2.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
> index 3205a36..701e42a 100644
> --- a/src/egl/drivers/dri2/egl_dri2.c
> +++ b/src/egl/drivers/dri2/egl_dri2.c
> @@ -1285,8 +1285,10 @@ dri2_make_current(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf,
>
> if (!unbind)
> dri2_dpy->ref_count++;
> - if (old_dsurf || old_rsurf || old_ctx)
> - dri2_display_release(disp);
> + if (old_ctx) {
> + EGLDisplay old_disp = _eglGetDisplayHandle(old_ctx->Resource.Display);
> + dri2_display_release(old_disp);
> + }
Unfortunately, this change breaks the piglit test "spec at egl
1.4 at eglterminate then unbind context", because old_ctx != NULL but
old_ctx->Resource.Display == NULL. Modifying the test to
if (old_ctx && old_ctx->Resource.Display) {
fixes the regression and doesn't seem to cause any other problems.
Alexandr, does the patch still fix your problem with that modification?
Nicolas, this regression is also reproducible with
LIBGL_ALWAYS_SOFTWARE=1 . Please get used to testing your changes like
that and only send out changes for review which don't cause any regressions.
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
More information about the mesa-dev
mailing list