On Mon, Mar 30, 2009 at 4:46 AM, Thomas Hellstrom <[email protected]> wrote:
> 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.

Do you have a new patch on the way or do you want me to look at the
ones you sent earlier?

cheers,
Kristian

------------------------------------------------------------------------------
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to