Name MESA_multithread_makecurrent Name Strings GLX_MESA_multithread_makecurrent Contact Eric Anholt (eric.anholt@intel.com) Status Not shipping. Version Last Modified Date: 20 November 2009 Number XXX: fill me in Dependencies OpenGL 1.0 or later is required. GLX 1.4 or later is required. (XXX: is 1.4 the right version?) Overview The GLX context setup encourages multithreaded applications to create a context per thread which each operate on their own objects in parallel, and leaves synchronization for shared objects up to the application. For some applications, maintaining per-thread contexts and ensuring that the glFlush happens in one thread before another thread starts working on that object is difficult. For them, using the same context across multiple threads and protecting its usage with a global lock is both higher performance and easier to implement. This extension gives those applications that option by relaxing the context binding requirements. IP Status Open-source; freely implementable. Issues None. New Procedures and Functions None. New Tokens None. Additions to Chapter 3 of the GLX 1.4 Specification (Functions and Errors) Change section 3.3.7 Rendering Contexts from: If ctx is current to some other thread, then glXMakeContextCurrent will generate a BadAccess error. to: If GLX_MESA_multithread_make_current is not supported and ctx is current to some other thread, then glXMakeCurrentContext will generate a BadAccess error. If GLX_MESA_multithread_make_current is supported, then a BadAccess error will only be generated if draw does not match the context's draw or read does not match the context's read. GLX Protocol None. The GLX extension is client-side. Errors BadAccess - returned if the context is bound to another thread and the drawable doesn't match the current draw and read drawable of the context. New State None. Revision History 20 November 2009 Eric Anholt - initial specification