[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