From fde2b9750ea9f37b018aaa26c9bbb6454cd1c016 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sat, 6 Dec 2003 17:17:42 +0000 Subject: basic API work for FBConfigs & Pbuffers --- include/GL/miniglx.h | 42 ++++++++++++++++++++++++++++++++++++++++-- src/glx/mini/miniglx.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 89 insertions(+), 3 deletions(-) diff --git a/include/GL/miniglx.h b/include/GL/miniglx.h index 7720d3536d0..4416e587d67 100644 --- a/include/GL/miniglx.h +++ b/include/GL/miniglx.h @@ -1,4 +1,4 @@ -/* $Id: miniglx.h,v 1.1 2003/08/23 01:25:30 jonsmirl Exp $ */ +/* $Id: miniglx.h,v 1.2 2003/12/06 17:17:42 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -91,6 +91,15 @@ typedef struct MiniGLXXVisualInfoRec { int bits_per_rgb; /**< \brief total bits per pixel */ } XVisualInfo; +/** + * \brief GLX Frame Buffer Configuration (for pbuffers) + * \sa \ref datatypes. + */ +typedef struct MiniGLXFBConfigRec { + XVisualInfo *visInfo; +} GLXFBConfig; + + /** * \brief Display handle. * @@ -132,6 +141,17 @@ typedef struct MiniGLXWindowRec *Drawable; */ typedef struct MiniGLXWindowRec *GLXDrawable; +/** + * \brief GLX pbuffer. + * + * Alias for the private ::MiniGLXWindowRec structure. + * + * Same as #Drawable. + * + * \sa \ref datatypes. + */ +typedef struct MiniGLXWindowRec *GLXPbuffer; + /** * \brief GLX context. * @@ -282,6 +302,8 @@ typedef union _XEvent { /*@{*/ /** \brief Defined if version 1.0 of Mini GLX is supported. */ #define MINI_GLX_VERSION_1_0 1 +/** \brief Defined if version 1.1 of Mini GLX is supported. */ +#define MINI_GLX_VERSION_1_1 1 /*@}*/ @@ -355,7 +377,8 @@ extern void XFree( void *data ); extern XVisualInfo * -XGetVisualInfo( Display *display, long vinfo_mask, XVisualInfo *vinfo_template, int *nitems_return ); +XGetVisualInfo( Display *display, long vinfo_mask, + XVisualInfo *vinfo_template, int *nitems_return ); /*@}*/ @@ -394,6 +417,21 @@ glXGetProcAddress( const GLubyte *procname ); extern Bool glXQueryVersion( Display *dpy, int *major, int *minor ); + +/* Added in MiniGLX 1.1 */ +extern GLXPbuffer +glXCreatePbuffer( Display *dpy, GLXFBConfig config, const int *attribList ); + +extern void +glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf ); + +extern GLXFBConfig * +glXChooseFBConfig( Display *dpy, int screen, const int *attribList, + int *nitems ); + +extern XVisualInfo * +glXGetVisualFromFBConfig( Display *dpy, GLXFBConfig config ); + /*@}*/ diff --git a/src/glx/mini/miniglx.c b/src/glx/mini/miniglx.c index 15563df3f3e..5cec09c8aa5 100644 --- a/src/glx/mini/miniglx.c +++ b/src/glx/mini/miniglx.c @@ -31,7 +31,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $Id: miniglx.c,v 1.2 2003/10/21 06:05:40 jonsmirl Exp $ */ +/* $Id: miniglx.c,v 1.3 2003/12/06 17:18:09 brianp Exp $ */ /** * \mainpage Mini GLX @@ -1935,6 +1935,10 @@ glXGetProcAddress( const GLubyte *procName ) { "XFreeColormap", (void *) XFreeColormap }, { "XFree", (void *) XFree }, { "XGetVisualinfo", (void *) XGetVisualInfo }, + { "glXCreatePbuffer", (void *) glXCreatePbuffer }, + { "glXDestroyPbuffer", (void *) glXDestroyPbuffer }, + { "glXChooseFBConfig", (void *) glXChooseFBConfig }, + { "glXGetVisualFromFBConfig", (void *) glXGetVisualFromFBConfig }, { NULL, NULL } }; const struct name_address *entry; @@ -1972,4 +1976,48 @@ glXQueryVersion( Display *dpy, int *major, int *minor ) } +/** + * \brief Create a new pbuffer. + */ +GLXPbuffer +glXCreatePbuffer( Display *dpy, GLXFBConfig config, const int *attribList ) +{ + return NULL; +} + + +void +glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf ) +{ + free(pbuf); +} + + +GLXFBConfig * +glXChooseFBConfig( Display *dpy, int screen, const int *attribList, + int *nitems ) +{ + GLXFBConfig *f = (GLXFBConfig *) malloc(sizeof(GLXFBConfig)); + f->visInfo = glXChooseVisual( dpy, screen, (int *) attribList ); + if (f->visInfo) { + *nitems = 1; + return f; + } + else { + *nitems = 0; + free(f); + return NULL; + } +} + + +XVisualInfo * +glXGetVisualFromFBConfig( Display *dpy, GLXFBConfig config ) +{ + /* XVisualInfo and GLXFBConfig are the same structure */ + (void) dpy; + return config.visInfo; +} + + /*@}*/ -- cgit v1.2.3