[PATCH] Sync glcore.h with mesa HEAD.

Luc Verhaegen libv at skynet.be
Fri Mar 5 06:32:11 PST 2010


EXT_texture_from_pixmap was added close to 4ys ago, but this file never
got updated, leading to "interesting" behaviour when anything slightly less
standard is attempted.

Signed-off-by: Luc Verhaegen <libv at skynet.be>
---
 glcore.h |  369 +++++---------------------------------------------------------
 1 files changed, 28 insertions(+), 341 deletions(-)

diff --git a/glcore.h b/glcore.h
index 8c720e9..547b111 100644
--- a/glcore.h
+++ b/glcore.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/lib/GL/include/GL/internal/glcore.h,v 1.7 2001/03/25 05:32:00 tsi Exp $ */
 #ifndef __gl_core_h_
 #define __gl_core_h_
 
@@ -32,22 +31,16 @@
  * Silicon Graphics, Inc.
  */
 
-#ifndef XFree86LOADER
+#if !defined(_WIN32_WCE)
 #include <sys/types.h>
 #endif
 
-#ifdef CAPI
-#undef CAPI
-#endif
-#define CAPI
-
 #define GL_CORE_SGI  1
 #define GL_CORE_MESA 2
 #define GL_CORE_APPLE 4
 #define GL_CORE_WINDOWS 8
 
 typedef struct __GLcontextRec __GLcontext;
-typedef struct __GLinterfaceRec __GLinterface;
 
 /*
 ** This file defines the interface between the GL core and the surrounding
@@ -60,12 +53,18 @@ typedef struct __GLinterfaceRec __GLinterface;
 ** and used by the "operating system".
 */
 
-/*
-** Mode and limit information for a context.  This information is
-** kept around in the context so that values can be used during
-** command execution, and for returning information about the
-** context to the application.
-*/
+/**
+ * Mode and limit information for a context.  This information is
+ * kept around in the context so that values can be used during
+ * command execution, and for returning information about the
+ * context to the application.
+ * 
+ * Instances of this structure are shared by the driver and the loader.  To
+ * maintain binary compatability, new fields \b must be added only to the
+ * end of the structure.
+ * 
+ * \sa _gl_context_modes_create
+ */
 typedef struct __GLcontextModesRec {
     struct __GLcontextModesRec * next;
 
@@ -133,6 +132,13 @@ typedef struct __GLcontextModesRec {
     GLint swapMethod;
 
     GLint screen;
+
+    /* EXT_texture_from_pixmap */
+    GLint bindToTextureRgb;
+    GLint bindToTextureRgba;
+    GLint bindToMipmapTexture;
+    GLint bindToTextureTargets;
+    GLint yInverted;
 } __GLcontextModes;
 
 /* Several fields of __GLcontextModes can take these as values.  Since
@@ -162,333 +168,14 @@ typedef struct __GLcontextModesRec {
 #define GLX_PIXMAP_BIT                     0x00000002
 #define GLX_PBUFFER_BIT                    0x00000004
 
-/************************************************************************/
-
-/*
-** Structure used for allocating and freeing drawable private memory.
-** (like software buffers, for example).
-**
-** The memory allocation routines are provided by the surrounding
-** "operating system" code, and they are to be used for allocating
-** software buffers and things which are associated with the drawable,
-** and used by any context which draws to that drawable.  There are
-** separate memory allocation functions for drawables and contexts
-** since drawables and contexts can be created and destroyed independently
-** of one another, and the "operating system" may want to use separate
-** allocation arenas for each.
-**
-** The freePrivate function is filled in by the core routines when they
-** allocates software buffers, and stick them in "private".  The freePrivate
-** function will destroy anything allocated to this drawable (to be called
-** when the drawable is destroyed).
-*/
-typedef struct __GLdrawableRegionRec __GLdrawableRegion;
-typedef struct __GLdrawableBufferRec __GLdrawableBuffer;
-typedef struct __GLdrawablePrivateRec __GLdrawablePrivate;
-
-typedef struct __GLregionRectRec {
-    /* lower left (inside the rectangle) */
-    GLint x0, y0;
-    /* upper right (outside the rectangle) */
-    GLint x1, y1;
-} __GLregionRect;
-
-struct __GLdrawableRegionRec {
-    GLint numRects;
-    __GLregionRect *rects;
-    __GLregionRect boundingRect;
-};
-
-/************************************************************************/
-
-/* masks for the buffers */
-#define __GL_FRONT_BUFFER_MASK		0x00000001
-#define	__GL_FRONT_LEFT_BUFFER_MASK	0x00000001
-#define	__GL_FRONT_RIGHT_BUFFER_MASK	0x00000002
-#define	__GL_BACK_BUFFER_MASK		0x00000004
-#define __GL_BACK_LEFT_BUFFER_MASK	0x00000004
-#define __GL_BACK_RIGHT_BUFFER_MASK	0x00000008
-#define	__GL_ACCUM_BUFFER_MASK		0x00000010
-#define	__GL_DEPTH_BUFFER_MASK		0x00000020
-#define	__GL_STENCIL_BUFFER_MASK	0x00000040
-#define	__GL_AUX_BUFFER_MASK(i)		(0x0000080 << (i))
-
-#define __GL_ALL_BUFFER_MASK		0xffffffff
-
-/* what Resize routines return if resize resorted to fallback case */
-#define __GL_BUFFER_FALLBACK	0x10
-
-typedef void (*__GLbufFallbackInitFn)(__GLdrawableBuffer *buf, 
-				      __GLdrawablePrivate *glPriv, GLint bits);
-typedef void (*__GLbufMainInitFn)(__GLdrawableBuffer *buf, 
-				  __GLdrawablePrivate *glPriv, GLint bits,
-				  __GLbufFallbackInitFn back);
-
-/*
-** A drawable buffer
-**
-** This data structure describes the context side of a drawable.  
-**
-** According to the spec there could be multiple contexts bound to the same
-** drawable at the same time (from different threads).  In order to avoid
-** multiple-access conflicts, locks are used to serialize access.  When a
-** thread needs to access (read or write) a member of the drawable, it takes
-** a lock first.  Some of the entries in the drawable are treated "mostly
-** constant", so we take the freedom of allowing access to them without
-** taking a lock (for optimization reasons).
-**
-** For more details regarding locking, see buffers.h in the GL core
-*/
-struct __GLdrawableBufferRec {
-    /*
-    ** Buffer dimensions
-    */
-    GLint width, height, depth;
-
-    /*
-    ** Framebuffer base address
-    */
-    void *base;
-
-    /*
-    ** Framebuffer size (in bytes)
-    */
-    GLuint size;
-
-    /*
-    ** Size (in bytes) of each element in the framebuffer
-    */
-    GLuint elementSize;
-    GLuint elementSizeLog2;
-
-    /*
-    ** Element skip from one scanline to the next.
-    ** If the buffer is part of another buffer (for example, fullscreen
-    ** front buffer), outerWidth is the width of that buffer.
-    */
-    GLint outerWidth;
-
-    /*
-    ** outerWidth * elementSize
-    */
-    GLint byteWidth;
-
-    /*
-    ** Allocation/deallocation is done based on this handle.  A handle
-    ** is conceptually different from the framebuffer 'base'.
-    */
-    void *handle;
-
-    /* imported */
-    GLboolean (*resize)(__GLdrawableBuffer *buf,
-			GLint x, GLint y, GLuint width, GLuint height, 
-			__GLdrawablePrivate *glPriv, GLuint bufferMask);
-    void (*lock)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
-    void (*unlock)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
-    void (*fill)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv,
-    		GLuint val, GLint x, GLint y, GLint w, GLint h);
-    void (*free)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
-
-    /* exported */
-    void (*freePrivate)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
-#ifdef __cplusplus
-    void *privatePtr;
-#else
-    void *private;
-#endif
-
-    /* private */
-    void *other;	/* implementation private data */
-    __GLbufMainInitFn mainInit;
-    __GLbufFallbackInitFn fallbackInit;
-};
-
-/*
-** The context side of the drawable private
-*/
-struct __GLdrawablePrivateRec {
-    /*
-    ** Drawable Modes
-    */
-    __GLcontextModes *modes;
-
-    /*
-    ** Drawable size
-    */
-    GLuint width, height;
-
-    /*
-    ** Origin in screen coordinates of the drawable
-    */
-    GLint xOrigin, yOrigin;
-#ifdef __GL_ALIGNED_BUFFERS
-    /*
-    ** Drawable offset from screen origin
-    */
-    GLint xOffset, yOffset;
-
-    /*
-    ** Alignment restriction
-    */
-    GLint xAlignment, yAlignment;
-#endif
-    /*
-    ** Should we invert the y axis?
-    */
-    GLint yInverted;
-
-    /*
-    ** Mask specifying which buffers are renderable by the hw
-    */
-    GLuint accelBufferMask;
-
-    /*
-    ** the buffers themselves
-    */
-    __GLdrawableBuffer frontBuffer;
-    __GLdrawableBuffer backBuffer;
-    __GLdrawableBuffer accumBuffer;
-    __GLdrawableBuffer depthBuffer;
-    __GLdrawableBuffer stencilBuffer;
-#if defined(__GL_NUMBER_OF_AUX_BUFFERS) && (__GL_NUMBER_OF_AUX_BUFFERS > 0)
-    __GLdrawableBuffer *auxBuffer;
-#endif
-
-    __GLdrawableRegion ownershipRegion;
-
-    /*
-    ** Lock for the drawable private structure
-    */
-    void *lock;
-#ifdef DEBUG
-    /* lock debugging info */
-    int lockRefCount;
-    int lockLine[10];
-    char *lockFile[10];
-#endif
-
-    /* imported */
-    void *(*malloc)(size_t size);
-    void *(*calloc)(size_t numElem, size_t elemSize);
-    void *(*realloc)(void *oldAddr, size_t newSize);
-    void (*free)(void *addr);
-
-    GLboolean (*addSwapRect)(__GLdrawablePrivate *glPriv, 
-			     GLint x, GLint y, GLsizei width, GLsizei height);
-    void (*setClipRect)(__GLdrawablePrivate *glPriv, 
-			GLint x, GLint y, GLsizei width, GLsizei height);
-    void (*updateClipRegion)(__GLdrawablePrivate *glPriv);
-    GLboolean (*resize)(__GLdrawablePrivate *glPriv);
-    void (*getDrawableSize)(__GLdrawablePrivate *glPriv, 
-			    GLint *x, GLint *y, GLuint *width, GLuint *height);
-
-    void (*lockDP)(__GLdrawablePrivate *glPriv, __GLcontext *gc);
-    void (*unlockDP)(__GLdrawablePrivate *glPriv);
-
-    /* exported */
-#ifdef __cplusplus
-    void *privatePtr;
-#else
-    void *private;
-#endif
-    void (*freePrivate)(__GLdrawablePrivate *);
-
-    /* client data */
-    void *other;
-};
-
-/*
-** Macros to lock/unlock the drawable private
-*/
-#if defined(DEBUG)
-#define __GL_LOCK_DP(glPriv,gc) \
-    (*(glPriv)->lockDP)(glPriv,gc); \
-    (glPriv)->lockLine[(glPriv)->lockRefCount] = __LINE__; \
-    (glPriv)->lockFile[(glPriv)->lockRefCount] = __FILE__; \
-    (glPriv)->lockRefCount++
-#define __GL_UNLOCK_DP(glPriv) \
-    (glPriv)->lockRefCount--; \
-    (glPriv)->lockLine[(glPriv)->lockRefCount] = 0; \
-    (glPriv)->lockFile[(glPriv)->lockRefCount] = NULL; \
-    (*(glPriv)->unlockDP)(glPriv)
-#else /* DEBUG */
-#define __GL_LOCK_DP(glPriv,gc)		(*(glPriv)->lockDP)(glPriv,gc)
-#define	__GL_UNLOCK_DP(glPriv)		(*(glPriv)->unlockDP)(glPriv)
-#endif /* DEBUG */
-
-
-/*
-** Procedures which are imported by the GL from the surrounding
-** "operating system".  Math functions are not considered part of the
-** "operating system".
-*/
-typedef struct __GLimportsRec {
-    /* Memory management */
-    void * (*malloc)(__GLcontext *gc, size_t size);
-    void *(*calloc)(__GLcontext *gc, size_t numElem, size_t elemSize);
-    void *(*realloc)(__GLcontext *gc, void *oldAddr, size_t newSize);
-    void (*free)(__GLcontext *gc, void *addr);
-
-    /* Error handling */
-    void (*warning)(__GLcontext *gc, char *fmt);
-    void (*fatal)(__GLcontext *gc, char *fmt);
-
-    /* other system calls */
-    char *(CAPI *getenv)(__GLcontext *gc, const char *var);
-    int (CAPI *atoi)(__GLcontext *gc, const char *str);
-    int (CAPI *sprintf)(__GLcontext *gc, char *str, const char *fmt, ...);
-    void *(CAPI *fopen)(__GLcontext *gc, const char *path, const char *mode);
-    int (CAPI *fclose)(__GLcontext *gc, void *stream);
-    int (CAPI *fprintf)(__GLcontext *gc, void *stream, const char *fmt, ...);
-
-    /* Drawing surface management */
-    __GLdrawablePrivate *(*getDrawablePrivate)(__GLcontext *gc);
-    __GLdrawablePrivate *(*getReadablePrivate)(__GLcontext *gc);
-
-    /* Operating system dependent data goes here */
-    void *other;
-} __GLimports;
-
-/************************************************************************/
-
-/*
-** Procedures which are exported by the GL to the surrounding "operating
-** system" so that it can manage multiple GL context's.
-*/
-typedef struct __GLexportsRec {
-    /* Context management (return GL_FALSE on failure) */
-    GLboolean (*destroyContext)(__GLcontext *gc);
-    GLboolean (*loseCurrent)(__GLcontext *gc);
-    /* oldglPriv isn't used anymore, kept for backwards compatibility */
-    GLboolean (*makeCurrent)(__GLcontext *gc);
-    GLboolean (*shareContext)(__GLcontext *gc, __GLcontext *gcShare);
-    GLboolean (*copyContext)(__GLcontext *dst, const __GLcontext *src, GLuint mask);
-    GLboolean (*forceCurrent)(__GLcontext *gc);
-
-    /* Drawing surface notification callbacks */
-    GLboolean (*notifyResize)(__GLcontext *gc);
-    void (*notifyDestroy)(__GLcontext *gc);
-    void (*notifySwapBuffers)(__GLcontext *gc);
-
-    /* Dispatch table override control for external agents like libGLS */
-    struct __GLdispatchStateRec* (*dispatchExec)(__GLcontext *gc);
-    void (*beginDispatchOverride)(__GLcontext *gc);
-    void (*endDispatchOverride)(__GLcontext *gc);
-} __GLexports;
-
-/************************************************************************/
-
-/*
-** This must be the first member of a __GLcontext structure.  This is the
-** only part of a context that is exposed to the outside world; everything
-** else is opaque.
-*/
-struct __GLinterfaceRec {
-    __GLimports imports;
-    __GLexports exports;
-};
+#define GLX_BIND_TO_TEXTURE_RGB_EXT        0x20D0
+#define GLX_BIND_TO_TEXTURE_RGBA_EXT       0x20D1
+#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT     0x20D2
+#define GLX_BIND_TO_TEXTURE_TARGETS_EXT    0x20D3
+#define GLX_Y_INVERTED_EXT                 0x20D4
 
-extern __GLcontext *__glCoreCreateContext(__GLimports *, __GLcontextModes *);
-extern void __glCoreNopDispatch(void);
+#define GLX_TEXTURE_1D_BIT_EXT             0x00000001
+#define GLX_TEXTURE_2D_BIT_EXT             0x00000002
+#define GLX_TEXTURE_RECTANGLE_BIT_EXT      0x00000004
 
 #endif /* __gl_core_h_ */
-- 
1.6.0.2


--u3/rZRmxL6MmkK24--


More information about the xorg-devel mailing list