Back to the OpenGL extension cross reference

GLX_EXT_import_context


Name


	EXT_import_context

Name Strings


	GLX_EXT_import_context

Version


    $Date: 1995/10/06 00:47:06 $ $Revision: 1.14 $

Number


	47

Dependencies


	This extension affects the definition of SGIX_FBConfig.

Overview


	This extension allows multiple X clients to share an indirect
rendering context.

Additional convenience procedures to get the current Display*
bound to a context as well as other context information are
also added.

Issues


	Does glXImportGLXContext also need to take an XVisualInfo*?
No. This information will be retrieved from the server.

New Procedures and Functions


	Display *glXGetCurrentDisplayEXT();

int glXQueryContextInfoEXT(Display *dpy, GLXContext context,
int attribute,int *value);

GLXContextID glXGetContextIDEXT(const GLXContext context);

GLXContext glXImportContextEXT(Display *dpy, GLXContextID contextID);

void glXFreeContextEXT(Display *dpy, GLXContext context);

New Tokens


	Accepted by the <attribute> parameter of glXQueryContextInfoEXT:

GLX_SHARE_CONTEXT_EXT 0x800A
GLX_VISUAL_ID_EXT 0x800B
GLX_SCREEN_EXT 0x800C

Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)


	None

Additions to Chapter 3 of the 1.0 Specification (Rasterization)


	None

Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations and the Frame Buffer)


	None

Additions to Chapter 5 of the 1.0 Specification (Special Functions)


	None

Additions to Chapter 6 of the 1.0 Specification (State and State Requests)


	None

Additions to the GLX Specification


	[Add the following to Section 3.2.4 of the GLX Specification
(Rendering Contexts)]

To get the display associated with the current context, use

Display *glXGetCurrentDisplayEXT();

If there is no current context, NULL is returned. No round trip
is forced to the server; unlike most X calls that return a value,
glXGetCurrentDisplayEXT does not flush any pending events.

To obtain the value of a context's attribute, use

int glXQueryContextInfoEXT(Display *dpy, GLXContext context,
int attribute, int *value);

glxQueryContextInfoEXT returns through <value> the value of
<attribute> for <context>. It may cause a round trip to the
server.

The values and types corresponding to each GLX context attribute
are listed in the table below.

GLX context attribute type context information
--------------------- ---- -------------------
GLX_SHARE_CONTEXT_EXT XID xid of the share list context
GLX_VISUAL_ID_EXT XID visual id
GLX_SCREEN_EXT int screen number

glxQueryContextInfoEXT returns GLX_BAD_ATTRIBUTE if <attribute>
is not a valid GLX context attribute or GLX_BAD_CONTEXT if <context>
is invalid, otherwise it returns Success.

To obtain the XID of a GLXContext, use

GLXContextID glXGetContextIDEXT(const GLXContext context);

No round trip is forced to the server; unlike most X calls that
return a value, glXGetContextIDEXT does not flush any
pending events.

To create a GLXContext given the XID of an existing GLXContext, use

GLXContext glXImportContextEXT(Display *dpy,
GLXContextID contextID);

glXImportContextEXT may be used in place of glXCreateContext to
share another process's indirect rendering context.

Only the server-side context information can be shared between
X clients; client-side state, such as pixel storage modes,
cannot be shared. Thus, glXImportContextEXT, must allocate
memory to store client-side information. This memory is freed
by calling glXFreeContextEXT.

This call does not create a new XID. It merely makes an
existing object available to the importing client (Display *).
Like any XID, it goes away when the creating client drops its
connection or the ID is explicitly deleted. Note that this is
when the XID goes away. The object goes away when the XID
goes away AND the context is not current to any thread.

If <contextID> does not refer to a valid context, then
a BadContext error is generated; if <contextID> refers to
direct rendering context then no error is generated but
glXImportContextEXT returns NULL.

To free the client-side part of a GLXContext that was created
with glXImportContext, use

void glXFreeContextEXT(Display *dpy, GLXContext context);

glXFreeContext does not free the server-side context information
or the XID associated with the server-side context.

[Add the following clarification to glXMakeCurrent]

Change:
If <context> is current to some other thread, then glXMakeCurrent
will generate a BadAccess error.

To:
If <context> is current to some other thread or process, then
glXMakeCurrent will generate a BadAccess error.

GLX Protocol


	One new GLX protocol command is added.

QueryContextInfo
1 CARD8 opcode (X assigned)
1 17 GLX opcode (glXVendorPrivateWithReply)
2 4 request length
4 15 vendor specific opcode
4 unused corresponds to context tag in header
4 GLX_CONTEXT context id
=>
1 1 Reply
1 unused
2 CARD16 sequence number
4 2*n reply length
4 CARD32 n
20 unused
8*n LISTofCARD32 attribute, value pairs

Errors


	None

New State


    	None

New Implementation Dependent State


	None

Implementation Support


   List of OpenGL implementations supporting the GLX_EXT_import_context extension

Original File


   Original text file for the GLX_EXT_import_context extension


Page generated on Sun Nov 20 18:37:32 2005