[Mesa-dev] [Mesa-stable] [PATCH] dri3: Fix MakeCurrent without a default framebuffer

Marek Olšák maraeo at gmail.com
Tue Jan 3 19:33:19 UTC 2017


Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Tue, Jan 3, 2017 at 12:41 AM, Fredrik Höglund <fredrik at kde.org> wrote:
> In OpenGL 3.0 and later it is legal to make a context current without
> a default framebuffer.
>
> This has been broken since DRI3 support was introduced.
>
> Cc: "13.0 12.0" <mesa-stable at lists.freedesktop.org>
> ---
>  src/glx/dri3_glx.c | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c
> index 358bd5f..4472a0b 100644
> --- a/src/glx/dri3_glx.c
> +++ b/src/glx/dri3_glx.c
> @@ -209,18 +209,24 @@ dri3_bind_context(struct glx_context *context, struct glx_context *old,
>     struct dri3_context *pcp = (struct dri3_context *) context;
>     struct dri3_screen *psc = (struct dri3_screen *) pcp->base.psc;
>     struct dri3_drawable *pdraw, *pread;
> +   __DRIdrawable *dri_draw = NULL, *dri_read = NULL;
>
>     pdraw = (struct dri3_drawable *) driFetchDrawable(context, draw);
>     pread = (struct dri3_drawable *) driFetchDrawable(context, read);
>
>     driReleaseDrawables(&pcp->base);
>
> -   if (pdraw == NULL || pread == NULL)
> +   if (pdraw)
> +      dri_draw = pdraw->loader_drawable.dri_drawable;
> +   else if (draw != None)
>        return GLXBadDrawable;
>
> -   if (!(*psc->core->bindContext) (pcp->driContext,
> -                                   pdraw->loader_drawable.dri_drawable,
> -                                   pread->loader_drawable.dri_drawable))
> +   if (pread)
> +      dri_read = pread->loader_drawable.dri_drawable;
> +   else if (read != None)
> +      return GLXBadDrawable;
> +
> +   if (!(*psc->core->bindContext) (pcp->driContext, dri_draw, dri_read))
>        return GLXBadContext;
>
>     return Success;
> --
> 2.1.4
>
> _______________________________________________
> mesa-stable mailing list
> mesa-stable at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-stable


More information about the mesa-dev mailing list