'''OpenGL extension SGIX.dmbuffer This module customises the behaviour of the OpenGL.raw.GLX.SGIX.dmbuffer to provide a more Python-friendly API Overview (from the spec) This extension introduces a new type of GLXPbuffer, a DM or Digital Media pbuffer. A DM pbuffer is a GLXPbuffer that adopts one or more of its buffers from an externally defined and allocated DMbuffer. In this way it resembles a GLXPixmap that attaches to an existing X pixmap. Like a standard pbuffer it can be used as a non-displayable rendering area, or as a read source for pixel data. The externally defined buffers of the DM pbuffer can be sequentially associated with other DM buffers of the same size and configuration. . The DM pbuffer is described with a new attrib passed to glXCreateGLXPbuffer. . A new GLX command allows associating a compatible DMbuffer with the DM GLXPbuffer. At associate time the DM buffers described by the DMparams are used directly as the corresponding buffers of the GLXPbuffer drawable, as described by the FBconfig. All other buffers that are part of the config will be created by GL without externally referenceable names. A DM pbuffer must be associated with a compatible DMbuffer before it can be made current to a GLX context. . The externally defined buffers of the DM pbuffer can be changed at any time by successfully associating a new DMbuffer with the GLXPbuffer through the associate command. It will be the application's responsibility to synchronize DMedia, GLX, and GL commands that effect the contents of the DM pbuffer. . Any direct GLX rendering context that satisfies config compatibility can be used to render to or read from a DM GLXPbuffer. A currently associated DMbuffer may simultaneously be in use by other clients on the same Display, but will not be destroyed while associated with a GLXPbuffer. When the GLXpbuffer is destroyed, all buffers that have no remaining clients, including the DMbuffer, will be freed. DM GLXPbuffers are proposed as a means for OpenGL to access buffers generated by the VL, compression, and other digital media libraries in a uniform way. The DMbuffer and DMparams descriptors are left intentionally abstract so that the GLX extension can adapt to future DM library changes. The initial implementation will require that the DMparams descriptor supply at least pixel format and packing information, and that the DMbuffer provide the size and location of a colorbuffer. GLX will do compatibility checking when possible based on the config, params, and buffer information at associate time. The official definition of this extension is available here: http://www.opengl.org/registry/specs/SGIX/dmbuffer.txt ''' from OpenGL import platform, constant, arrays from OpenGL import extensions, wrapper import ctypes from OpenGL.raw.GLX import _types, _glgets from OpenGL.raw.GLX.SGIX.dmbuffer import * from OpenGL.raw.GLX.SGIX.dmbuffer import _EXTENSION_NAME def glInitDmbufferSGIX(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( _EXTENSION_NAME ) ### END AUTOGENERATED SECTION