Hi Kristian Høgsberg wrote: > 2009/3/24 Thomas Hellstrom <thellst...@vmware.com>: > >> Hi! >> >> It looks like the dri implementation is quite broken for >> makeContextCurrent(NULL, None, None). >> Drivers expect this to get through to the driver makeCurrent hook to be able >> to flush and to notify core mesa. >> > > I don't know that it's broken or that drivers expect this - it's never > been reported to be an issue before. But it's certainly a behaviour > we can change if we need to. > > The usage pattern is a little uncommon. I guess it's mostly needed for multithreading apps needing to transfer a context to another thread, and it will manifest itself as obscure multithreading bugs.
>> However the current glx code sends this request to the X server only, and >> the dri bindContext() hooks can't take NULL as a context argument, because >> they use the context argument to get function tables. >> >> I see two ways of fixing this: >> 1) Extend dri_glx::driBindContext to take an extra (__GLXDRIcontextPrivate >> *)argument which is never NULL, and similarly extend >> dri_util::driBindContext to take an extra (__DRIcontext *) argument to >> access the function tables. Can we do this? Any special care that needs to >> be taken with extension versioning etc?? I'm not 100% sure, but I think >> driBindContext used to let the (NULL, None, None) call through to the driver >> MakeCurrent at some point. >> >> 2) Make sure all drivers implement the following driUnbindContext code: >> (driUnbindContext is currently on the old context if any _after_ >> driBindContext is called for the new context) >> >> if (current_context == context_to_unbind) >> >> > > We call unbind context on the old context when switching to a new > context, whether that's NULL or not. Is that not sufficient for the > flushing you mention? > > It is, but I initially was a bit reluctant to use that hook, since it seems traditionally drivers expected the full makeCurrent functionality to be passed through driBindContext. But this is definitely the simplest way to fix things. I have some other non-intrusive dri / glx patches pending, that I'll send for review later this week. /Thomas > cheers, > Kristian > ------------------------------------------------------------------------------ Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are powering Web 2.0 with engaging, cross-platform capabilities. Quickly and easily build your RIAs with Flex Builder, the Eclipse(TM)based development software that enables intelligent coding and step-through debugging. Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com _______________________________________________ Mesa3d-dev mailing list Mesa3d-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mesa3d-dev