Add a CoglTexturePixmapX11 texture backend
authorNeil Roberts <neil@linux.intel.com>
Tue, 25 May 2010 17:56:14 +0000 (18:56 +0100)
committerNeil Roberts <neil@linux.intel.com>
Tue, 22 Jun 2010 11:22:48 +0000 (12:22 +0100)
commita197baa53325a99c3a355486bf43a2ccbc1a6220
tree567ddbf9a250640df12e38401b6ca00cb96c2d1e
parentd42c3069d101d33cf12e2c836d610e906610846f
Add a CoglTexturePixmapX11 texture backend

This is a publicly exposed texture backend to create a texture which
contains the contents of an X11 pixmap. The API is currently marked as
experimental.

The backend internally holds a handle to another texture. All of the
backend virtuals simply redirect to the internal texture.

The texture can optionally be automatically updated if the
automatic_updates parameter is TRUE. If set then Cogl will listen for
damage events on the pixmap and update the texture accordingly.
Alternatively a damage object can be created externally and passed
down to Cogl.

The updates can be performed with XGetImage, XShmGetImage or the
GLX_EXT_texture_pixmap extension. If the TFP extension is used it will
optionally try to create a rectangle texture if the driver does not
support NPOTs or it is forced through the
COGL_PIXMAP_TEXTURE_RECTANGLE or CLUTTER_PIXMAP_TEXTURE_RECTANGLE
environment variables.

If the GLXFBConfig does not support mipmapping then it will fallback
to using X{Shm,}GetImage. It keeps a separate texture around for this
so that it can later start using the TFP texture again if the texture
is later drawn with mipmaps disabled.
clutter/cogl/cogl/Makefile.am
clutter/cogl/cogl/cogl-debug.c
clutter/cogl/cogl/cogl-debug.h
clutter/cogl/cogl/winsys/cogl-context-winsys.c
clutter/cogl/cogl/winsys/cogl-context-winsys.h
clutter/cogl/cogl/winsys/cogl-texture-pixmap-x11-private.h [new file with mode: 0644]
clutter/cogl/cogl/winsys/cogl-texture-pixmap-x11.c [new file with mode: 0644]
clutter/cogl/cogl/winsys/cogl-texture-pixmap-x11.h [new file with mode: 0644]
clutter/cogl/cogl/winsys/cogl-winsys-feature-functions.h