Hi!
Thomas Hellstrom wrote:
> Hi!
>
> I've sent two glx dri patches for review. The first one does some minor
> optimizations and propagates driver makeCurrent back.
> The second one is intended to fix the makeContextCurrent(NULL, None,
> None) call and to do some additional error checking. This was prompted
> by the newly added sharedtex_mt demo.
>
> Most if not all mesa dri drivers are still broken w r t to the above
> call, as it still does not get through to the driver makeCurrent hook.
> Instead the correct functionality needs to be implemented in the driver
> unbindContext hook, similar to the following:
>
> GLboolean
> viaUnbindContext(__DRIcontextPrivate * driContextPriv)
> {
> if (driContextPriv) {
> struct via_context *vmesa =
> (struct via_context *)driContextPriv->driverPrivate;
> GLcontext *ctx = vmesa->glCtx;
>
> GET_CURRENT_CONTEXT(oldctx);
> if (ctx == oldctx)
> VIA_FLUSH_DMA(vmesa);
>
> _mesa_make_current(NULL, NULL, NULL);
> }
>
> return GL_TRUE;
> }
>
>
Actually, the above code doesn't work, as unbindContext is always called
even if the new context and the old context are the same. Instead,
contexts need to be refcounted in the driver.
/Thomas
> In addition, if the context is changed in the driver makeCurrent hook,
> the driver needs to flush the old context first. That could
> theoretically also be done unbindContext, but since unbindContext is
> called on the old context _after_ makeCurrent, that may not be a good idea.
>
> /Thomas
>
>
>
>
>
>
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> Mesa3d-dev mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/mesa3d-dev
>
------------------------------------------------------------------------------
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev