glxapi.c revision fd54564f78d4aeae2c39ada7502ec659c14b3eca
1afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/* 2afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Mesa 3-D graphics library 3fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul * Version: 7.1 4afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * 5fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. 6afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * 7afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Permission is hereby granted, free of charge, to any person obtaining a 8afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * copy of this software and associated documentation files (the "Software"), 9afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * to deal in the Software without restriction, including without limitation 10afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * the rights to use, copy, modify, merge, publish, distribute, sublicense, 11afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * and/or sell copies of the Software, and to permit persons to whom the 12afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Software is furnished to do so, subject to the following conditions: 13afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * 14afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * The above copyright notice and this permission notice shall be included 15afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * in all copies or substantial portions of the Software. 16afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * 17afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 21afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach */ 24afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 25afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 26e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/* 27e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * This is the GLX API dispatcher. Calls to the glX* functions are 28b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul * either routed to the real GLX encoders or to Mesa's pseudo-GLX functions. 291d822ea8cfa765802fe63b1a5d8d2bd83118007fBrian Paul * See the glxapi.h file for more details. 30e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul */ 31e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 32afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 33e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#include <assert.h> 34e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#include <stdlib.h> 3555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul#include <stdio.h> 361487b3ea3ed0d30fa70655247e65d0ede3eef3afJon Taylor#include <string.h> 37be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul#include "glheader.h" 38e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul#include "glapi.h" 39e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#include "glxapi.h" 40afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 41afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 42b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paulextern struct _glxapi_table *_real_GetGLXDispatchTable(void); 43e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulextern struct _glxapi_table *_mesa_GetGLXDispatchTable(void); 44afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 45afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 46e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstruct display_dispatch { 47e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul Display *Dpy; 48e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul struct _glxapi_table *Table; 49e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul struct display_dispatch *Next; 50e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul}; 51afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 52e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstatic struct display_dispatch *DispatchList = NULL; 53afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 54e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 5555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul/* Display -> Dispatch caching */ 5655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paulstatic Display *prevDisplay = NULL; 5755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paulstatic struct _glxapi_table *prevTable = NULL; 5855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul 5955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul 60e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstatic struct _glxapi_table * 61e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulget_dispatch(Display *dpy) 62afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 63e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!dpy) 64e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 65e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 66e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul /* search list of display/dispatch pairs for this display */ 67e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul { 68e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul const struct display_dispatch *d = DispatchList; 69e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul while (d) { 70e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (d->Dpy == dpy) { 71e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul prevDisplay = dpy; 72e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul prevTable = d->Table; 73e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return d->Table; /* done! */ 74e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 75e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul d = d->Next; 76e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 77afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach } 78e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 79b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /* A new display, determine if we should use real GLX 80e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * or Mesa's pseudo-GLX. 81e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul */ 82e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul { 83ab7c6ffadccbeb96b6f4ac58fb75e90697cd30c5Ian Romanick struct _glxapi_table *t = _mesa_GetGLXDispatchTable(); 84e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 85e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (t) { 86e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul struct display_dispatch *d; 87e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul d = (struct display_dispatch *) malloc(sizeof(struct display_dispatch)); 88e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (d) { 89e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul d->Dpy = dpy; 90e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul d->Table = t; 91e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul /* insert at head of list */ 92e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul d->Next = DispatchList; 93e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul DispatchList = d; 94e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul /* update cache */ 95e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul prevDisplay = dpy; 96e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul prevTable = t; 97e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return t; 98e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 99e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 100afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach } 101e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 102e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul /* If we get here that means we can't use real GLX on this display 103e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * and the Mesa pseudo-GLX software renderer wasn't compiled in. 104e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * Or, we ran out of memory! 105e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul */ 106e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 107afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 108afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 109afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1102b17741e1b7999dacf0974b0a2bcbc10adb26219Brian Paul/* Don't use the GET_DISPATCH defined in glthread.h */ 1112b17741e1b7999dacf0974b0a2bcbc10adb26219Brian Paul#undef GET_DISPATCH 1122b17741e1b7999dacf0974b0a2bcbc10adb26219Brian Paul 11355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul#define GET_DISPATCH(DPY, TABLE) \ 11455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul if (DPY == prevDisplay) { \ 11555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul TABLE = prevTable; \ 11655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul } \ 11755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul else if (!DPY) { \ 11855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul TABLE = NULL; \ 11955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul } \ 12055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul else { \ 12155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul TABLE = get_dispatch(DPY); \ 12255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul } 12355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul 12455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul 12555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul 126afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 127d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul/** 128d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul * GLX API current context. 129d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul */ 130d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#if defined(GLX_USE_TLS) 131d41d29b8bde9bb9c277424a43d0b80838edfe254Brian PaulPUBLIC __thread void * CurrentContext 132d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul __attribute__((tls_model("initial-exec"))); 133d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#elif defined(THREADS) 134d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paulstatic _glthread_TSD ContextTSD; /**< Per-thread context pointer */ 135d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#else 136e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstatic GLXContext CurrentContext = 0; 137d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#endif 138d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul 139d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul 140d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paulstatic void 141d41d29b8bde9bb9c277424a43d0b80838edfe254Brian PaulSetCurrentContext(GLXContext c) 142d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul{ 143d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#if defined(GLX_USE_TLS) 144d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul CurrentContext = context; 145d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#elif defined(THREADS) 146d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul _glthread_SetTSD(&ContextTSD, c); 147d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#else 148d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul CurrentContext = c; 149d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#endif 150d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul} 151e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 152e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 153e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/* 154e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * GLX API entrypoints 155e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul */ 156e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 157b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_VERSION_1_0 ***/ 158e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 159be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulXVisualInfo PUBLIC * 160be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXChooseVisual(Display *dpy, int screen, int *list) 161afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 16255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 16355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 164e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 165e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 166e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->ChooseVisual)(dpy, screen, list); 167afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 168afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 169afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 170be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 171be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCopyContext(Display *dpy, GLXContext src, GLXContext dst, unsigned long mask) 172e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 17355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 17455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 175e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 176e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 177e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->CopyContext)(dpy, src, dst, mask); 178e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 179e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 180afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 181be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContext PUBLIC 182be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateContext(Display *dpy, XVisualInfo *visinfo, GLXContext shareList, Bool direct) 183afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 18455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 18555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 186e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 187e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 188e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->CreateContext)(dpy, visinfo, shareList, direct); 189afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 190afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 191afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 192be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPixmap PUBLIC 193be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateGLXPixmap(Display *dpy, XVisualInfo *visinfo, Pixmap pixmap) 194e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 19555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 19655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 197e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 198e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 199e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->CreateGLXPixmap)(dpy, visinfo, pixmap); 200e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 201e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 202afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 203be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 204be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyContext(Display *dpy, GLXContext ctx) 205afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 20655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 20755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 208e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 209e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 210d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul if (glXGetCurrentContext() == ctx) 211d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul SetCurrentContext(NULL); 212e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->DestroyContext)(dpy, ctx); 213afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 214afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 215afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 216be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 217be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyGLXPixmap(Display *dpy, GLXPixmap pixmap) 218e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 21955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 22055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 221e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 222e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 223e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->DestroyGLXPixmap)(dpy, pixmap); 224e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 225e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 226afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 227be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 228be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetConfig(Display *dpy, XVisualInfo *visinfo, int attrib, int *value) 229afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 23055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 23155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 232e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 233e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return GLX_NO_EXTENSION; 234e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->GetConfig)(dpy, visinfo, attrib, value); 235afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 236afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 237afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 238be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContext PUBLIC 239be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentContext(void) 240e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 241d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#if defined(GLX_USE_TLS) 242d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul return CurrentContext; 243d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#elif defined(THREADS) 24418d1fdebebcb52e7fcf50e62c4c02862d173af51Brian Paul return (GLXContext) _glthread_GetTSD(&ContextTSD); 245d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#else 246e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return CurrentContext; 247d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#endif 248e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 249e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 250afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 251be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXDrawable PUBLIC 252be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentDrawable(void) 253afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 25412c1bee87fcc3a0912685bb6e83447972e5de64eBrian Paul __GLXcontext *gc = (__GLXcontext *) glXGetCurrentContext(); 2557cf50e137da497a590ec9001a9918972a6246142Brian Paul return gc ? gc->currentDrawable : 0; 256afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 257afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 258afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 259be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 260be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXIsDirect(Display *dpy, GLXContext ctx) 261e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 26255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 26355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 264e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 265e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 266e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->IsDirect)(dpy, ctx); 267e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 268e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 269afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 270be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 271be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXMakeCurrent(Display *dpy, GLXDrawable drawable, GLXContext ctx) 272afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 273e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul Bool b; 27455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 27555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 27684cac8441fcf5f692cd220e9fa86cab398a4c159Brian Paul if (!t) { 277e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 27884cac8441fcf5f692cd220e9fa86cab398a4c159Brian Paul } 279e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul b = (*t->MakeCurrent)(dpy, drawable, ctx); 280e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (b) { 281d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul SetCurrentContext(ctx); 282afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach } 283e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return b; 284afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 285afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 286afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 287be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 288be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryExtension(Display *dpy, int *errorb, int *event) 289afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 29055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 29155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 292e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 293e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 294e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->QueryExtension)(dpy, errorb, event); 295afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 296afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 297afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 298be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 299be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryVersion(Display *dpy, int *maj, int *min) 300afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 30155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 30255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 303e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 304e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 305e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->QueryVersion)(dpy, maj, min); 306afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 307afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 308afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 309be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 310be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXSwapBuffers(Display *dpy, GLXDrawable drawable) 311afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 31255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 31355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 314e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 315e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 316e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->SwapBuffers)(dpy, drawable); 317afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 318afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 319afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 320be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 321be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXUseXFont(Font font, int first, int count, int listBase) 322afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 32355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 3247cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 3257cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 326e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 327e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 328e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->UseXFont)(font, first, count, listBase); 329afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 330afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 331afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 332be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 333be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXWaitGL(void) 334afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 33555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 3367cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 3377cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 338e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 339e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 340e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->WaitGL)(); 341afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 342afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 343afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 344be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 345be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXWaitX(void) 346afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 34755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 3487cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 3497cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 350e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 351e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 352e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->WaitX)(); 353afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 354afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 355afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 356afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 357b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_VERSION_1_1 ***/ 358e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 359be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulconst char PUBLIC * 360be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetClientString(Display *dpy, int name) 361afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 36255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 36355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 364e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 365e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 366e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->GetClientString)(dpy, name); 367afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 368afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 369afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 370be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulconst char PUBLIC * 371be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryExtensionsString(Display *dpy, int screen) 372e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 37355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 37455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 375e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 376e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 377e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->QueryExtensionsString)(dpy, screen); 378e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 379e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 380afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 381be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulconst char PUBLIC * 382be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryServerString(Display *dpy, int screen, int name) 383afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 38455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 38555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 386e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 387e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 388e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->QueryServerString)(dpy, screen, name); 389afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 390afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 391afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 392b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_VERSION_1_2 ***/ 393afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 394be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulDisplay PUBLIC * 395be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentDisplay(void) 396afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 3977cf50e137da497a590ec9001a9918972a6246142Brian Paul /* Same code as in libGL's glxext.c */ 39812c1bee87fcc3a0912685bb6e83447972e5de64eBrian Paul __GLXcontext *gc = (__GLXcontext *) glXGetCurrentContext(); 3997cf50e137da497a590ec9001a9918972a6246142Brian Paul if (NULL == gc) return NULL; 4007cf50e137da497a590ec9001a9918972a6246142Brian Paul return gc->currentDpy; 401afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 402e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 403afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 404afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 405b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_VERSION_1_3 ***/ 406afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 407be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXFBConfig PUBLIC * 408be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXChooseFBConfig(Display *dpy, int screen, const int *attribList, int *nitems) 409afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 41055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 41155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 412e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 413e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 414e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->ChooseFBConfig)(dpy, screen, attribList, nitems); 415afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 416afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 417afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 418be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContext PUBLIC 419be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateNewContext(Display *dpy, GLXFBConfig config, int renderType, GLXContext shareList, Bool direct) 420afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 42155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 42255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 423e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 424e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 425e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->CreateNewContext)(dpy, config, renderType, shareList, direct); 426afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 427afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 428afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 429be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPbuffer PUBLIC 430be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreatePbuffer(Display *dpy, GLXFBConfig config, const int *attribList) 431afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 43255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 43355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 434e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 435e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 436e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->CreatePbuffer)(dpy, config, attribList); 437afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 438afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 439afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 440be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPixmap PUBLIC 441be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreatePixmap(Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attribList) 442afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 44355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 44455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 445e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 446e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 447e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->CreatePixmap)(dpy, config, pixmap, attribList); 448afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 449afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 450afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 451be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXWindow PUBLIC 452be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateWindow(Display *dpy, GLXFBConfig config, Window win, const int *attribList) 453afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 45455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 45555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 456e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 457e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 458e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->CreateWindow)(dpy, config, win, attribList); 459afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 460afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 461afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 462be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 463be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyPbuffer(Display *dpy, GLXPbuffer pbuf) 464afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 46555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 46655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 467e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 468e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 469e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->DestroyPbuffer)(dpy, pbuf); 470afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 471afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 472afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 473be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 474be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyPixmap(Display *dpy, GLXPixmap pixmap) 475b82d993b03320818f88f792a9e713f7ed491bfcbBrian Paul{ 47655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 47755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 478e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 479e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 480e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->DestroyPixmap)(dpy, pixmap); 481b82d993b03320818f88f792a9e713f7ed491bfcbBrian Paul} 482b82d993b03320818f88f792a9e713f7ed491bfcbBrian Paul 483b82d993b03320818f88f792a9e713f7ed491bfcbBrian Paul 484be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 485be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyWindow(Display *dpy, GLXWindow window) 486ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 48755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 48855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 489e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 490e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 491e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->DestroyWindow)(dpy, window); 492ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 493ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 494ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 495be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXDrawable PUBLIC 496be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentReadDrawable(void) 497ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 49812c1bee87fcc3a0912685bb6e83447972e5de64eBrian Paul __GLXcontext *gc = (__GLXcontext *) glXGetCurrentContext(); 4997cf50e137da497a590ec9001a9918972a6246142Brian Paul return gc ? gc->currentReadable : 0; 500ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 501ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 502ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 503be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 504be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetFBConfigAttrib(Display *dpy, GLXFBConfig config, int attribute, int *value) 505ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 50655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 50755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 508e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 509e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return GLX_NO_EXTENSION; 510e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->GetFBConfigAttrib)(dpy, config, attribute, value); 511ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 512ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 513ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 514be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXFBConfig PUBLIC * 515be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetFBConfigs(Display *dpy, int screen, int *nelements) 5165605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul{ 51755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 51855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 5195605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul if (!t) 5205605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul return 0; 5215605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul return (t->GetFBConfigs)(dpy, screen, nelements); 5225605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul} 5235605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul 524be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 525be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetSelectedEvent(Display *dpy, GLXDrawable drawable, unsigned long *mask) 526ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 52755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 52855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 529e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 530e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 531e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->GetSelectedEvent)(dpy, drawable, mask); 532ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 533ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 534ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 535be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulXVisualInfo PUBLIC * 536be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetVisualFromFBConfig(Display *dpy, GLXFBConfig config) 537ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 53855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 53955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 540e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 541e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 542e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->GetVisualFromFBConfig)(dpy, config); 543ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 544ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 545ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 546be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 547be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXMakeContextCurrent(Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx) 548ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 549e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul Bool b; 55055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 55155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 552e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 553e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 554e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul b = (t->MakeContextCurrent)(dpy, draw, read, ctx); 555e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (b) { 556d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul SetCurrentContext(ctx); 557e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 558e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return b; 559ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 560ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 561ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 562be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 563be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryContext(Display *dpy, GLXContext ctx, int attribute, int *value) 564ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 56555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 56655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 567e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul assert(t); 568e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 569e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; /* XXX correct? */ 570e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->QueryContext)(dpy, ctx, attribute, value); 571ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 572ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 573ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 574be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 575be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryDrawable(Display *dpy, GLXDrawable draw, int attribute, unsigned int *value) 576ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 57755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 57855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 579e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 580e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 581e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->QueryDrawable)(dpy, draw, attribute, value); 582ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 583ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 584ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 585be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 586be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXSelectEvent(Display *dpy, GLXDrawable drawable, unsigned long mask) 587ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 58855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 58955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 590e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 591e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 592e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->SelectEvent)(dpy, drawable, mask); 593ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 594ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 595ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 596e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 597b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGI_swap_control ***/ 598783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 599be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 600be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXSwapIntervalSGI(int interval) 601783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 60255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 6037cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 6047cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 605783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 606783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 607783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->SwapIntervalSGI)(interval); 608783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 609783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 610783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 611783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 612b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGI_video_sync ***/ 613783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 614be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 615be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetVideoSyncSGI(unsigned int *count) 616783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 61755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 6187cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 6197cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 6202d087480b4b1207c058efcccc9a72faedcea4651Brian Paul if (!t || !glXGetCurrentContext()) 6212d087480b4b1207c058efcccc9a72faedcea4651Brian Paul return GLX_BAD_CONTEXT; 622783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->GetVideoSyncSGI)(count); 623783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 624783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 625be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 626be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count) 627783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 62855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 6297cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 6307cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 6312d087480b4b1207c058efcccc9a72faedcea4651Brian Paul if (!t || !glXGetCurrentContext()) 6322d087480b4b1207c058efcccc9a72faedcea4651Brian Paul return GLX_BAD_CONTEXT; 633783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->WaitVideoSyncSGI)(divisor, remainder, count); 634783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 635783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 636783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 637783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 638b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGI_make_current_read ***/ 639783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 640be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 641be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXMakeCurrentReadSGI(Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx) 642783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 64355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 64455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 645783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 6462d087480b4b1207c058efcccc9a72faedcea4651Brian Paul return False; 647783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->MakeCurrentReadSGI)(dpy, draw, read, ctx); 648783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 649783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 650be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXDrawable PUBLIC 651be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentReadDrawableSGI(void) 652783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 6537cf50e137da497a590ec9001a9918972a6246142Brian Paul return glXGetCurrentReadDrawable(); 654783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 655783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 656783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 657b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul#if defined(_VL_H) 658783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 659be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXVideoSourceSGIX PUBLIC 660be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateGLXVideoSourceSGIX(Display *dpy, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode) 661783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 66255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 66355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 664783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 665783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 666783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->CreateGLXVideoSourceSGIX)(dpy, screen, server, path, nodeClass, drainNode); 667783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 668783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 669be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 670be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyGLXVideoSourceSGIX(Display *dpy, GLXVideoSourceSGIX src) 671783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 67255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 67355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 674783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 675783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 676783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->DestroyGLXVideoSourceSGIX)(dpy, src); 677783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 678783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 679783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul#endif 680783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 681783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 682b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_EXT_import_context ***/ 683e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 684be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 685be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXFreeContextEXT(Display *dpy, GLXContext context) 686ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 68755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 68855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 689e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 690e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 691e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->FreeContextEXT)(dpy, context); 692ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 693ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 694be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContextID PUBLIC 695be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetContextIDEXT(const GLXContext context) 696ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 69712c1bee87fcc3a0912685bb6e83447972e5de64eBrian Paul return ((__GLXcontext *) context)->xid; 698ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 699ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 700be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulDisplay PUBLIC * 701be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentDisplayEXT(void) 702ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 7037cf50e137da497a590ec9001a9918972a6246142Brian Paul return glXGetCurrentDisplay(); 704ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 705ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 706be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContext PUBLIC 707be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXImportContextEXT(Display *dpy, GLXContextID contextID) 708ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 70955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 71055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 711e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 712e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 713e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->ImportContextEXT)(dpy, contextID); 714ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 715ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 716be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 717be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryContextInfoEXT(Display *dpy, GLXContext context, int attribute,int *value) 718ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 71955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 72055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 721e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 722e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; /* XXX ok? */ 723e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->QueryContextInfoEXT)(dpy, context, attribute, value); 724ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 725ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 726e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 727e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 728b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGIX_fbconfig ***/ 729ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 730be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 731be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetFBConfigAttribSGIX(Display *dpy, GLXFBConfigSGIX config, int attribute, int *value) 732ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 73355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 73455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 735e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 736e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 737783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->GetFBConfigAttribSGIX)(dpy, config, attribute, value); 738ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 739ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 740be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXFBConfigSGIX PUBLIC * 741be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXChooseFBConfigSGIX(Display *dpy, int screen, int *attrib_list, int *nelements) 742783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 74355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 74455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 745783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 746783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 747783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->ChooseFBConfigSGIX)(dpy, screen, attrib_list, nelements); 748783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 749ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 750be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPixmap PUBLIC 751be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateGLXPixmapWithConfigSGIX(Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap) 752ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 75355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 75455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 755e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 756e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 757783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->CreateGLXPixmapWithConfigSGIX)(dpy, config, pixmap); 758783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 759783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 760be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContext PUBLIC 761be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateContextWithConfigSGIX(Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct) 762783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 76355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 76455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 765783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 766783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 767783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->CreateContextWithConfigSGIX)(dpy, config, render_type, share_list, direct); 768783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 769783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 770be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulXVisualInfo PUBLIC * 771be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetVisualFromFBConfigSGIX(Display *dpy, GLXFBConfigSGIX config) 772783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 77355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 77455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 775783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 776783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 777783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->GetVisualFromFBConfigSGIX)(dpy, config); 778783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 779783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 780be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXFBConfigSGIX PUBLIC 781be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetFBConfigFromVisualSGIX(Display *dpy, XVisualInfo *vis) 782783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 78355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 78455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 785783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 786783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 787783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->GetFBConfigFromVisualSGIX)(dpy, vis); 788783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 789783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 790783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 791783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 792b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGIX_pbuffer ***/ 793783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 794be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPbufferSGIX PUBLIC 795be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateGLXPbufferSGIX(Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list) 796783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 79755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 79855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 799783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 800783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 801783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->CreateGLXPbufferSGIX)(dpy, config, width, height, attrib_list); 802783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 803783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 804be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 805be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyGLXPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuf) 806783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 80755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 80855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 809783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 810783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 811783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul (t->DestroyGLXPbufferSGIX)(dpy, pbuf); 812783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 813783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 814be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 815be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryGLXPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value) 816783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 81755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 81855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 819783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 820783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 821783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->QueryGLXPbufferSGIX)(dpy, pbuf, attribute, value); 822783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 823783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 824be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 825be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXSelectEventSGIX(Display *dpy, GLXDrawable drawable, unsigned long mask) 826783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 82755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 82855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 829783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 830783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 831783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul (t->SelectEventSGIX)(dpy, drawable, mask); 832783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 833783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 834be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 835be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetSelectedEventSGIX(Display *dpy, GLXDrawable drawable, unsigned long *mask) 836783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 83755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 83855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 839783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 840783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 841783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul (t->GetSelectedEventSGIX)(dpy, drawable, mask); 842783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 843783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 844783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 845783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 846b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGI_cushion ***/ 847783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 848be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 849be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCushionSGI(Display *dpy, Window win, float cushion) 850783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 85155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 85255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 853783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 854783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 855783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul (t->CushionSGI)(dpy, win, cushion); 856ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 857ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 858ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 859ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 860b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGIX_video_resize ***/ 8614536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 862be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 863be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXBindChannelToWindowSGIX(Display *dpy, int screen, int channel , Window window) 8644536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 86555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 86655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 8674536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 8684536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return 0; 8694536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return (t->BindChannelToWindowSGIX)(dpy, screen, channel, window); 8704536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 8714536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 872be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 873be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXChannelRectSGIX(Display *dpy, int screen, int channel, int x, int y, int w, int h) 8744536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 87555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 87655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 8774536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 8784536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return 0; 8794536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return (t->ChannelRectSGIX)(dpy, screen, channel, x, y, w, h); 8804536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 8814536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 882be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 883be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryChannelRectSGIX(Display *dpy, int screen, int channel, int *x, int *y, int *w, int *h) 8844536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 88555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 88655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 8874536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 8884536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return 0; 8894536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return (t->QueryChannelRectSGIX)(dpy, screen, channel, x, y, w, h); 8904536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 8914536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 892be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 893be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryChannelDeltasSGIX(Display *dpy, int screen, int channel, int *dx, int *dy, int *dw, int *dh) 8944536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 89555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 89655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 8974536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 8984536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return 0; 8994536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return (t->QueryChannelDeltasSGIX)(dpy, screen, channel, dx, dy, dw, dh); 9004536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9014536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 902be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 903be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXChannelRectSyncSGIX(Display *dpy, int screen, int channel, GLenum synctype) 9044536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 90555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 90655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9074536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 9084536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return 0; 9094536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return (t->ChannelRectSyncSGIX)(dpy, screen, channel, synctype); 9104536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9114536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 9124536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 9134536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 914b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul#if defined(_DM_BUFFER_H_) 9154536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 916be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 917be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXAssociateDMPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer) 9184536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 91955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 92055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9214536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 922783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return False; 923783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->AssociateDMPbufferSGIX)(dpy, pbuffer, params, dmbuffer); 9244536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9254536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 926783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul#endif 9274536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 9284536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 929b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGIX_swap_group ***/ 930783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 931be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 932be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXJoinSwapGroupSGIX(Display *dpy, GLXDrawable drawable, GLXDrawable member) 9334536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 93455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 93555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9364536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 937783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 938783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul (*t->JoinSwapGroupSGIX)(dpy, drawable, member); 9394536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9404536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 941783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 942b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGIX_swap_barrier ***/ 943783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 944be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 945be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXBindSwapBarrierSGIX(Display *dpy, GLXDrawable drawable, int barrier) 9464536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 94755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 94855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9494536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 950783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 951783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul (*t->BindSwapBarrierSGIX)(dpy, drawable, barrier); 9524536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9534536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 954be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 955be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryMaxSwapBarriersSGIX(Display *dpy, int screen, int *max) 9564536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 95755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 95855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9594536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 960783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return False; 961783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (*t->QueryMaxSwapBarriersSGIX)(dpy, screen, max); 9624536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9634536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 964783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 965783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 966b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SUN_get_transparent_index ***/ 967783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 968be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulStatus PUBLIC 969be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetTransparentIndexSUN(Display *dpy, Window overlay, Window underlay, long *pTransparent) 9704536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 97155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 97255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9734536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 974783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return False; 975783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (*t->GetTransparentIndexSUN)(dpy, overlay, underlay, pTransparent); 9764536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9774536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 9784536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 9794536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 980b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_MESA_copy_sub_buffer ***/ 981ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 982be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 983be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCopySubBufferMESA(Display *dpy, GLXDrawable drawable, int x, int y, int width, int height) 984afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 98555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 98655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 987e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 988e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 989e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->CopySubBufferMESA)(dpy, drawable, x, y, width, height); 990e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 991e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 992e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 993e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 994b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_MESA_release_buffers ***/ 995e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 996be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 997be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXReleaseBuffersMESA(Display *dpy, Window w) 998e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 99955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 100055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 1001e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 1002e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 1003e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->ReleaseBuffersMESA)(dpy, w); 1004afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 1005e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1006afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1007afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1008b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_MESA_pixmap_colormap ***/ 1009e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1010be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPixmap PUBLIC 1011be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateGLXPixmapMESA(Display *dpy, XVisualInfo *visinfo, Pixmap pixmap, Colormap cmap) 1012afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 101355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 101455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 1015e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 1016afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach return 0; 1017e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->CreateGLXPixmapMESA)(dpy, visinfo, pixmap, cmap); 1018e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 1019e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1020e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1021e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1022b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_MESA_set_3dfx_mode ***/ 1023e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1024be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 1025be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXSet3DfxModeMESA(int mode) 1026e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 102755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 10287cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 10297cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 1030e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 1031e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 1032e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->Set3DfxModeMESA)(mode); 1033afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 1034e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1035afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1036afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1037d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul/*** GLX_NV_vertex_array_range ***/ 10388fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 1039be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC * 10408fefafa2200d3ea44ec46592b190654a10685b46Brian PaulglXAllocateMemoryNV( GLsizei size, 10418fefafa2200d3ea44ec46592b190654a10685b46Brian Paul GLfloat readFrequency, 10428fefafa2200d3ea44ec46592b190654a10685b46Brian Paul GLfloat writeFrequency, 10438fefafa2200d3ea44ec46592b190654a10685b46Brian Paul GLfloat priority ) 10448fefafa2200d3ea44ec46592b190654a10685b46Brian Paul{ 10458fefafa2200d3ea44ec46592b190654a10685b46Brian Paul struct _glxapi_table *t; 10468fefafa2200d3ea44ec46592b190654a10685b46Brian Paul Display *dpy = glXGetCurrentDisplay(); 10478fefafa2200d3ea44ec46592b190654a10685b46Brian Paul GET_DISPATCH(dpy, t); 10488fefafa2200d3ea44ec46592b190654a10685b46Brian Paul if (!t) 10498fefafa2200d3ea44ec46592b190654a10685b46Brian Paul return NULL; 10508fefafa2200d3ea44ec46592b190654a10685b46Brian Paul return (t->AllocateMemoryNV)(size, readFrequency, writeFrequency, priority); 10518fefafa2200d3ea44ec46592b190654a10685b46Brian Paul} 10528fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 10538fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 1054be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 10558fefafa2200d3ea44ec46592b190654a10685b46Brian PaulglXFreeMemoryNV( GLvoid *pointer ) 10568fefafa2200d3ea44ec46592b190654a10685b46Brian Paul{ 10578fefafa2200d3ea44ec46592b190654a10685b46Brian Paul struct _glxapi_table *t; 10588fefafa2200d3ea44ec46592b190654a10685b46Brian Paul Display *dpy = glXGetCurrentDisplay(); 10598fefafa2200d3ea44ec46592b190654a10685b46Brian Paul GET_DISPATCH(dpy, t); 10608fefafa2200d3ea44ec46592b190654a10685b46Brian Paul if (!t) 10618fefafa2200d3ea44ec46592b190654a10685b46Brian Paul return; 10628fefafa2200d3ea44ec46592b190654a10685b46Brian Paul (t->FreeMemoryNV)(pointer); 10638fefafa2200d3ea44ec46592b190654a10685b46Brian Paul} 10648fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 10658fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 10667cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 10677cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 1068d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul/*** GLX_MESA_agp_offset */ 1069d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul 1070be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLuint PUBLIC 1071d6113fc20d68f5720740b89c594227d0312bab3eBrian PaulglXGetAGPOffsetMESA( const GLvoid *pointer ) 1072d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul{ 1073d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul struct _glxapi_table *t; 1074d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul Display *dpy = glXGetCurrentDisplay(); 1075d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul GET_DISPATCH(dpy, t); 1076d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul if (!t) 1077d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul return ~0; 1078d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul return (t->GetAGPOffsetMESA)(pointer); 1079d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul} 1080d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul 1081afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 10827cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul/*** GLX_MESA_allocate_memory */ 10837cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 10847cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paulvoid * 10857cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian PaulglXAllocateMemoryMESA(Display *dpy, int scrn, size_t size, 10867cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul float readfreq, float writefreq, float priority) 10877cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul{ 10887cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul /* dummy */ 10897cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul return NULL; 10907cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul} 10917cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 10927cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paulvoid 10937cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian PaulglXFreeMemoryMESA(Display *dpy, int scrn, void *pointer) 10947cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul{ 10957cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul /* dummy */ 10967cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul} 10977cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 10987cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 10997cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian PaulGLuint 11007cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian PaulglXGetMemoryOffsetMESA(Display *dpy, int scrn, const void *pointer) 11017cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul{ 11027cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul /* dummy */ 11037cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul return 0; 11047cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul} 11057cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 11067cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 1107fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul/*** GLX_EXT_texture_from_pixmap */ 1108fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul 1109fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paulvoid 1110fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian PaulglXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, 1111fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul const int *attrib_list) 1112fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul{ 1113fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul struct _glxapi_table *t; 1114fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul GET_DISPATCH(dpy, t); 1115fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul if (t) 1116fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul t->BindTexImageEXT(dpy, drawable, buffer, attrib_list); 1117fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul} 1118fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul 1119fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paulvoid 1120fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian PaulglXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer) 1121fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul{ 1122fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul struct _glxapi_table *t; 1123fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul GET_DISPATCH(dpy, t); 1124fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul if (t) 1125fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul t->ReleaseTexImageEXT(dpy, drawable, buffer); 1126fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul} 1127fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul 11287cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 1129e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/**********************************************************************/ 1130e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/* GLX API management functions */ 1131e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/**********************************************************************/ 1132e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1133e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1134e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulconst char * 1135e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul_glxapi_get_version(void) 1136e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 1137e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return "1.3"; 1138e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 1139e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1140afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1141afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/* 1142e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * Return array of extension strings. 1143afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach */ 1144e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulconst char ** 1145e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul_glxapi_get_extensions(void) 1146afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 1147e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul static const char *extensions[] = { 11484c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_EXT_import_context 1149e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_EXT_import_context", 1150e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11514c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_SGI_video_sync 1152e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_SGI_video_sync", 1153e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11544c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_MESA_copy_sub_buffer 1155e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_MESA_copy_sub_buffer", 1156e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11574c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_MESA_release_buffers 1158e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_MESA_release_buffers", 1159e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11604c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_MESA_pixmap_colormap 1161e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_MESA_pixmap_colormap", 1162e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11634c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_MESA_set_3dfx_mode 1164e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_MESA_set_3dfx_mode", 1165e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11663c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul#ifdef GLX_SGIX_fbconfig 11673c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul "GLX_SGIX_fbconfig", 11683c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul#endif 11693c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul#ifdef GLX_SGIX_pbuffer 11703c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul "GLX_SGIX_pbuffer", 11713c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul#endif 1172fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul#ifdef GLX_EXT_texture_from_pixmap, 1173fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul "GLX_EXT_texture_from_pixmap", 1174fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul#endif 1175e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul NULL 1176e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul }; 1177e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return extensions; 1178afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 1179afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1180afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1181afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/* 1182e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * Return size of the GLX dispatch table, in entries, not bytes. 1183afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach */ 1184e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian PaulGLuint 1185e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul_glxapi_get_dispatch_table_size(void) 1186e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 1187e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return sizeof(struct _glxapi_table) / sizeof(void *); 1188e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 1189e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1190e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1191e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstatic int 1192e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulgeneric_no_op_func(void) 1193afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 1194afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach return 0; 1195afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 1196afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1197e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1198e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/* 1199e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * Initialize all functions in given dispatch table to be no-ops 1200e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul */ 1201e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulvoid 1202e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul_glxapi_set_no_op_table(struct _glxapi_table *t) 1203e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 1204be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul typedef int (*nop_func)(void); 1205be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul nop_func *dispatch = (nop_func *) t; 1206e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul GLuint n = _glxapi_get_dispatch_table_size(); 1207e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul GLuint i; 1208e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul for (i = 0; i < n; i++) { 1209be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul dispatch[i] = generic_no_op_func; 1210e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 1211e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 1212e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1213e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1214e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstruct name_address_pair { 1215e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul const char *Name; 1216be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul __GLXextFuncPtr Address; 1217e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul}; 1218e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1219e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstatic struct name_address_pair GLX_functions[] = { 1220b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_VERSION_1_0 ***/ 1221be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXChooseVisual", (__GLXextFuncPtr) glXChooseVisual }, 1222be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCopyContext", (__GLXextFuncPtr) glXCopyContext }, 1223be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateContext", (__GLXextFuncPtr) glXCreateContext }, 1224be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateGLXPixmap", (__GLXextFuncPtr) glXCreateGLXPixmap }, 1225be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyContext", (__GLXextFuncPtr) glXDestroyContext }, 1226be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyGLXPixmap", (__GLXextFuncPtr) glXDestroyGLXPixmap }, 1227be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetConfig", (__GLXextFuncPtr) glXGetConfig }, 1228be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentContext", (__GLXextFuncPtr) glXGetCurrentContext }, 1229be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentDrawable", (__GLXextFuncPtr) glXGetCurrentDrawable }, 1230be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXIsDirect", (__GLXextFuncPtr) glXIsDirect }, 1231be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXMakeCurrent", (__GLXextFuncPtr) glXMakeCurrent }, 1232be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryExtension", (__GLXextFuncPtr) glXQueryExtension }, 1233be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryVersion", (__GLXextFuncPtr) glXQueryVersion }, 1234be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXSwapBuffers", (__GLXextFuncPtr) glXSwapBuffers }, 1235be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXUseXFont", (__GLXextFuncPtr) glXUseXFont }, 1236be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXWaitGL", (__GLXextFuncPtr) glXWaitGL }, 1237be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXWaitX", (__GLXextFuncPtr) glXWaitX }, 1238e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1239b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_VERSION_1_1 ***/ 1240be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetClientString", (__GLXextFuncPtr) glXGetClientString }, 1241be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryExtensionsString", (__GLXextFuncPtr) glXQueryExtensionsString }, 1242be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryServerString", (__GLXextFuncPtr) glXQueryServerString }, 124389a42b7e736bd9b0ab090906cab0cd047a6ec12eBrian Paul 1244b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_VERSION_1_2 ***/ 1245be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentDisplay", (__GLXextFuncPtr) glXGetCurrentDisplay }, 124689a42b7e736bd9b0ab090906cab0cd047a6ec12eBrian Paul 1247b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_VERSION_1_3 ***/ 1248be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXChooseFBConfig", (__GLXextFuncPtr) glXChooseFBConfig }, 1249be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateNewContext", (__GLXextFuncPtr) glXCreateNewContext }, 1250be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreatePbuffer", (__GLXextFuncPtr) glXCreatePbuffer }, 1251be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreatePixmap", (__GLXextFuncPtr) glXCreatePixmap }, 1252be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateWindow", (__GLXextFuncPtr) glXCreateWindow }, 1253be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyPbuffer", (__GLXextFuncPtr) glXDestroyPbuffer }, 1254be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyPixmap", (__GLXextFuncPtr) glXDestroyPixmap }, 1255be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyWindow", (__GLXextFuncPtr) glXDestroyWindow }, 1256be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentReadDrawable", (__GLXextFuncPtr) glXGetCurrentReadDrawable }, 1257be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetFBConfigAttrib", (__GLXextFuncPtr) glXGetFBConfigAttrib }, 1258be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetFBConfigs", (__GLXextFuncPtr) glXGetFBConfigs }, 1259be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetSelectedEvent", (__GLXextFuncPtr) glXGetSelectedEvent }, 1260be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetVisualFromFBConfig", (__GLXextFuncPtr) glXGetVisualFromFBConfig }, 1261be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXMakeContextCurrent", (__GLXextFuncPtr) glXMakeContextCurrent }, 1262be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryContext", (__GLXextFuncPtr) glXQueryContext }, 1263be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryDrawable", (__GLXextFuncPtr) glXQueryDrawable }, 1264be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXSelectEvent", (__GLXextFuncPtr) glXSelectEvent }, 126543c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul 1266ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul /*** GLX_VERSION_1_4 ***/ 1267be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetProcAddress", (__GLXextFuncPtr) glXGetProcAddress }, 1268ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul 1269ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGI_swap_control ***/ 1270be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXSwapIntervalSGI", (__GLXextFuncPtr) glXSwapIntervalSGI }, 1271ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1272b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_SGI_video_sync ***/ 1273be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetVideoSyncSGI", (__GLXextFuncPtr) glXGetVideoSyncSGI }, 1274be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXWaitVideoSyncSGI", (__GLXextFuncPtr) glXWaitVideoSyncSGI }, 1275e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1276ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGI_make_current_read ***/ 1277be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXMakeCurrentReadSGI", (__GLXextFuncPtr) glXMakeCurrentReadSGI }, 1278be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentReadDrawableSGI", (__GLXextFuncPtr) glXGetCurrentReadDrawableSGI }, 1279ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1280ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_video_source ***/ 1281ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul#if defined(_VL_H) 1282be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateGLXVideoSourceSGIX", (__GLXextFuncPtr) glXCreateGLXVideoSourceSGIX }, 1283be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyGLXVideoSourceSGIX", (__GLXextFuncPtr) glXDestroyGLXVideoSourceSGIX }, 1284ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul#endif 1285ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1286ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_EXT_import_context ***/ 1287be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXFreeContextEXT", (__GLXextFuncPtr) glXFreeContextEXT }, 1288be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetContextIDEXT", (__GLXextFuncPtr) glXGetContextIDEXT }, 1289be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentDisplayEXT", (__GLXextFuncPtr) glXGetCurrentDisplayEXT }, 1290be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXImportContextEXT", (__GLXextFuncPtr) glXImportContextEXT }, 1291be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryContextInfoEXT", (__GLXextFuncPtr) glXQueryContextInfoEXT }, 1292ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1293ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_fbconfig ***/ 1294be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetFBConfigAttribSGIX", (__GLXextFuncPtr) glXGetFBConfigAttribSGIX }, 1295be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXChooseFBConfigSGIX", (__GLXextFuncPtr) glXChooseFBConfigSGIX }, 1296be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateGLXPixmapWithConfigSGIX", (__GLXextFuncPtr) glXCreateGLXPixmapWithConfigSGIX }, 1297be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateContextWithConfigSGIX", (__GLXextFuncPtr) glXCreateContextWithConfigSGIX }, 1298be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetVisualFromFBConfigSGIX", (__GLXextFuncPtr) glXGetVisualFromFBConfigSGIX }, 1299be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetFBConfigFromVisualSGIX", (__GLXextFuncPtr) glXGetFBConfigFromVisualSGIX }, 1300ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1301ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_pbuffer ***/ 1302be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateGLXPbufferSGIX", (__GLXextFuncPtr) glXCreateGLXPbufferSGIX }, 1303be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyGLXPbufferSGIX", (__GLXextFuncPtr) glXDestroyGLXPbufferSGIX }, 1304be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryGLXPbufferSGIX", (__GLXextFuncPtr) glXQueryGLXPbufferSGIX }, 1305be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXSelectEventSGIX", (__GLXextFuncPtr) glXSelectEventSGIX }, 1306be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetSelectedEventSGIX", (__GLXextFuncPtr) glXGetSelectedEventSGIX }, 1307ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1308ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGI_cushion ***/ 1309be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCushionSGI", (__GLXextFuncPtr) glXCushionSGI }, 1310ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1311ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_video_resize ***/ 1312be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXBindChannelToWindowSGIX", (__GLXextFuncPtr) glXBindChannelToWindowSGIX }, 1313be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXChannelRectSGIX", (__GLXextFuncPtr) glXChannelRectSGIX }, 1314be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryChannelRectSGIX", (__GLXextFuncPtr) glXQueryChannelRectSGIX }, 1315be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryChannelDeltasSGIX", (__GLXextFuncPtr) glXQueryChannelDeltasSGIX }, 1316be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXChannelRectSyncSGIX", (__GLXextFuncPtr) glXChannelRectSyncSGIX }, 1317ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1318ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_dmbuffer **/ 1319ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul#if defined(_DM_BUFFER_H_) 1320be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXAssociateDMPbufferSGIX", (__GLXextFuncPtr) glXAssociateDMPbufferSGIX }, 1321ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul#endif 1322ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1323ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_swap_group ***/ 1324be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXJoinSwapGroupSGIX", (__GLXextFuncPtr) glXJoinSwapGroupSGIX }, 1325ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1326ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_swap_barrier ***/ 1327be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXBindSwapBarrierSGIX", (__GLXextFuncPtr) glXBindSwapBarrierSGIX }, 1328be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryMaxSwapBarriersSGIX", (__GLXextFuncPtr) glXQueryMaxSwapBarriersSGIX }, 1329ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1330ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SUN_get_transparent_index ***/ 1331be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetTransparentIndexSUN", (__GLXextFuncPtr) glXGetTransparentIndexSUN }, 1332ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1333b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_MESA_copy_sub_buffer ***/ 1334be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCopySubBufferMESA", (__GLXextFuncPtr) glXCopySubBufferMESA }, 133543c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul 1336b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_MESA_pixmap_colormap ***/ 1337be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateGLXPixmapMESA", (__GLXextFuncPtr) glXCreateGLXPixmapMESA }, 1338e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1339ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_MESA_release_buffers ***/ 1340be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXReleaseBuffersMESA", (__GLXextFuncPtr) glXReleaseBuffersMESA }, 1341ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1342b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_MESA_set_3dfx_mode ***/ 1343be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXSet3DfxModeMESA", (__GLXextFuncPtr) glXSet3DfxModeMESA }, 1344e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1345b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_ARB_get_proc_address ***/ 1346be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetProcAddressARB", (__GLXextFuncPtr) glXGetProcAddressARB }, 1347e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1348d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul /*** GLX_NV_vertex_array_range ***/ 1349be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXAllocateMemoryNV", (__GLXextFuncPtr) glXAllocateMemoryNV }, 1350be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXFreeMemoryNV", (__GLXextFuncPtr) glXFreeMemoryNV }, 13518fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 1352d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul /*** GLX_MESA_agp_offset ***/ 1353be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetAGPOffsetMESA", (__GLXextFuncPtr) glXGetAGPOffsetMESA }, 13543c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul 13557cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul /*** GLX_MESA_allocate_memory ***/ 13567cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul { "glXAllocateMemoryMESA", (__GLXextFuncPtr) glXAllocateMemoryMESA }, 13577cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul { "glXFreeMemoryMESA", (__GLXextFuncPtr) glXFreeMemoryMESA }, 13587cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul { "glXGetMemoryOffsetMESA", (__GLXextFuncPtr) glXGetMemoryOffsetMESA }, 13597cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 1360fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul /*** GLX_EXT_texture_from_pixmap ***/ 1361fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul { "glXBindTexImageEXT", (__GLXextFuncPtr) glXBindTexImageEXT }, 1362fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul { "glXReleaseTexImageEXT", (__GLXextFuncPtr) glXReleaseTexImageEXT }, 1363fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul 1364e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul { NULL, NULL } /* end of list */ 1365e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul}; 1366e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 136743c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul 136843c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul 1369e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/* 1370e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * Return address of named glX function, or NULL if not found. 1371e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul */ 1372be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul__GLXextFuncPtr 1373e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul_glxapi_get_proc_address(const char *funcName) 137443c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul{ 1375e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul GLuint i; 1376e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul for (i = 0; GLX_functions[i].Name; i++) { 1377e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (strcmp(GLX_functions[i].Name, funcName) == 0) 1378e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return GLX_functions[i].Address; 1379e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 138043c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul return NULL; 138189a42b7e736bd9b0ab090906cab0cd047a6ec12eBrian Paul} 1382e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1383e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1384e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1385e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul/* 1386e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul * This function does not get dispatched through the dispatch table 1387e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul * since it's really a "meta" function. 1388e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul */ 1389be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul__GLXextFuncPtr 1390be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetProcAddressARB(const GLubyte *procName) 1391e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul{ 1392be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul __GLXextFuncPtr f; 1393e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1394be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul f = _glxapi_get_proc_address((const char *) procName); 1395e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul if (f) { 1396e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul return f; 1397e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul } 1398e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1399be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul f = (__GLXextFuncPtr) _glapi_get_proc_address((const char *) procName); 1400e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul return f; 1401e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul} 1402ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul 1403ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul 1404ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul/* GLX 1.4 */ 1405ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paulvoid (*glXGetProcAddress(const GLubyte *procName))() 1406ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul{ 1407ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul return glXGetProcAddressARB(procName); 1408ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul} 1409