[Mesa-dev] [PATCH] fix regression caused by b4bb6680200b5a898583392f4c831c02f41e63f7
Xiang, Haihao
haihao.xiang at intel.com
Sun Nov 14 22:45:27 PST 2010
On Thu, 2010-11-11 at 10:14 +0800, Xiang, Haihao wrote:
> On Thu, 2010-11-11 at 01:47 +0800, Jerome Glisse wrote:
> > On Wed, Nov 10, 2010 at 12:28 PM, Eric Anholt <eric at anholt.net> wrote:
> > > On Wed, 10 Nov 2010 08:25:19 +0800, "Xiang, Haihao" <haihao.xiang at intel.com> wrote:
> > >> Any comment? If no problem, I will check in this fix.
> > >
> > > This should really be part of the core -- all drivers have to flush when
> > > changing current context.
> >
> > Agree.
> >
>
> I think the core should take pending commands into account, or we saw
> many rendering errors previously. The problem is that b4bb6680 set the
> current context to NULL in some DRI drivers.
>
> Anyway, how about this one?
Hi, Kristian
This patch fixes the regression since
b4bb6680200b5a898583392f4c831c02f41e63f7(dri: Unset current context and
dispatch table when unbinding). It works well for me with i965 driver,
however I have no chance to test it with other drivers. Do you have any
comments?
Thanks
Haihao
>
> diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
> index b60875b..292a9a6 100644
> --- a/src/mesa/main/context.c
> +++ b/src/mesa/main/context.c
> @@ -1381,6 +1381,7 @@ GLboolean
> _mesa_make_current( struct gl_context *newCtx, struct gl_framebuffer *drawBuffer,
> struct gl_framebuffer *readBuffer )
> {
> + GET_CURRENT_CONTEXT(curCtx);
> if (MESA_VERBOSE & VERBOSE_API)
> _mesa_debug(newCtx, "_mesa_make_current()\n");
>
> @@ -1401,6 +1402,11 @@ _mesa_make_current( struct gl_context *newCtx, struct gl_framebuffer *drawBuffer
> }
> }
>
> + if (curCtx &&
> + (curCtx->WinSysDrawBuffer || curCtx->WinSysReadBuffer) && /* make sure this context is valid for flushing */
> + curCtx != newCtx)
> + _mesa_flush(curCtx);
> +
> /* We used to call _glapi_check_multithread() here. Now do it in drivers */
> _glapi_set_context((void *) newCtx);
> ASSERT(_mesa_get_current_context() == newCtx);
>
>
>
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list