OpenGL.GL.APPLE.object_purgeable
index
/home/mcfletch/pylive/OpenGL/GL/APPLE/object_purgeable.py

OpenGL extension APPLE.object_purgeable
 
This module customises the behaviour of the 
OpenGL.raw.GL.APPLE.object_purgeable to provide a more 
Python-friendly API
 
Overview (from the spec)
        
        This extension provides the ability to mark the storage of OpenGL
        objects as "purgeable".
        
        Many of today's modern virtual memory systems include the concept of
        purgeability in order to avoid unnecessary paging when the object
        contents are no longer needed.  In OpenGL, objects such as textures,
        vertex buffers, pixel buffers, and renderbuffers all have
        significant storage requirements.  By default, the OpenGL is
        required to preserve the contents of these objects regardless of
        system resource stress, such as vram shortage or physical memory
        shortage.  Often this is accomplished by temporarily paging the
        contents of objects that are not currently needed to some kind of
        secondary storage area.  This paging operation can be an unnecessary
        computational expense in the cases where the data is not going to be
        used again or where the content can be reproduced by the application
        with less expense than the paging operation would require.
        
        This extension defines a mechanism for the application to mark the
        storage of OpenGL objects as "purgeable" in order to influence these
        paging operations.  The application can further control the
        semantics of making object storage "purgeable" with two options
        ("volatile" and "released") and "unpurgeable" with two options
        ("undefined" and "retained")
        
        Applications that use this extension will typically follow one of
        two operational models.  The typical model for most applications is
        to mark an object storage as "purgeable" with the "volatile" option,
        and then later mark the storage as "unpurgeable" with the "retained"
        option. When this happens, the application may or may not need to
        respecify the object contents, depending on the whether the object
        storage was actually released.  The application can find out whether
        the storage was released by examining the return value of the
        function which marks the storage as "unpurgeable".  This model is
        useful when the application does not know at the time it marks the
        object storage as "purgeable" whether it will later need those
        contents to be valid.
        
        Another operational model is for an application to mark the storage
        for an object as "purgeable" with the "released" option, and then
        later mark the object "unpurgeable" with the "undefined" option.  In
        this latter model, the application intends to unconditionally reload
        the object contents later on, and so it tells the GL that it is okay
        if the contents are "undefined" when the storage is re-allocated.
        
        Note that in both models, it is possible for the contents to become
        undefined since they could have actually been purged from the system
        in either case.  The various options are still useful, however,
        since they give more information to the GL about what the
        application expects to happen and the GL can use this information to
        make better predictions about which paging choices will be more
        efficient.
 
The official definition of this extension is available here:
http://www.opengl.org/registry/specs/APPLE/object_purgeable.txt

 
Modules
       
OpenGL.arrays
OpenGL.constant
OpenGL.constants
ctypes
OpenGL.extensions
OpenGL.GL.glget
OpenGL.platform
OpenGL.wrapper

 
Data
        EXTENSION_NAME = 'GL_APPLE_object_purgeable'
GL_BUFFER_OBJECT_APPLE = GL_BUFFER_OBJECT_APPLE
GL_PURGEABLE_APPLE = GL_PURGEABLE_APPLE
GL_RELEASED_APPLE = GL_RELEASED_APPLE
GL_RETAINED_APPLE = GL_RETAINED_APPLE
GL_UNDEFINED_APPLE = GL_UNDEFINED_APPLE
GL_VOLATILE_APPLE = GL_VOLATILE_APPLE
__file__ = '/home/mcfletch/pylive/OpenGL/GL/APPLE/object_purgeable.pyc'
__name__ = 'OpenGL.GL.APPLE.object_purgeable'
__package__ = 'OpenGL.GL.APPLE'
glGetObjectParameterivAPPLE = <OpenGL.platform.baseplatform.glGetObjectParameterivAPPLE object at 0x77ccad0>
glObjectPurgeableAPPLE = <OpenGL.platform.baseplatform.glObjectPurgeableAPPLE object at 0x77cca10>
glObjectUnpurgeableAPPLE = <OpenGL.platform.baseplatform.glObjectUnpurgeableAPPLE object at 0x77cca50>