Introduction to PEXlib

For a list of all PEXlib functions, see list of functions for the PEXlib programming interface.

The introductory topics include:

PEXlib is a programmer's interface to the PEX protocol. PEX is an extension to the X window system for supporting three-dimensional graphics. This particular definition of PEXlib is intended for use in the X window system environment.

PEXlib is designed as an extension to Xlib using the same transport and error mechanisms as Xlib. This includes all requests, replies, events and errors. This means synchronization (e.g., the XSync and XSynchronize functions) has the same effect on PEXlib requests as they do on Xlib requests. PEX events also are treated in the same way as X events (e.g., use the XNextEvent function).

To query the existence of the PEX server extension, invoke the XQueryExtension function using the name, PEX_NAME_STRING, defined in PEXlib include files.

There are several instances of PEX implementations in the industry at the time of this specification that do not utilize the X protocol extension mechanism. These implementations tend to bypass the X server completely where the X server is controlling a "local" screen and direct PEX output directly to a region on the screen. These implementations are often referred to as "direct-access" implementations. Because direct-access implementations do not follow the client-sever model, the definition of a "PEX server" becomes fuzzy. In a traditional client-server implementation, the PEX extension is implemented as part of the X server and the PEX extension itself is often called a "PEX server". In the direct-access model, the function of the PEX extension is often implemented in the PEXlib library, without any particular PEX implementation in the X server itself. To accommodate both of these situations, this specification uses the word "implementation" when referring to either the PEX server extension in the traditional client- server model or the PEXlib library in the direct-access model. In either case, the implementation should behave in the same manner to the programmer and end-user. Vendors who deviate in this respect should document such differences in their product documentation.