1afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/* 2afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Mesa 3-D graphics library 3fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian * Version: 7.1 4afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * 5fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. 6afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * 7afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Permission is hereby granted, free of charge, to any person obtaining a 8afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * copy of this software and associated documentation files (the "Software"), 9afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * to deal in the Software without restriction, including without limitation 10afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 11afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * and/or sell copies of the Software, and to permit persons to whom the 12afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * Software is furnished to do so, subject to the following conditions: 13afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * 14afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * The above copyright notice and this permission notice shall be included 15afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * in all copies or substantial portions of the Software. 16afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * 17afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 21afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */ 24afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 25afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 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 32afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 33e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#include <assert.h> 34e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#include <stdlib.h> 3555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul#include <stdio.h> 361487b3ea3ed0d30fa70655247e65d0ede3eef3afJon Taylor#include <string.h> 37bf5e573926b2b007cb238afae86207e075603f1eBrian Paul#include "main/glheader.h" 38f2c023291a1f2887294d2aac504f8b82857ad092Brian Paul#include "main/compiler.h" 39bf5e573926b2b007cb238afae86207e075603f1eBrian Paul#include "glapi/glapi.h" 40e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#include "glxapi.h" 41afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 42afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 43b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paulextern struct _glxapi_table *_real_GetGLXDispatchTable(void); 44e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulextern struct _glxapi_table *_mesa_GetGLXDispatchTable(void); 45afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 46afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 47e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstruct display_dispatch { 48e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul Display *Dpy; 49e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul struct _glxapi_table *Table; 50e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul struct display_dispatch *Next; 51e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul}; 52afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 53888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 54888429360a30090b9ecd17bfd160a88141195235Chia-I Wu/** 55888429360a30090b9ecd17bfd160a88141195235Chia-I Wu * When GLX_INDIRECT_RENDERING is defined, some symbols are missing in 56888429360a30090b9ecd17bfd160a88141195235Chia-I Wu * libglapi.a. We need to define them here. 57888429360a30090b9ecd17bfd160a88141195235Chia-I Wu */ 58888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#ifdef GLX_INDIRECT_RENDERING 59888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 60bdd250080593c6d0d5addcaff0b2a5c880d7a3b2Chia-I Wu#include "glapi/glapitable.h" 61888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 62888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#define KEYWORD1 PUBLIC 63888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 64888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#if defined(USE_MGL_NAMESPACE) 65888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#define NAME(func) mgl##func 66888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#else 67888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#define NAME(func) gl##func 68888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#endif 69888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 70888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#define DISPATCH(FUNC, ARGS, MESSAGE) \ 71b5022ad03584f119b27c143b53e7ed80e8c12ffbChia-I Wu GET_DISPATCH()->FUNC ARGS 72888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 73888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \ 74b5022ad03584f119b27c143b53e7ed80e8c12ffbChia-I Wu return GET_DISPATCH()->FUNC ARGS 75888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 76888429360a30090b9ecd17bfd160a88141195235Chia-I Wu/* skip normal ones */ 77888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#define _GLAPI_SKIP_NORMAL_ENTRY_POINTS 78888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#include "glapi/glapitemp.h" 79888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 80888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#endif /* GLX_INDIRECT_RENDERING */ 81888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 82888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 83e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstatic struct display_dispatch *DispatchList = NULL; 84afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 85e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 8655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul/* Display -> Dispatch caching */ 8755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paulstatic Display *prevDisplay = NULL; 8855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paulstatic struct _glxapi_table *prevTable = NULL; 8955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul 9055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul 91e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstatic struct _glxapi_table * 92e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulget_dispatch(Display *dpy) 93afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 94e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!dpy) 95e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 96e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 97e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul /* search list of display/dispatch pairs for this display */ 98e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul { 99e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul const struct display_dispatch *d = DispatchList; 100e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul while (d) { 101e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (d->Dpy == dpy) { 102e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul prevDisplay = dpy; 103e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul prevTable = d->Table; 104e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return d->Table; /* done! */ 105e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 106e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul d = d->Next; 107e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 108afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg } 109e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 110b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /* A new display, determine if we should use real GLX 111e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * or Mesa's pseudo-GLX. 112e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul */ 113e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul { 114ab7c6ffadccbeb96b6f4ac58fb75e90697cd30c5Ian Romanick struct _glxapi_table *t = _mesa_GetGLXDispatchTable(); 115e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 116e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (t) { 117e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul struct display_dispatch *d; 118e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul d = (struct display_dispatch *) malloc(sizeof(struct display_dispatch)); 119e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (d) { 120e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul d->Dpy = dpy; 121e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul d->Table = t; 122e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul /* insert at head of list */ 123e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul d->Next = DispatchList; 124e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul DispatchList = d; 125e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul /* update cache */ 126e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul prevDisplay = dpy; 127e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul prevTable = t; 128e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return t; 129e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 130e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 131afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg } 132e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 133e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul /* If we get here that means we can't use real GLX on this display 134e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * and the Mesa pseudo-GLX software renderer wasn't compiled in. 135e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * Or, we ran out of memory! 136e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul */ 137e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 138afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 139afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 140afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 1412b17741e1b7999dacf0974b0a2bcbc10adb26219Brian Paul/* Don't use the GET_DISPATCH defined in glthread.h */ 1422b17741e1b7999dacf0974b0a2bcbc10adb26219Brian Paul#undef GET_DISPATCH 1432b17741e1b7999dacf0974b0a2bcbc10adb26219Brian Paul 14455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul#define GET_DISPATCH(DPY, TABLE) \ 14555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul if (DPY == prevDisplay) { \ 14655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul TABLE = prevTable; \ 14755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul } \ 14855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul else if (!DPY) { \ 14955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul TABLE = NULL; \ 15055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul } \ 15155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul else { \ 15255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul TABLE = get_dispatch(DPY); \ 15355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul } 15455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul 15555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul 15655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul 157afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 158d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul/** 159d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul * GLX API current context. 160d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul */ 161d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#if defined(GLX_USE_TLS) 162d41d29b8bde9bb9c277424a43d0b80838edfe254Brian PaulPUBLIC __thread void * CurrentContext 163d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul __attribute__((tls_model("initial-exec"))); 164d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#elif defined(THREADS) 165d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paulstatic _glthread_TSD ContextTSD; /**< Per-thread context pointer */ 166d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#else 167e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstatic GLXContext CurrentContext = 0; 168d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#endif 169d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul 170d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul 171d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paulstatic void 172d41d29b8bde9bb9c277424a43d0b80838edfe254Brian PaulSetCurrentContext(GLXContext c) 173d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul{ 174d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#if defined(GLX_USE_TLS) 175c1ba308e6499a6eb3f970b81a3f25d63da988d1cBrian CurrentContext = c; 176d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#elif defined(THREADS) 177d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul _glthread_SetTSD(&ContextTSD, c); 178d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#else 179d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul CurrentContext = c; 180d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#endif 181d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul} 182e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 183e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 184e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/* 185e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * GLX API entrypoints 186e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul */ 187e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 188b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_VERSION_1_0 ***/ 189e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 190be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulXVisualInfo PUBLIC * 191be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXChooseVisual(Display *dpy, int screen, int *list) 192afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 19355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 19455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 195e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 196e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 197e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->ChooseVisual)(dpy, screen, list); 198afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 199afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 200afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 201be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 202be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCopyContext(Display *dpy, GLXContext src, GLXContext dst, unsigned long mask) 203e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 20455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 20555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 206e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 207e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 208e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->CopyContext)(dpy, src, dst, mask); 209e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 210e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 211afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 212be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContext PUBLIC 213be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateContext(Display *dpy, XVisualInfo *visinfo, GLXContext shareList, Bool direct) 214afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 21555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 21655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 217e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 218e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 219e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->CreateContext)(dpy, visinfo, shareList, direct); 220afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 221afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 222afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 223be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPixmap PUBLIC 224be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateGLXPixmap(Display *dpy, XVisualInfo *visinfo, Pixmap pixmap) 225e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 22655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 22755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 228e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 229e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 230e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->CreateGLXPixmap)(dpy, visinfo, pixmap); 231e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 232e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 233afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 234be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 235be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyContext(Display *dpy, GLXContext ctx) 236afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 23755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 23855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 239e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 240e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 241d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul if (glXGetCurrentContext() == ctx) 242d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul SetCurrentContext(NULL); 243e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->DestroyContext)(dpy, ctx); 244afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 245afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 246afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 247be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 248be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyGLXPixmap(Display *dpy, GLXPixmap pixmap) 249e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 25055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 25155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 252e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 253e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 254e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->DestroyGLXPixmap)(dpy, pixmap); 255e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 256e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 257afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 258be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 259be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetConfig(Display *dpy, XVisualInfo *visinfo, int attrib, int *value) 260afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 26155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 26255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 263e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 264e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return GLX_NO_EXTENSION; 265e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->GetConfig)(dpy, visinfo, attrib, value); 266afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 267afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 268afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 269be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContext PUBLIC 270be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentContext(void) 271e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 272d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#if defined(GLX_USE_TLS) 273d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul return CurrentContext; 274d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#elif defined(THREADS) 27518d1fdebebcb52e7fcf50e62c4c02862d173af51Brian return (GLXContext) _glthread_GetTSD(&ContextTSD); 276d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#else 277e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return CurrentContext; 278d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul#endif 279e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 280e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 281afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 282be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXDrawable PUBLIC 283be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentDrawable(void) 284afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 28512c1bee87fcc3a0912685bb6e83447972e5de64eBrian Paul __GLXcontext *gc = (__GLXcontext *) glXGetCurrentContext(); 2867cf50e137da497a590ec9001a9918972a6246142Brian Paul return gc ? gc->currentDrawable : 0; 287afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 288afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 289afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 290be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 291be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXIsDirect(Display *dpy, GLXContext ctx) 292e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 29355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 29455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 295e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 296e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 297e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->IsDirect)(dpy, ctx); 298e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 299e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 300afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 301be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 302be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXMakeCurrent(Display *dpy, GLXDrawable drawable, GLXContext ctx) 303afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 304e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul Bool b; 30555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 30655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 30784cac8441fcf5f692cd220e9fa86cab398a4c159Brian Paul if (!t) { 308e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 30984cac8441fcf5f692cd220e9fa86cab398a4c159Brian Paul } 310e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul b = (*t->MakeCurrent)(dpy, drawable, ctx); 311e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (b) { 312d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul SetCurrentContext(ctx); 313afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg } 314e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return b; 315afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 316afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 317afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 318be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 319be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryExtension(Display *dpy, int *errorb, int *event) 320afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 32155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 32255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 323e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 324e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 325e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->QueryExtension)(dpy, errorb, event); 326afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 327afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 328afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 329be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 330be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryVersion(Display *dpy, int *maj, int *min) 331afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 33255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 33355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 334e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 335e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 336e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->QueryVersion)(dpy, maj, min); 337afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 338afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 339afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 340be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 341be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXSwapBuffers(Display *dpy, GLXDrawable drawable) 342afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 34355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 34455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 345e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 346e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 347e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->SwapBuffers)(dpy, drawable); 348afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 349afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 350afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 351be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 352be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXUseXFont(Font font, int first, int count, int listBase) 353afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 35455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 3557cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 3567cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 357e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 358e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 359e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->UseXFont)(font, first, count, listBase); 360afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 361afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 362afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 363be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 364be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXWaitGL(void) 365afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 36655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 3677cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 3687cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 369e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 370e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 371e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->WaitGL)(); 372afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 373afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 374afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 375be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 376be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXWaitX(void) 377afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 37855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 3797cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 3807cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 381e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 382e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 383e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->WaitX)(); 384afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 385afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 386afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 387afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 388b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_VERSION_1_1 ***/ 389e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 390be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulconst char PUBLIC * 391be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetClientString(Display *dpy, int name) 392afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 39355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 39455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 395e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 396e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 397e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->GetClientString)(dpy, name); 398afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 399afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 400afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 401be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulconst char PUBLIC * 402be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryExtensionsString(Display *dpy, int screen) 403e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 40455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 40555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 406e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 407e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 408e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->QueryExtensionsString)(dpy, screen); 409e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 410e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 411afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 412be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulconst char PUBLIC * 413be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryServerString(Display *dpy, int screen, int name) 414afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 41555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 41655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 417e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 418e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 419e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->QueryServerString)(dpy, screen, name); 420afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 421afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 422afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 423b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_VERSION_1_2 ***/ 424afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 425be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulDisplay PUBLIC * 426be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentDisplay(void) 427afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 4287cf50e137da497a590ec9001a9918972a6246142Brian Paul /* Same code as in libGL's glxext.c */ 42912c1bee87fcc3a0912685bb6e83447972e5de64eBrian Paul __GLXcontext *gc = (__GLXcontext *) glXGetCurrentContext(); 4307cf50e137da497a590ec9001a9918972a6246142Brian Paul if (NULL == gc) return NULL; 4317cf50e137da497a590ec9001a9918972a6246142Brian Paul return gc->currentDpy; 432afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 433e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 434afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 435afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 436b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_VERSION_1_3 ***/ 437afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 438be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXFBConfig PUBLIC * 439be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXChooseFBConfig(Display *dpy, int screen, const int *attribList, int *nitems) 440afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 44155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 44255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 443e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 444e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 445e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->ChooseFBConfig)(dpy, screen, attribList, nitems); 446afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 447afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 448afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 449be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContext PUBLIC 450be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateNewContext(Display *dpy, GLXFBConfig config, int renderType, GLXContext shareList, Bool direct) 451afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 45255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 45355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 454e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 455e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 456e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->CreateNewContext)(dpy, config, renderType, shareList, direct); 457afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 458afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 459afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 460be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPbuffer PUBLIC 461be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreatePbuffer(Display *dpy, GLXFBConfig config, const int *attribList) 462afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 46355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 46455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 465e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 466e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 467e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->CreatePbuffer)(dpy, config, attribList); 468afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 469afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 470afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 471be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPixmap PUBLIC 472be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreatePixmap(Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attribList) 473afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 47455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 47555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 476e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 477e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 478e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->CreatePixmap)(dpy, config, pixmap, attribList); 479afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 480afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 481afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 482be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXWindow PUBLIC 483be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateWindow(Display *dpy, GLXFBConfig config, Window win, const int *attribList) 484afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 48555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 48655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 487e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 488e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 489e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->CreateWindow)(dpy, config, win, attribList); 490afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 491afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 492afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 493be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 494be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyPbuffer(Display *dpy, GLXPbuffer pbuf) 495afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 49655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 49755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 498e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 499e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 500e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->DestroyPbuffer)(dpy, pbuf); 501afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 502afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 503afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 504be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 505be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyPixmap(Display *dpy, GLXPixmap pixmap) 506b82d993b03320818f88f792a9e713f7ed491bfcbBrian Paul{ 50755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 50855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 509e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 510e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 511e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->DestroyPixmap)(dpy, pixmap); 512b82d993b03320818f88f792a9e713f7ed491bfcbBrian Paul} 513b82d993b03320818f88f792a9e713f7ed491bfcbBrian Paul 514b82d993b03320818f88f792a9e713f7ed491bfcbBrian Paul 515be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 516be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyWindow(Display *dpy, GLXWindow window) 517ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 51855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 51955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 520e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 521e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 522e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->DestroyWindow)(dpy, window); 523ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 524ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 525ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 526be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXDrawable PUBLIC 527be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentReadDrawable(void) 528ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 52912c1bee87fcc3a0912685bb6e83447972e5de64eBrian Paul __GLXcontext *gc = (__GLXcontext *) glXGetCurrentContext(); 5307cf50e137da497a590ec9001a9918972a6246142Brian Paul return gc ? gc->currentReadable : 0; 531ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 532ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 533ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 534be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 535be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetFBConfigAttrib(Display *dpy, GLXFBConfig config, int attribute, int *value) 536ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 53755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 53855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 539e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 540e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return GLX_NO_EXTENSION; 541e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->GetFBConfigAttrib)(dpy, config, attribute, value); 542ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 543ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 544ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 545be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXFBConfig PUBLIC * 546be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetFBConfigs(Display *dpy, int screen, int *nelements) 5475605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul{ 54855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 54955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 5505605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul if (!t) 5515605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul return 0; 5525605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul return (t->GetFBConfigs)(dpy, screen, nelements); 5535605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul} 5545605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul 555be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 556be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetSelectedEvent(Display *dpy, GLXDrawable drawable, unsigned long *mask) 557ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 55855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 55955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 560e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 561e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 562e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->GetSelectedEvent)(dpy, drawable, mask); 563ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 564ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 565ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 566be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulXVisualInfo PUBLIC * 567be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetVisualFromFBConfig(Display *dpy, GLXFBConfig config) 568ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 56955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 57055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 571e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 572e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 573e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->GetVisualFromFBConfig)(dpy, config); 574ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 575ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 576ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 577be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 578be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXMakeContextCurrent(Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx) 579ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 580e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul Bool b; 58155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 58255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 583e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 584e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 585e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul b = (t->MakeContextCurrent)(dpy, draw, read, ctx); 586e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (b) { 587d41d29b8bde9bb9c277424a43d0b80838edfe254Brian Paul SetCurrentContext(ctx); 588e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 589e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return b; 590ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 591ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 592ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 593be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 594be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryContext(Display *dpy, GLXContext ctx, int attribute, int *value) 595ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 59655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 59755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 598e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul assert(t); 599e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 600e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; /* XXX correct? */ 601e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->QueryContext)(dpy, ctx, attribute, value); 602ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 603ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 604ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 605be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 606be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryDrawable(Display *dpy, GLXDrawable draw, int attribute, unsigned int *value) 607ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 60855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 60955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 610e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 611e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 612e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->QueryDrawable)(dpy, draw, attribute, value); 613ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 614ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 615ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 616be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 617be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXSelectEvent(Display *dpy, GLXDrawable drawable, unsigned long mask) 618ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 61955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 62055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 621e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 622e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 623e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->SelectEvent)(dpy, drawable, mask); 624ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 625ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 626ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 627e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 628b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGI_swap_control ***/ 629783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 630be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 631be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXSwapIntervalSGI(int interval) 632783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 63355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 6347cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 6357cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 636783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 637783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 638783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->SwapIntervalSGI)(interval); 639783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 640783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 641783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 642783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 643b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGI_video_sync ***/ 644783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 645be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 646be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetVideoSyncSGI(unsigned int *count) 647783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 64855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 6497cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 6507cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 6512d087480b4b1207c058efcccc9a72faedcea4651Brian Paul if (!t || !glXGetCurrentContext()) 6522d087480b4b1207c058efcccc9a72faedcea4651Brian Paul return GLX_BAD_CONTEXT; 653783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->GetVideoSyncSGI)(count); 654783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 655783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 656be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 657be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count) 658783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 65955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 6607cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 6617cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 6622d087480b4b1207c058efcccc9a72faedcea4651Brian Paul if (!t || !glXGetCurrentContext()) 6632d087480b4b1207c058efcccc9a72faedcea4651Brian Paul return GLX_BAD_CONTEXT; 664783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->WaitVideoSyncSGI)(divisor, remainder, count); 665783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 666783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 667783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 668783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 669b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGI_make_current_read ***/ 670783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 671be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 672be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXMakeCurrentReadSGI(Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx) 673783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 67455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 67555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 676783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 6772d087480b4b1207c058efcccc9a72faedcea4651Brian Paul return False; 678783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->MakeCurrentReadSGI)(dpy, draw, read, ctx); 679783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 680783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 681be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXDrawable PUBLIC 682be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentReadDrawableSGI(void) 683783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 6847cf50e137da497a590ec9001a9918972a6246142Brian Paul return glXGetCurrentReadDrawable(); 685783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 686783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 687783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 688b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul#if defined(_VL_H) 689783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 690be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXVideoSourceSGIX PUBLIC 691be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateGLXVideoSourceSGIX(Display *dpy, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode) 692783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 69355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 69455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 695783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 696783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 697783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->CreateGLXVideoSourceSGIX)(dpy, screen, server, path, nodeClass, drainNode); 698783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 699783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 700be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 701be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyGLXVideoSourceSGIX(Display *dpy, GLXVideoSourceSGIX src) 702783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 70355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 70455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 705783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 706783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 707783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->DestroyGLXVideoSourceSGIX)(dpy, src); 708783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 709783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 710783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul#endif 711783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 712783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 713b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_EXT_import_context ***/ 714e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 715be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 716be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXFreeContextEXT(Display *dpy, GLXContext context) 717ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 71855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 71955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 720e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 721e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 722e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->FreeContextEXT)(dpy, context); 723ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 724ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 725be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContextID PUBLIC 726be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetContextIDEXT(const GLXContext context) 727ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 72812c1bee87fcc3a0912685bb6e83447972e5de64eBrian Paul return ((__GLXcontext *) context)->xid; 729ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 730ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 731be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulDisplay PUBLIC * 732be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentDisplayEXT(void) 733ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 7347cf50e137da497a590ec9001a9918972a6246142Brian Paul return glXGetCurrentDisplay(); 735ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 736ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 737be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContext PUBLIC 738be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXImportContextEXT(Display *dpy, GLXContextID contextID) 739ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 74055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 74155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 742e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 743e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 744e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->ImportContextEXT)(dpy, contextID); 745ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 746ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 747be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 748be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryContextInfoEXT(Display *dpy, GLXContext context, int attribute,int *value) 749ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 75055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 75155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 752e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 753e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; /* XXX ok? */ 754e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->QueryContextInfoEXT)(dpy, context, attribute, value); 755ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 756ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 757e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 758e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 759b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGIX_fbconfig ***/ 760ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 761be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 762be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetFBConfigAttribSGIX(Display *dpy, GLXFBConfigSGIX config, int attribute, int *value) 763ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 76455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 76555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 766e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 767e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 768783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->GetFBConfigAttribSGIX)(dpy, config, attribute, value); 769ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 770ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 771be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXFBConfigSGIX PUBLIC * 772be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXChooseFBConfigSGIX(Display *dpy, int screen, int *attrib_list, int *nelements) 773783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 77455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 77555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 776783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 777783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 778783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->ChooseFBConfigSGIX)(dpy, screen, attrib_list, nelements); 779783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 780ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 781be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPixmap PUBLIC 782be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateGLXPixmapWithConfigSGIX(Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap) 783ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 78455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 78555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 786e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 787e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 788783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->CreateGLXPixmapWithConfigSGIX)(dpy, config, pixmap); 789783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 790783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 791be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContext PUBLIC 792be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateContextWithConfigSGIX(Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct) 793783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 79455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 79555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 796783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 797783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 798783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->CreateContextWithConfigSGIX)(dpy, config, render_type, share_list, direct); 799783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 800783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 801be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulXVisualInfo PUBLIC * 802be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetVisualFromFBConfigSGIX(Display *dpy, GLXFBConfigSGIX config) 803783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 80455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 80555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 806783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 807783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 808783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->GetVisualFromFBConfigSGIX)(dpy, config); 809783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 810783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 811be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXFBConfigSGIX PUBLIC 812be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetFBConfigFromVisualSGIX(Display *dpy, XVisualInfo *vis) 813783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 81455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 81555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 816783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 817783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 818783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->GetFBConfigFromVisualSGIX)(dpy, vis); 819783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 820783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 821783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 822783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 823b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGIX_pbuffer ***/ 824783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 825be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPbufferSGIX PUBLIC 826be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateGLXPbufferSGIX(Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list) 827783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 82855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 82955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 830783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 831783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 832783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->CreateGLXPbufferSGIX)(dpy, config, width, height, attrib_list); 833783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 834783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 835be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 836be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyGLXPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuf) 837783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 83855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 83955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 840783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 841783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 842783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul (t->DestroyGLXPbufferSGIX)(dpy, pbuf); 843783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 844783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 845be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 846be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryGLXPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value) 847783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 84855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 84955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 850783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 851783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 852783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->QueryGLXPbufferSGIX)(dpy, pbuf, attribute, value); 853783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 854783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 855be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 856be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXSelectEventSGIX(Display *dpy, GLXDrawable drawable, unsigned long mask) 857783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 85855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 85955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 860783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 861783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 862783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul (t->SelectEventSGIX)(dpy, drawable, mask); 863783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 864783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 865be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 866be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetSelectedEventSGIX(Display *dpy, GLXDrawable drawable, unsigned long *mask) 867783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 86855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 86955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 870783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 871783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 872783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul (t->GetSelectedEventSGIX)(dpy, drawable, mask); 873783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 874783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 875783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 876783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 877b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGI_cushion ***/ 878783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 879be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 880be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCushionSGI(Display *dpy, Window win, float cushion) 881783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 88255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 88355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 884783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 885783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 886783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul (t->CushionSGI)(dpy, win, cushion); 887ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 888ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 889ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 890ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 891b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGIX_video_resize ***/ 8924536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 893be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 894be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXBindChannelToWindowSGIX(Display *dpy, int screen, int channel , Window window) 8954536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 89655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 89755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 8984536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 8994536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return 0; 9004536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return (t->BindChannelToWindowSGIX)(dpy, screen, channel, window); 9014536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9024536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 903be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 904be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXChannelRectSGIX(Display *dpy, int screen, int channel, int x, int y, int w, int h) 9054536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 90655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 90755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9084536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 9094536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return 0; 9104536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return (t->ChannelRectSGIX)(dpy, screen, channel, x, y, w, h); 9114536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9124536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 913be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 914be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryChannelRectSGIX(Display *dpy, int screen, int channel, int *x, int *y, int *w, int *h) 9154536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 91655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 91755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9184536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 9194536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return 0; 9204536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return (t->QueryChannelRectSGIX)(dpy, screen, channel, x, y, w, h); 9214536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9224536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 923be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 924be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryChannelDeltasSGIX(Display *dpy, int screen, int channel, int *dx, int *dy, int *dw, int *dh) 9254536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 92655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 92755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9284536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 9294536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return 0; 9304536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return (t->QueryChannelDeltasSGIX)(dpy, screen, channel, dx, dy, dw, dh); 9314536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9324536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 933be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 934be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXChannelRectSyncSGIX(Display *dpy, int screen, int channel, GLenum synctype) 9354536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 93655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 93755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9384536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 9394536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return 0; 9404536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return (t->ChannelRectSyncSGIX)(dpy, screen, channel, synctype); 9414536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9424536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 9434536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 9444536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 945b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul#if defined(_DM_BUFFER_H_) 9464536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 947be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 948be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXAssociateDMPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer) 9494536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 95055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 95155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9524536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 953783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return False; 954783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (t->AssociateDMPbufferSGIX)(dpy, pbuffer, params, dmbuffer); 9554536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9564536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 957783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul#endif 9584536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 9594536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 960b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGIX_swap_group ***/ 961783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 962be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 963be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXJoinSwapGroupSGIX(Display *dpy, GLXDrawable drawable, GLXDrawable member) 9644536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 96555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 96655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9674536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 968783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 969783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul (*t->JoinSwapGroupSGIX)(dpy, drawable, member); 9704536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9714536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 972783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 973b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGIX_swap_barrier ***/ 974783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 975be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 976be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXBindSwapBarrierSGIX(Display *dpy, GLXDrawable drawable, int barrier) 9774536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 97855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 97955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9804536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 981783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 982783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul (*t->BindSwapBarrierSGIX)(dpy, drawable, barrier); 9834536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9844536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 985be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 986be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryMaxSwapBarriersSGIX(Display *dpy, int screen, int *max) 9874536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 98855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 98955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9904536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 991783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return False; 992783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (*t->QueryMaxSwapBarriersSGIX)(dpy, screen, max); 9934536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9944536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 995783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 996783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 997b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SUN_get_transparent_index ***/ 998783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 999be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulStatus PUBLIC 1000be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetTransparentIndexSUN(Display *dpy, Window overlay, Window underlay, long *pTransparent) 10014536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 100255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 100355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 10044536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 1005783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return False; 1006783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return (*t->GetTransparentIndexSUN)(dpy, overlay, underlay, pTransparent); 10074536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 10084536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 10094536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 10104536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 1011b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_MESA_copy_sub_buffer ***/ 1012ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 1013be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 1014be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCopySubBufferMESA(Display *dpy, GLXDrawable drawable, int x, int y, int width, int height) 1015afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 101655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 101755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 1018e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 1019e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 1020e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul (t->CopySubBufferMESA)(dpy, drawable, x, y, width, height); 1021e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 1022e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1023e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1024e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1025b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_MESA_release_buffers ***/ 1026e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1027be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 1028be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXReleaseBuffersMESA(Display *dpy, Window w) 1029e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 103055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 103155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 1032e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 1033e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 1034e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->ReleaseBuffersMESA)(dpy, w); 1035afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 1036e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1037afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 1038afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 1039b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_MESA_pixmap_colormap ***/ 1040e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1041be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPixmap PUBLIC 1042be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateGLXPixmapMESA(Display *dpy, XVisualInfo *visinfo, Pixmap pixmap, Colormap cmap) 1043afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 104455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 104555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 1046e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 1047afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg return 0; 1048e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->CreateGLXPixmapMESA)(dpy, visinfo, pixmap, cmap); 1049e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 1050e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1051e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1052e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1053b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_MESA_set_3dfx_mode ***/ 1054e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1055be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 1056be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXSet3DfxModeMESA(int mode) 1057e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 105855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 10597cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 10607cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 1061e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 1062e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 1063e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return (t->Set3DfxModeMESA)(mode); 1064afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 1065e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1066afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 1067afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 1068d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul/*** GLX_NV_vertex_array_range ***/ 10698fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 1070be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC * 10718fefafa2200d3ea44ec46592b190654a10685b46Brian PaulglXAllocateMemoryNV( GLsizei size, 10728fefafa2200d3ea44ec46592b190654a10685b46Brian Paul GLfloat readFrequency, 10738fefafa2200d3ea44ec46592b190654a10685b46Brian Paul GLfloat writeFrequency, 10748fefafa2200d3ea44ec46592b190654a10685b46Brian Paul GLfloat priority ) 10758fefafa2200d3ea44ec46592b190654a10685b46Brian Paul{ 10768fefafa2200d3ea44ec46592b190654a10685b46Brian Paul struct _glxapi_table *t; 10778fefafa2200d3ea44ec46592b190654a10685b46Brian Paul Display *dpy = glXGetCurrentDisplay(); 10788fefafa2200d3ea44ec46592b190654a10685b46Brian Paul GET_DISPATCH(dpy, t); 10798fefafa2200d3ea44ec46592b190654a10685b46Brian Paul if (!t) 10808fefafa2200d3ea44ec46592b190654a10685b46Brian Paul return NULL; 10818fefafa2200d3ea44ec46592b190654a10685b46Brian Paul return (t->AllocateMemoryNV)(size, readFrequency, writeFrequency, priority); 10828fefafa2200d3ea44ec46592b190654a10685b46Brian Paul} 10838fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 10848fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 1085be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 10868fefafa2200d3ea44ec46592b190654a10685b46Brian PaulglXFreeMemoryNV( GLvoid *pointer ) 10878fefafa2200d3ea44ec46592b190654a10685b46Brian Paul{ 10888fefafa2200d3ea44ec46592b190654a10685b46Brian Paul struct _glxapi_table *t; 10898fefafa2200d3ea44ec46592b190654a10685b46Brian Paul Display *dpy = glXGetCurrentDisplay(); 10908fefafa2200d3ea44ec46592b190654a10685b46Brian Paul GET_DISPATCH(dpy, t); 10918fefafa2200d3ea44ec46592b190654a10685b46Brian Paul if (!t) 10928fefafa2200d3ea44ec46592b190654a10685b46Brian Paul return; 10938fefafa2200d3ea44ec46592b190654a10685b46Brian Paul (t->FreeMemoryNV)(pointer); 10948fefafa2200d3ea44ec46592b190654a10685b46Brian Paul} 10958fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 10968fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 10977cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 10987cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 1099d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul/*** GLX_MESA_agp_offset */ 1100d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul 1101be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLuint PUBLIC 1102d6113fc20d68f5720740b89c594227d0312bab3eBrian PaulglXGetAGPOffsetMESA( const GLvoid *pointer ) 1103d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul{ 1104d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul struct _glxapi_table *t; 1105d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul Display *dpy = glXGetCurrentDisplay(); 1106d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul GET_DISPATCH(dpy, t); 1107d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul if (!t) 1108d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul return ~0; 1109d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul return (t->GetAGPOffsetMESA)(pointer); 1110d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul} 1111d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul 1112afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 1113fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian/*** GLX_EXT_texture_from_pixmap */ 1114fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian 111573060ec7ebaa6a304402caa60610f94dac2cf24bBrian Paulvoid PUBLIC 1116fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrianglXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, 1117fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian const int *attrib_list) 1118fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian{ 1119fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian struct _glxapi_table *t; 1120fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian GET_DISPATCH(dpy, t); 1121fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian if (t) 1122fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian t->BindTexImageEXT(dpy, drawable, buffer, attrib_list); 1123fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian} 1124fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian 112573060ec7ebaa6a304402caa60610f94dac2cf24bBrian Paulvoid PUBLIC 1126fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrianglXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer) 1127fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian{ 1128fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian struct _glxapi_table *t; 1129fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian GET_DISPATCH(dpy, t); 1130fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian if (t) 1131fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian t->ReleaseTexImageEXT(dpy, drawable, buffer); 1132fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian} 1133fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian 11347cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 1135e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/**********************************************************************/ 1136e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/* GLX API management functions */ 1137e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/**********************************************************************/ 1138e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1139e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1140e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulconst char * 1141e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul_glxapi_get_version(void) 1142e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 1143e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return "1.3"; 1144e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 1145e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1146afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 1147afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/* 1148e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * Return array of extension strings. 1149afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */ 1150e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulconst char ** 1151e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul_glxapi_get_extensions(void) 1152afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 1153e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul static const char *extensions[] = { 11544c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_EXT_import_context 1155e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_EXT_import_context", 1156e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11574c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_SGI_video_sync 1158e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_SGI_video_sync", 1159e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11604c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_MESA_copy_sub_buffer 1161e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_MESA_copy_sub_buffer", 1162e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11634c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_MESA_release_buffers 1164e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_MESA_release_buffers", 1165e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11664c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_MESA_pixmap_colormap 1167e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_MESA_pixmap_colormap", 1168e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11694c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_MESA_set_3dfx_mode 1170e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_MESA_set_3dfx_mode", 1171e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11723c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul#ifdef GLX_SGIX_fbconfig 11733c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul "GLX_SGIX_fbconfig", 11743c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul#endif 11753c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul#ifdef GLX_SGIX_pbuffer 11763c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul "GLX_SGIX_pbuffer", 11773c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul#endif 1178c1ba308e6499a6eb3f970b81a3f25d63da988d1cBrian#ifdef GLX_EXT_texture_from_pixmap 1179fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian "GLX_EXT_texture_from_pixmap", 1180fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian#endif 11817f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes#ifdef GLX_INTEL_swap_event 11827f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes "GLX_INTEL_swap_event", 11837f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes#endif 1184e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul NULL 1185e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul }; 1186e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return extensions; 1187afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 1188afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 1189afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 1190afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg/* 1191e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * Return size of the GLX dispatch table, in entries, not bytes. 1192afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg */ 1193e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian PaulGLuint 1194e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul_glxapi_get_dispatch_table_size(void) 1195e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 1196e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return sizeof(struct _glxapi_table) / sizeof(void *); 1197e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 1198e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1199e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1200e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstatic int 1201e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulgeneric_no_op_func(void) 1202afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg{ 1203afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg return 0; 1204afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg} 1205afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg 1206e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1207e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/* 1208e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * Initialize all functions in given dispatch table to be no-ops 1209e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul */ 1210e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulvoid 1211e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul_glxapi_set_no_op_table(struct _glxapi_table *t) 1212e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 1213be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul typedef int (*nop_func)(void); 1214be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul nop_func *dispatch = (nop_func *) t; 1215e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul GLuint n = _glxapi_get_dispatch_table_size(); 1216e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul GLuint i; 1217e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul for (i = 0; i < n; i++) { 1218be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul dispatch[i] = generic_no_op_func; 1219e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 1220e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 1221e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1222e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1223e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstruct name_address_pair { 1224e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul const char *Name; 1225be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul __GLXextFuncPtr Address; 1226e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul}; 1227e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1228e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstatic struct name_address_pair GLX_functions[] = { 1229b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_VERSION_1_0 ***/ 1230be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXChooseVisual", (__GLXextFuncPtr) glXChooseVisual }, 1231be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCopyContext", (__GLXextFuncPtr) glXCopyContext }, 1232be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateContext", (__GLXextFuncPtr) glXCreateContext }, 1233be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateGLXPixmap", (__GLXextFuncPtr) glXCreateGLXPixmap }, 1234be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyContext", (__GLXextFuncPtr) glXDestroyContext }, 1235be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyGLXPixmap", (__GLXextFuncPtr) glXDestroyGLXPixmap }, 1236be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetConfig", (__GLXextFuncPtr) glXGetConfig }, 1237be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentContext", (__GLXextFuncPtr) glXGetCurrentContext }, 1238be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentDrawable", (__GLXextFuncPtr) glXGetCurrentDrawable }, 1239be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXIsDirect", (__GLXextFuncPtr) glXIsDirect }, 1240be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXMakeCurrent", (__GLXextFuncPtr) glXMakeCurrent }, 1241be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryExtension", (__GLXextFuncPtr) glXQueryExtension }, 1242be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryVersion", (__GLXextFuncPtr) glXQueryVersion }, 1243be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXSwapBuffers", (__GLXextFuncPtr) glXSwapBuffers }, 1244be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXUseXFont", (__GLXextFuncPtr) glXUseXFont }, 1245be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXWaitGL", (__GLXextFuncPtr) glXWaitGL }, 1246be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXWaitX", (__GLXextFuncPtr) glXWaitX }, 1247e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1248b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_VERSION_1_1 ***/ 1249be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetClientString", (__GLXextFuncPtr) glXGetClientString }, 1250be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryExtensionsString", (__GLXextFuncPtr) glXQueryExtensionsString }, 1251be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryServerString", (__GLXextFuncPtr) glXQueryServerString }, 125289a42b7e736bd9b0ab090906cab0cd047a6ec12eBrian Paul 1253b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_VERSION_1_2 ***/ 1254be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentDisplay", (__GLXextFuncPtr) glXGetCurrentDisplay }, 125589a42b7e736bd9b0ab090906cab0cd047a6ec12eBrian Paul 1256b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_VERSION_1_3 ***/ 1257be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXChooseFBConfig", (__GLXextFuncPtr) glXChooseFBConfig }, 1258be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateNewContext", (__GLXextFuncPtr) glXCreateNewContext }, 1259be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreatePbuffer", (__GLXextFuncPtr) glXCreatePbuffer }, 1260be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreatePixmap", (__GLXextFuncPtr) glXCreatePixmap }, 1261be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateWindow", (__GLXextFuncPtr) glXCreateWindow }, 1262be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyPbuffer", (__GLXextFuncPtr) glXDestroyPbuffer }, 1263be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyPixmap", (__GLXextFuncPtr) glXDestroyPixmap }, 1264be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyWindow", (__GLXextFuncPtr) glXDestroyWindow }, 1265be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentReadDrawable", (__GLXextFuncPtr) glXGetCurrentReadDrawable }, 1266be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetFBConfigAttrib", (__GLXextFuncPtr) glXGetFBConfigAttrib }, 1267be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetFBConfigs", (__GLXextFuncPtr) glXGetFBConfigs }, 1268be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetSelectedEvent", (__GLXextFuncPtr) glXGetSelectedEvent }, 1269be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetVisualFromFBConfig", (__GLXextFuncPtr) glXGetVisualFromFBConfig }, 1270be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXMakeContextCurrent", (__GLXextFuncPtr) glXMakeContextCurrent }, 1271be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryContext", (__GLXextFuncPtr) glXQueryContext }, 1272be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryDrawable", (__GLXextFuncPtr) glXQueryDrawable }, 1273be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXSelectEvent", (__GLXextFuncPtr) glXSelectEvent }, 127443c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul 1275ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul /*** GLX_VERSION_1_4 ***/ 1276be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetProcAddress", (__GLXextFuncPtr) glXGetProcAddress }, 1277ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul 1278ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGI_swap_control ***/ 1279be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXSwapIntervalSGI", (__GLXextFuncPtr) glXSwapIntervalSGI }, 1280ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1281b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_SGI_video_sync ***/ 1282be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetVideoSyncSGI", (__GLXextFuncPtr) glXGetVideoSyncSGI }, 1283be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXWaitVideoSyncSGI", (__GLXextFuncPtr) glXWaitVideoSyncSGI }, 1284e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1285ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGI_make_current_read ***/ 1286be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXMakeCurrentReadSGI", (__GLXextFuncPtr) glXMakeCurrentReadSGI }, 1287be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentReadDrawableSGI", (__GLXextFuncPtr) glXGetCurrentReadDrawableSGI }, 1288ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1289ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_video_source ***/ 1290ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul#if defined(_VL_H) 1291be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateGLXVideoSourceSGIX", (__GLXextFuncPtr) glXCreateGLXVideoSourceSGIX }, 1292be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyGLXVideoSourceSGIX", (__GLXextFuncPtr) glXDestroyGLXVideoSourceSGIX }, 1293ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul#endif 1294ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1295ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_EXT_import_context ***/ 1296be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXFreeContextEXT", (__GLXextFuncPtr) glXFreeContextEXT }, 1297be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetContextIDEXT", (__GLXextFuncPtr) glXGetContextIDEXT }, 1298be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentDisplayEXT", (__GLXextFuncPtr) glXGetCurrentDisplayEXT }, 1299be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXImportContextEXT", (__GLXextFuncPtr) glXImportContextEXT }, 1300be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryContextInfoEXT", (__GLXextFuncPtr) glXQueryContextInfoEXT }, 1301ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1302ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_fbconfig ***/ 1303be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetFBConfigAttribSGIX", (__GLXextFuncPtr) glXGetFBConfigAttribSGIX }, 1304be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXChooseFBConfigSGIX", (__GLXextFuncPtr) glXChooseFBConfigSGIX }, 1305be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateGLXPixmapWithConfigSGIX", (__GLXextFuncPtr) glXCreateGLXPixmapWithConfigSGIX }, 1306be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateContextWithConfigSGIX", (__GLXextFuncPtr) glXCreateContextWithConfigSGIX }, 1307be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetVisualFromFBConfigSGIX", (__GLXextFuncPtr) glXGetVisualFromFBConfigSGIX }, 1308be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetFBConfigFromVisualSGIX", (__GLXextFuncPtr) glXGetFBConfigFromVisualSGIX }, 1309ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1310ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_pbuffer ***/ 1311be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateGLXPbufferSGIX", (__GLXextFuncPtr) glXCreateGLXPbufferSGIX }, 1312be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyGLXPbufferSGIX", (__GLXextFuncPtr) glXDestroyGLXPbufferSGIX }, 1313be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryGLXPbufferSGIX", (__GLXextFuncPtr) glXQueryGLXPbufferSGIX }, 1314be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXSelectEventSGIX", (__GLXextFuncPtr) glXSelectEventSGIX }, 1315be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetSelectedEventSGIX", (__GLXextFuncPtr) glXGetSelectedEventSGIX }, 1316ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1317ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGI_cushion ***/ 1318be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCushionSGI", (__GLXextFuncPtr) glXCushionSGI }, 1319ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1320ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_video_resize ***/ 1321be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXBindChannelToWindowSGIX", (__GLXextFuncPtr) glXBindChannelToWindowSGIX }, 1322be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXChannelRectSGIX", (__GLXextFuncPtr) glXChannelRectSGIX }, 1323be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryChannelRectSGIX", (__GLXextFuncPtr) glXQueryChannelRectSGIX }, 1324be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryChannelDeltasSGIX", (__GLXextFuncPtr) glXQueryChannelDeltasSGIX }, 1325be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXChannelRectSyncSGIX", (__GLXextFuncPtr) glXChannelRectSyncSGIX }, 1326ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1327ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_dmbuffer **/ 1328ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul#if defined(_DM_BUFFER_H_) 1329be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXAssociateDMPbufferSGIX", (__GLXextFuncPtr) glXAssociateDMPbufferSGIX }, 1330ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul#endif 1331ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1332ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_swap_group ***/ 1333be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXJoinSwapGroupSGIX", (__GLXextFuncPtr) glXJoinSwapGroupSGIX }, 1334ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1335ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_swap_barrier ***/ 1336be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXBindSwapBarrierSGIX", (__GLXextFuncPtr) glXBindSwapBarrierSGIX }, 1337be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryMaxSwapBarriersSGIX", (__GLXextFuncPtr) glXQueryMaxSwapBarriersSGIX }, 1338ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1339ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SUN_get_transparent_index ***/ 1340be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetTransparentIndexSUN", (__GLXextFuncPtr) glXGetTransparentIndexSUN }, 1341ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1342b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_MESA_copy_sub_buffer ***/ 1343be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCopySubBufferMESA", (__GLXextFuncPtr) glXCopySubBufferMESA }, 134443c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul 1345b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_MESA_pixmap_colormap ***/ 1346be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateGLXPixmapMESA", (__GLXextFuncPtr) glXCreateGLXPixmapMESA }, 1347e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1348ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_MESA_release_buffers ***/ 1349be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXReleaseBuffersMESA", (__GLXextFuncPtr) glXReleaseBuffersMESA }, 1350ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1351b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_MESA_set_3dfx_mode ***/ 1352be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXSet3DfxModeMESA", (__GLXextFuncPtr) glXSet3DfxModeMESA }, 1353e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1354b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_ARB_get_proc_address ***/ 1355be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetProcAddressARB", (__GLXextFuncPtr) glXGetProcAddressARB }, 1356e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1357d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul /*** GLX_NV_vertex_array_range ***/ 1358be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXAllocateMemoryNV", (__GLXextFuncPtr) glXAllocateMemoryNV }, 1359be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXFreeMemoryNV", (__GLXextFuncPtr) glXFreeMemoryNV }, 13608fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 1361d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul /*** GLX_MESA_agp_offset ***/ 1362be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetAGPOffsetMESA", (__GLXextFuncPtr) glXGetAGPOffsetMESA }, 13633c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul 1364fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian /*** GLX_EXT_texture_from_pixmap ***/ 1365fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian { "glXBindTexImageEXT", (__GLXextFuncPtr) glXBindTexImageEXT }, 1366fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian { "glXReleaseTexImageEXT", (__GLXextFuncPtr) glXReleaseTexImageEXT }, 1367fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian 1368e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul { NULL, NULL } /* end of list */ 1369e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul}; 1370e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 137143c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul 137243c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul 1373e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/* 1374e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * Return address of named glX function, or NULL if not found. 1375e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul */ 1376be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul__GLXextFuncPtr 1377e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul_glxapi_get_proc_address(const char *funcName) 137843c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul{ 1379e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul GLuint i; 1380e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul for (i = 0; GLX_functions[i].Name; i++) { 13817399d56ec6019e00297eef57f802a53698baa8adTom Fogal#ifdef MANGLE 13827399d56ec6019e00297eef57f802a53698baa8adTom Fogal /* skip the "m" prefix on the name */ 13837399d56ec6019e00297eef57f802a53698baa8adTom Fogal if (strcmp(GLX_functions[i].Name, funcName+1) == 0) 13847399d56ec6019e00297eef57f802a53698baa8adTom Fogal#else 1385e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (strcmp(GLX_functions[i].Name, funcName) == 0) 13867399d56ec6019e00297eef57f802a53698baa8adTom Fogal#endif 1387e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return GLX_functions[i].Address; 1388e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 138943c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul return NULL; 139089a42b7e736bd9b0ab090906cab0cd047a6ec12eBrian Paul} 1391e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1392e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1393e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1394e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul/* 1395e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul * This function does not get dispatched through the dispatch table 1396e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul * since it's really a "meta" function. 1397e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul */ 139873060ec7ebaa6a304402caa60610f94dac2cf24bBrian Paul__GLXextFuncPtr PUBLIC 1399be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetProcAddressARB(const GLubyte *procName) 1400e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul{ 1401be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul __GLXextFuncPtr f; 1402e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1403be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul f = _glxapi_get_proc_address((const char *) procName); 1404e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul if (f) { 1405e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul return f; 1406e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul } 1407e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1408be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul f = (__GLXextFuncPtr) _glapi_get_proc_address((const char *) procName); 1409e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul return f; 1410e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul} 1411ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul 1412ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul 1413ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul/* GLX 1.4 */ 141473060ec7ebaa6a304402caa60610f94dac2cf24bBrian Paulvoid PUBLIC 141573060ec7ebaa6a304402caa60610f94dac2cf24bBrian Paul(*glXGetProcAddress(const GLubyte *procName))() 1416ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul{ 1417ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul return glXGetProcAddressARB(procName); 1418ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul} 1419