From: Thomas H. <the...@vm...> - 2009-03-27 21:58:25
|
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; } 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 |