1afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/* 2afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Mesa 3-D graphics library 3afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * 4fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. 5afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * 6afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Permission is hereby granted, free of charge, to any person obtaining a 7afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * copy of this software and associated documentation files (the "Software"), 8afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * to deal in the Software without restriction, including without limitation 9afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * and/or sell copies of the Software, and to permit persons to whom the 11afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Software is furnished to do so, subject to the following conditions: 12afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * 13afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * The above copyright notice and this permission notice shall be included 14afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * in all copies or substantial portions of the Software. 15afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * 16afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 193d8d5b298a268b119d840bc9bae0ee9e0c9244a9Kenneth Graunke * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 203d8d5b298a268b119d840bc9bae0ee9e0c9244a9Kenneth Graunke * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 213d8d5b298a268b119d840bc9bae0ee9e0c9244a9Kenneth Graunke * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 223d8d5b298a268b119d840bc9bae0ee9e0c9244a9Kenneth Graunke * OTHER DEALINGS IN THE SOFTWARE. 23afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach */ 24afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 25afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 26e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/* 279b8e267976c824170a0dff9cb542feef855e9b2aBrian Paul * This is the GLX API dispatcher. It uses a dispatch table but that's 289b8e267976c824170a0dff9cb542feef855e9b2aBrian Paul * not really needed anymore since the table always points to the "fake" 299b8e267976c824170a0dff9cb542feef855e9b2aBrian Paul * GLX functions. 30e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul */ 31e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 32afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 33e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#include <assert.h> 34e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#include <stdlib.h> 3555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul#include <stdio.h> 361487b3ea3ed0d30fa70655247e65d0ede3eef3afJon Taylor#include <string.h> 37bf5e573926b2b007cb238afae86207e075603f1eBrian Paul#include "main/glheader.h" 38f2c023291a1f2887294d2aac504f8b82857ad092Brian Paul#include "main/compiler.h" 39bf5e573926b2b007cb238afae86207e075603f1eBrian Paul#include "glapi/glapi.h" 40e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#include "glxapi.h" 41afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 42afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 43e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulextern struct _glxapi_table *_mesa_GetGLXDispatchTable(void); 44afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 45afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 46e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstruct display_dispatch { 47e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul Display *Dpy; 48e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul struct _glxapi_table *Table; 49e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul struct display_dispatch *Next; 50e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul}; 51afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 52888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 53888429360a30090b9ecd17bfd160a88141195235Chia-I Wu/** 54888429360a30090b9ecd17bfd160a88141195235Chia-I Wu * When GLX_INDIRECT_RENDERING is defined, some symbols are missing in 55888429360a30090b9ecd17bfd160a88141195235Chia-I Wu * libglapi.a. We need to define them here. 56888429360a30090b9ecd17bfd160a88141195235Chia-I Wu */ 57888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#ifdef GLX_INDIRECT_RENDERING 58888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 59bdd250080593c6d0d5addcaff0b2a5c880d7a3b2Chia-I Wu#include "glapi/glapitable.h" 60888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 61888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#define KEYWORD1 PUBLIC 62888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 63888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#if defined(USE_MGL_NAMESPACE) 64888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#define NAME(func) mgl##func 65888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#else 66888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#define NAME(func) gl##func 67888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#endif 68888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 69888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#define DISPATCH(FUNC, ARGS, MESSAGE) \ 70b5022ad03584f119b27c143b53e7ed80e8c12ffbChia-I Wu GET_DISPATCH()->FUNC ARGS 71888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 72888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \ 73b5022ad03584f119b27c143b53e7ed80e8c12ffbChia-I Wu return GET_DISPATCH()->FUNC ARGS 74888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 75888429360a30090b9ecd17bfd160a88141195235Chia-I Wu/* skip normal ones */ 76888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#define _GLAPI_SKIP_NORMAL_ENTRY_POINTS 77888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#include "glapi/glapitemp.h" 78888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 79888429360a30090b9ecd17bfd160a88141195235Chia-I Wu#endif /* GLX_INDIRECT_RENDERING */ 80888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 81888429360a30090b9ecd17bfd160a88141195235Chia-I Wu 82e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstatic struct display_dispatch *DispatchList = NULL; 83afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 84e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 8555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul/* Display -> Dispatch caching */ 8655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paulstatic Display *prevDisplay = NULL; 8755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paulstatic struct _glxapi_table *prevTable = NULL; 8855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul 8955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul 90e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstatic struct _glxapi_table * 91e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulget_dispatch(Display *dpy) 92afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 93e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!dpy) 94e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 95e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 96e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul /* search list of display/dispatch pairs for this display */ 97e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul { 98e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul const struct display_dispatch *d = DispatchList; 99e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul while (d) { 100e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (d->Dpy == dpy) { 101e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul prevDisplay = dpy; 102e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul prevTable = d->Table; 103e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return d->Table; /* done! */ 104e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 105e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul d = d->Next; 106e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 107afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach } 108e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1099b8e267976c824170a0dff9cb542feef855e9b2aBrian Paul /* Setup the dispatch table */ 110e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul { 111ab7c6ffadccbeb96b6f4ac58fb75e90697cd30c5Ian Romanick struct _glxapi_table *t = _mesa_GetGLXDispatchTable(); 112e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 113e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (t) { 114e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul struct display_dispatch *d; 1152b7a972e3f36bfcdc6fbe2b59d7ffdcde49c9405Matt Turner d = malloc(sizeof(struct display_dispatch)); 116e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (d) { 117e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul d->Dpy = dpy; 118e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul d->Table = t; 119e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul /* insert at head of list */ 120e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul d->Next = DispatchList; 121e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul DispatchList = d; 122e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul /* update cache */ 123e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul prevDisplay = dpy; 124e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul prevTable = t; 125e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return t; 126e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 127e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 128afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach } 129e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 130e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 131afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 132afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 133afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 134db806cacfd8d91e9da5614e1be6e050bc318ec6aBrian Paul/* Don't use the GET_DISPATCH macro */ 1352b17741e1b7999dacf0974b0a2bcbc10adb26219Brian Paul#undef GET_DISPATCH 1362b17741e1b7999dacf0974b0a2bcbc10adb26219Brian Paul 13755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul#define GET_DISPATCH(DPY, TABLE) \ 13855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul if (DPY == prevDisplay) { \ 13955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul TABLE = prevTable; \ 14055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul } \ 14155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul else if (!DPY) { \ 14255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul TABLE = NULL; \ 14355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul } \ 14455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul else { \ 14555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul TABLE = get_dispatch(DPY); \ 14655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul } 14755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul 14855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul 149e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/* 150e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * GLX API entrypoints 151e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul */ 152e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 153b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_VERSION_1_0 ***/ 154e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 155be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulXVisualInfo PUBLIC * 156be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXChooseVisual(Display *dpy, int screen, int *list) 157afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 15855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 15955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 160e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 161e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 162dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->ChooseVisual(dpy, screen, list); 163afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 164afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 165afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 166be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 167be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCopyContext(Display *dpy, GLXContext src, GLXContext dst, unsigned long mask) 168e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 16955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 17055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 171e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 172e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 173dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->CopyContext(dpy, src, dst, mask); 174e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 175e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 176afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 177be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContext PUBLIC 178be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateContext(Display *dpy, XVisualInfo *visinfo, GLXContext shareList, Bool direct) 179afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 18055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 18155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 182e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 183e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 184dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->CreateContext(dpy, visinfo, shareList, direct); 185afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 186afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 187afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 188be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPixmap PUBLIC 189be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateGLXPixmap(Display *dpy, XVisualInfo *visinfo, Pixmap pixmap) 190e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 19155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 19255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 193e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 194e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 195dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->CreateGLXPixmap(dpy, visinfo, pixmap); 196e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 197e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 198afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 199be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 200be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyContext(Display *dpy, GLXContext ctx) 201afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 20255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 20355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 204e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 205e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 206dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->DestroyContext(dpy, ctx); 207afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 208afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 209afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 210be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 211be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyGLXPixmap(Display *dpy, GLXPixmap pixmap) 212e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 21355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 21455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 215e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 216e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 217dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->DestroyGLXPixmap(dpy, pixmap); 218e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 219e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 220afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 221be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 222be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetConfig(Display *dpy, XVisualInfo *visinfo, int attrib, int *value) 223afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 22455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 22555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 226e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 227e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return GLX_NO_EXTENSION; 228dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->GetConfig(dpy, visinfo, attrib, value); 229afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 230afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 231afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 232bc76e9f28d089f6e1689d8efc41f2a89030c44f6Brian Paul/* declare here to avoid including xmesa.h */ 233bc76e9f28d089f6e1689d8efc41f2a89030c44f6Brian Paulextern void *XMesaGetCurrentContext(void); 234bc76e9f28d089f6e1689d8efc41f2a89030c44f6Brian Paul 235be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContext PUBLIC 236be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentContext(void) 237e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 238bc76e9f28d089f6e1689d8efc41f2a89030c44f6Brian Paul return (GLXContext) XMesaGetCurrentContext(); 239e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 240e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 241afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 242be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXDrawable PUBLIC 243be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentDrawable(void) 244afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 24512c1bee87fcc3a0912685bb6e83447972e5de64eBrian Paul __GLXcontext *gc = (__GLXcontext *) glXGetCurrentContext(); 2467cf50e137da497a590ec9001a9918972a6246142Brian Paul return gc ? gc->currentDrawable : 0; 247afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 248afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 249afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 250be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 251be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXIsDirect(Display *dpy, GLXContext ctx) 252e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 25355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 25455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 255e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 256e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 257dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->IsDirect(dpy, ctx); 258e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 259e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 260afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 261be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 262be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXMakeCurrent(Display *dpy, GLXDrawable drawable, GLXContext ctx) 263afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 264e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul Bool b; 26555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 26655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 26784cac8441fcf5f692cd220e9fa86cab398a4c159Brian Paul if (!t) { 268e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 26984cac8441fcf5f692cd220e9fa86cab398a4c159Brian Paul } 270dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding b = t->MakeCurrent(dpy, drawable, ctx); 271e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return b; 272afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 273afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 274afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 275be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 276be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryExtension(Display *dpy, int *errorb, int *event) 277afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 27855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 27955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 280e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 281e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 282dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->QueryExtension(dpy, errorb, event); 283afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 284afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 285afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 286be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 287be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryVersion(Display *dpy, int *maj, int *min) 288afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 28955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 29055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 291e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 292e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 293dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->QueryVersion(dpy, maj, min); 294afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 295afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 296afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 297be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 298be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXSwapBuffers(Display *dpy, GLXDrawable drawable) 299afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 30055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 30155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 302e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 303e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 304dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->SwapBuffers(dpy, drawable); 305afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 306afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 307afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 308be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 309be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXUseXFont(Font font, int first, int count, int listBase) 310afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 31155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 3127cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 3137cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 314e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 315e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 316dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->UseXFont(font, first, count, listBase); 317afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 318afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 319afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 320be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 321be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXWaitGL(void) 322afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 32355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 3247cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 3257cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 326e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 327e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 328dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->WaitGL(); 329afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 330afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 331afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 332be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 333be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXWaitX(void) 334afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 33555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 3367cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 3377cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 338e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 339e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 340dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->WaitX(); 341afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 342afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 343afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 344afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 345b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_VERSION_1_1 ***/ 346e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 347be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulconst char PUBLIC * 348be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetClientString(Display *dpy, int name) 349afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 35055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 35155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 352e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 353e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 354dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->GetClientString(dpy, name); 355afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 356afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 357afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 358be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulconst char PUBLIC * 359be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryExtensionsString(Display *dpy, int screen) 360e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 36155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 36255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 363e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 364e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 365dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->QueryExtensionsString(dpy, screen); 366e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 367e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 368afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 369be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulconst char PUBLIC * 370be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryServerString(Display *dpy, int screen, int name) 371afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 37255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 37355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 374e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 375e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 376dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->QueryServerString(dpy, screen, name); 377afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 378afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 379afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 380b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_VERSION_1_2 ***/ 381afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 382be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulDisplay PUBLIC * 383be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentDisplay(void) 384afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 3857cf50e137da497a590ec9001a9918972a6246142Brian Paul /* Same code as in libGL's glxext.c */ 38612c1bee87fcc3a0912685bb6e83447972e5de64eBrian Paul __GLXcontext *gc = (__GLXcontext *) glXGetCurrentContext(); 3877cf50e137da497a590ec9001a9918972a6246142Brian Paul if (NULL == gc) return NULL; 3887cf50e137da497a590ec9001a9918972a6246142Brian Paul return gc->currentDpy; 389afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 390e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 391afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 392afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 393b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_VERSION_1_3 ***/ 394afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 395be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXFBConfig PUBLIC * 396be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXChooseFBConfig(Display *dpy, int screen, const int *attribList, int *nitems) 397afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 39855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 39955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 400e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 401e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 402dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->ChooseFBConfig(dpy, screen, attribList, nitems); 403afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 404afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 405afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 406be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContext PUBLIC 407be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateNewContext(Display *dpy, GLXFBConfig config, int renderType, GLXContext shareList, Bool direct) 408afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 40955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 41055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 411e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 412e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 413dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->CreateNewContext(dpy, config, renderType, shareList, direct); 414afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 415afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 416afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 417be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPbuffer PUBLIC 418be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreatePbuffer(Display *dpy, GLXFBConfig config, const int *attribList) 419afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 42055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 42155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 422e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 423e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 424dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->CreatePbuffer(dpy, config, attribList); 425afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 426afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 427afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 428be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPixmap PUBLIC 429be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreatePixmap(Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attribList) 430afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 43155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 43255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 433e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 434e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 435dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->CreatePixmap(dpy, config, pixmap, attribList); 436afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 437afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 438afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 439be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXWindow PUBLIC 440be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateWindow(Display *dpy, GLXFBConfig config, Window win, const int *attribList) 441afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 44255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 44355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 444e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 445e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 446dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->CreateWindow(dpy, config, win, attribList); 447afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 448afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 449afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 450be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 451be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyPbuffer(Display *dpy, GLXPbuffer pbuf) 452afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 45355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 45455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 455e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 456e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 457dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->DestroyPbuffer(dpy, pbuf); 458afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 459afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 460afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 461be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 462be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyPixmap(Display *dpy, GLXPixmap pixmap) 463b82d993b03320818f88f792a9e713f7ed491bfcbBrian Paul{ 46455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 46555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 466e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 467e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 468dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->DestroyPixmap(dpy, pixmap); 469b82d993b03320818f88f792a9e713f7ed491bfcbBrian Paul} 470b82d993b03320818f88f792a9e713f7ed491bfcbBrian Paul 471b82d993b03320818f88f792a9e713f7ed491bfcbBrian Paul 472be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 473be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyWindow(Display *dpy, GLXWindow window) 474ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 47555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 47655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 477e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 478e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 479dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->DestroyWindow(dpy, window); 480ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 481ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 482ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 483be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXDrawable PUBLIC 484be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentReadDrawable(void) 485ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 48612c1bee87fcc3a0912685bb6e83447972e5de64eBrian Paul __GLXcontext *gc = (__GLXcontext *) glXGetCurrentContext(); 4877cf50e137da497a590ec9001a9918972a6246142Brian Paul return gc ? gc->currentReadable : 0; 488ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 489ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 490ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 491be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 492be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetFBConfigAttrib(Display *dpy, GLXFBConfig config, int attribute, int *value) 493ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 49455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 49555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 496e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 497e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return GLX_NO_EXTENSION; 498dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->GetFBConfigAttrib(dpy, config, attribute, value); 499ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 500ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 501ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 502be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXFBConfig PUBLIC * 503be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetFBConfigs(Display *dpy, int screen, int *nelements) 5045605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul{ 50555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 50655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 5075605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul if (!t) 5085605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul return 0; 509dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->GetFBConfigs(dpy, screen, nelements); 5105605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul} 5115605798e56ca6e9f968623f33b58ee7ca90594afBrian Paul 512be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 513be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetSelectedEvent(Display *dpy, GLXDrawable drawable, unsigned long *mask) 514ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 51555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 51655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 517e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 518e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 519dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->GetSelectedEvent(dpy, drawable, mask); 520ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 521ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 522ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 523be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulXVisualInfo PUBLIC * 524be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetVisualFromFBConfig(Display *dpy, GLXFBConfig config) 525ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 52655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 52755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 528e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 529e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return NULL; 530dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->GetVisualFromFBConfig(dpy, config); 531ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 532ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 533ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 534be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 535be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXMakeContextCurrent(Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx) 536ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 537e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul Bool b; 53855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 53955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 540e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 541e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 542dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding b = t->MakeContextCurrent(dpy, draw, read, ctx); 543e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return b; 544ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 545ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 546ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 547be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 548be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryContext(Display *dpy, GLXContext ctx, int attribute, int *value) 549ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 55055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 55155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 552e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul assert(t); 553e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 554e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; /* XXX correct? */ 555dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->QueryContext(dpy, ctx, attribute, value); 556ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 557ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 558ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 559be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 560be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryDrawable(Display *dpy, GLXDrawable draw, int attribute, unsigned int *value) 561ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 56255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 56355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 564e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 565e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 566dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->QueryDrawable(dpy, draw, attribute, value); 567ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 568ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 569ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 570be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 571be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXSelectEvent(Display *dpy, GLXDrawable drawable, unsigned long mask) 572ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 57355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 57455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 575e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 576e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 577dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->SelectEvent(dpy, drawable, mask); 578ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 579ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 580ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 581e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 582b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGI_swap_control ***/ 583783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 584be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 585be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXSwapIntervalSGI(int interval) 586783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 58755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 5887cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 5897cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 590783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 591783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 592dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->SwapIntervalSGI(interval); 593783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 594783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 595783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 596783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 597b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGI_video_sync ***/ 598783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 599be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 600be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetVideoSyncSGI(unsigned int *count) 601783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 60255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 6037cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 6047cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 6052d087480b4b1207c058efcccc9a72faedcea4651Brian Paul if (!t || !glXGetCurrentContext()) 6062d087480b4b1207c058efcccc9a72faedcea4651Brian Paul return GLX_BAD_CONTEXT; 607dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->GetVideoSyncSGI(count); 608783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 609783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 610be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 611be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count) 612783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 61355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 6147cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 6157cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 6162d087480b4b1207c058efcccc9a72faedcea4651Brian Paul if (!t || !glXGetCurrentContext()) 6172d087480b4b1207c058efcccc9a72faedcea4651Brian Paul return GLX_BAD_CONTEXT; 618dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->WaitVideoSyncSGI(divisor, remainder, count); 619783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 620783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 621783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 622783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 623b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGI_make_current_read ***/ 624783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 625be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 626be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXMakeCurrentReadSGI(Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx) 627783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 62855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 62955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 630783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 6312d087480b4b1207c058efcccc9a72faedcea4651Brian Paul return False; 632dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->MakeCurrentReadSGI(dpy, draw, read, ctx); 633783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 634783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 635be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXDrawable PUBLIC 636be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentReadDrawableSGI(void) 637783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 6387cf50e137da497a590ec9001a9918972a6246142Brian Paul return glXGetCurrentReadDrawable(); 639783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 640783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 641783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 642b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul#if defined(_VL_H) 643783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 644be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXVideoSourceSGIX PUBLIC 645be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateGLXVideoSourceSGIX(Display *dpy, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode) 646783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 64755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 64855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 649783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 650783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 651dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->CreateGLXVideoSourceSGIX(dpy, screen, server, path, nodeClass, drainNode); 652783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 653783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 654be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 655be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyGLXVideoSourceSGIX(Display *dpy, GLXVideoSourceSGIX src) 656783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 65755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 65855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 659783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 660783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 661dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->DestroyGLXVideoSourceSGIX(dpy, src); 662783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 663783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 664783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul#endif 665783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 666783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 667b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_EXT_import_context ***/ 668e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 669be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 670be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXFreeContextEXT(Display *dpy, GLXContext context) 671ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 67255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 67355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 674e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 675e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 676dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->FreeContextEXT(dpy, context); 677ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 678ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 679be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContextID PUBLIC 680be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetContextIDEXT(const GLXContext context) 681ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 68212c1bee87fcc3a0912685bb6e83447972e5de64eBrian Paul return ((__GLXcontext *) context)->xid; 683ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 684ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 685be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulDisplay PUBLIC * 686be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetCurrentDisplayEXT(void) 687ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 6887cf50e137da497a590ec9001a9918972a6246142Brian Paul return glXGetCurrentDisplay(); 689ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 690ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 691be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContext PUBLIC 692be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXImportContextEXT(Display *dpy, GLXContextID contextID) 693ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 69455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 69555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 696e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 697e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 698dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->ImportContextEXT(dpy, contextID); 699ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 700ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 701be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 702be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryContextInfoEXT(Display *dpy, GLXContext context, int attribute,int *value) 703ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 70455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 70555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 706e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 707e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; /* XXX ok? */ 708dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->QueryContextInfoEXT(dpy, context, attribute, value); 709ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 710ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 711e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 712e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 713b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGIX_fbconfig ***/ 714ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 715be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 716be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetFBConfigAttribSGIX(Display *dpy, GLXFBConfigSGIX config, int attribute, int *value) 717ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 71855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 71955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 720e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 721e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 722dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->GetFBConfigAttribSGIX(dpy, config, attribute, value); 723ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 724ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 725be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXFBConfigSGIX PUBLIC * 726be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXChooseFBConfigSGIX(Display *dpy, int screen, int *attrib_list, int *nelements) 727783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 72855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 72955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 730783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 731783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 732dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->ChooseFBConfigSGIX(dpy, screen, attrib_list, nelements); 733783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 734ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 735be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPixmap PUBLIC 736be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateGLXPixmapWithConfigSGIX(Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap) 737ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul{ 73855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 73955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 740e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 741e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return 0; 742dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->CreateGLXPixmapWithConfigSGIX(dpy, config, pixmap); 743783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 744783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 745be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXContext PUBLIC 746be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateContextWithConfigSGIX(Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct) 747783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 74855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 74955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 750783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 751783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 752dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->CreateContextWithConfigSGIX(dpy, config, render_type, share_list, direct); 753783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 754783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 755be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulXVisualInfo PUBLIC * 756be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetVisualFromFBConfigSGIX(Display *dpy, GLXFBConfigSGIX config) 757783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 75855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 75955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 760783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 761783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 762dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->GetVisualFromFBConfigSGIX(dpy, config); 763783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 764783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 765be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXFBConfigSGIX PUBLIC 766be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetFBConfigFromVisualSGIX(Display *dpy, XVisualInfo *vis) 767783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 76855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 76955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 770783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 771783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 772dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->GetFBConfigFromVisualSGIX(dpy, vis); 773783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 774783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 775783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 776783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 777b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGIX_pbuffer ***/ 778783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 779be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPbufferSGIX PUBLIC 780be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateGLXPbufferSGIX(Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list) 781783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 78255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 78355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 784783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 785783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 786dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->CreateGLXPbufferSGIX(dpy, config, width, height, attrib_list); 787783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 788783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 789be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 790be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXDestroyGLXPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuf) 791783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 79255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 79355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 794783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 795783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 796dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->DestroyGLXPbufferSGIX(dpy, pbuf); 797783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 798783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 799be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 800be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryGLXPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value) 801783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 80255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 80355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 804783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 805783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return 0; 806dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->QueryGLXPbufferSGIX(dpy, pbuf, attribute, value); 807783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 808783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 809be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 810be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXSelectEventSGIX(Display *dpy, GLXDrawable drawable, unsigned long mask) 811783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 81255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 81355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 814783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 815783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 816dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->SelectEventSGIX(dpy, drawable, mask); 817783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 818783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 819be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 820be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetSelectedEventSGIX(Display *dpy, GLXDrawable drawable, unsigned long *mask) 821783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 82255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 82355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 824783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 825783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 826dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->GetSelectedEventSGIX(dpy, drawable, mask); 827783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul} 828783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 829783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 830783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 831b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGI_cushion ***/ 832783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 833be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 834be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCushionSGI(Display *dpy, Window win, float cushion) 835783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul{ 83655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 83755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 838783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul if (!t) 839783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 840dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->CushionSGI(dpy, win, cushion); 841ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul} 842ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 843ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 844ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 845b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGIX_video_resize ***/ 8464536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 847be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 848be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXBindChannelToWindowSGIX(Display *dpy, int screen, int channel , Window window) 8494536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 85055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 85155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 8524536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 8534536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return 0; 854dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->BindChannelToWindowSGIX(dpy, screen, channel, window); 8554536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 8564536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 857be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 858be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXChannelRectSGIX(Display *dpy, int screen, int channel, int x, int y, int w, int h) 8594536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 86055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 86155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 8624536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 8634536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return 0; 864dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->ChannelRectSGIX(dpy, screen, channel, x, y, w, h); 8654536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 8664536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 867be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 868be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryChannelRectSGIX(Display *dpy, int screen, int channel, int *x, int *y, int *w, int *h) 8694536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 87055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 87155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 8724536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 8734536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return 0; 874dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->QueryChannelRectSGIX(dpy, screen, channel, x, y, w, h); 8754536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 8764536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 877be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 878be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryChannelDeltasSGIX(Display *dpy, int screen, int channel, int *dx, int *dy, int *dw, int *dh) 8794536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 88055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 88155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 8824536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 8834536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return 0; 884dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->QueryChannelDeltasSGIX(dpy, screen, channel, dx, dy, dw, dh); 8854536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 8864536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 887be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulint PUBLIC 888be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXChannelRectSyncSGIX(Display *dpy, int screen, int channel, GLenum synctype) 8894536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 89055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 89155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 8924536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 8934536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul return 0; 894dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->ChannelRectSyncSGIX(dpy, screen, channel, synctype); 8954536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 8964536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 8974536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 8984536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 899b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul#if defined(_DM_BUFFER_H_) 9004536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 901be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 902be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXAssociateDMPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer) 9034536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 90455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 90555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9064536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 907783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return False; 908dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->AssociateDMPbufferSGIX(dpy, pbuffer, params, dmbuffer); 9094536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9104536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 911783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul#endif 9124536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 9134536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 914b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGIX_swap_group ***/ 915783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 916be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 917be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXJoinSwapGroupSGIX(Display *dpy, GLXDrawable drawable, GLXDrawable member) 9184536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 91955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 92055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9214536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 922783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 923dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->JoinSwapGroupSGIX(dpy, drawable, member); 9244536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9254536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 926783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 927b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SGIX_swap_barrier ***/ 928783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 929be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 930be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXBindSwapBarrierSGIX(Display *dpy, GLXDrawable drawable, int barrier) 9314536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 93255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 93355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9344536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 935783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return; 936dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->BindSwapBarrierSGIX(dpy, drawable, barrier); 9374536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9384536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 939be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 940be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXQueryMaxSwapBarriersSGIX(Display *dpy, int screen, int *max) 9414536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 94255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 94355ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9444536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 945783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return False; 946dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->QueryMaxSwapBarriersSGIX(dpy, screen, max); 9474536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9484536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 949783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 950783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 951b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_SUN_get_transparent_index ***/ 952783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul 953be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulStatus PUBLIC 954be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetTransparentIndexSUN(Display *dpy, Window overlay, Window underlay, long *pTransparent) 9554536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul{ 95655ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 95755ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 9584536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul if (!t) 959783d7dfcbf40f727c85915b3e5ea5ff6682eaa48Brian Paul return False; 960dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->GetTransparentIndexSUN(dpy, overlay, underlay, pTransparent); 9614536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul} 9624536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 9634536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 9644536021a62e02fceaa6e8eb889b0f61743109cc4Brian Paul 965b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_MESA_copy_sub_buffer ***/ 966ad6fd8ed4daa9a1e4167476bdcd0b65195a8045aBrian Paul 967be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 968be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCopySubBufferMESA(Display *dpy, GLXDrawable drawable, int x, int y, int width, int height) 969afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 97055ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 97155ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 972e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 973e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return; 974dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->CopySubBufferMESA(dpy, drawable, x, y, width, height); 975e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 976e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 977e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 978e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 979b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_MESA_release_buffers ***/ 980e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 981be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 982be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXReleaseBuffersMESA(Display *dpy, Window w) 983e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 98455ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 98555ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 986e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 987e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 988dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->ReleaseBuffersMESA(dpy, w); 989afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 990e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 991afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 992afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 993b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_MESA_pixmap_colormap ***/ 994e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 995be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLXPixmap PUBLIC 996be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXCreateGLXPixmapMESA(Display *dpy, XVisualInfo *visinfo, Pixmap pixmap, Colormap cmap) 997afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 99855ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 99955ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul GET_DISPATCH(dpy, t); 1000e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 1001afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach return 0; 1002dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->CreateGLXPixmapMESA(dpy, visinfo, pixmap, cmap); 1003e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 1004e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1005e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1006e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1007b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul/*** GLX_MESA_set_3dfx_mode ***/ 1008e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1009be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulBool PUBLIC 1010be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXSet3DfxModeMESA(int mode) 1011e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 101255ed11bac511bb9ba80c1e2d2115d91e32621be4Brian Paul struct _glxapi_table *t; 10137cf50e137da497a590ec9001a9918972a6246142Brian Paul Display *dpy = glXGetCurrentDisplay(); 10147cf50e137da497a590ec9001a9918972a6246142Brian Paul GET_DISPATCH(dpy, t); 1015e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (!t) 1016e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return False; 1017dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->Set3DfxModeMESA(mode); 1018afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 1019e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1020afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1021afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1022d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul/*** GLX_NV_vertex_array_range ***/ 10238fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 1024be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC * 10258fefafa2200d3ea44ec46592b190654a10685b46Brian PaulglXAllocateMemoryNV( GLsizei size, 10268fefafa2200d3ea44ec46592b190654a10685b46Brian Paul GLfloat readFrequency, 10278fefafa2200d3ea44ec46592b190654a10685b46Brian Paul GLfloat writeFrequency, 10288fefafa2200d3ea44ec46592b190654a10685b46Brian Paul GLfloat priority ) 10298fefafa2200d3ea44ec46592b190654a10685b46Brian Paul{ 10308fefafa2200d3ea44ec46592b190654a10685b46Brian Paul struct _glxapi_table *t; 10318fefafa2200d3ea44ec46592b190654a10685b46Brian Paul Display *dpy = glXGetCurrentDisplay(); 10328fefafa2200d3ea44ec46592b190654a10685b46Brian Paul GET_DISPATCH(dpy, t); 10338fefafa2200d3ea44ec46592b190654a10685b46Brian Paul if (!t) 10348fefafa2200d3ea44ec46592b190654a10685b46Brian Paul return NULL; 1035dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->AllocateMemoryNV(size, readFrequency, writeFrequency, priority); 10368fefafa2200d3ea44ec46592b190654a10685b46Brian Paul} 10378fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 10388fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 1039be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paulvoid PUBLIC 10408fefafa2200d3ea44ec46592b190654a10685b46Brian PaulglXFreeMemoryNV( GLvoid *pointer ) 10418fefafa2200d3ea44ec46592b190654a10685b46Brian Paul{ 10428fefafa2200d3ea44ec46592b190654a10685b46Brian Paul struct _glxapi_table *t; 10438fefafa2200d3ea44ec46592b190654a10685b46Brian Paul Display *dpy = glXGetCurrentDisplay(); 10448fefafa2200d3ea44ec46592b190654a10685b46Brian Paul GET_DISPATCH(dpy, t); 10458fefafa2200d3ea44ec46592b190654a10685b46Brian Paul if (!t) 10468fefafa2200d3ea44ec46592b190654a10685b46Brian Paul return; 1047dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding t->FreeMemoryNV(pointer); 10488fefafa2200d3ea44ec46592b190654a10685b46Brian Paul} 10498fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 10508fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 10517cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 10527cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 1053d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul/*** GLX_MESA_agp_offset */ 1054d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul 1055be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulGLuint PUBLIC 1056d6113fc20d68f5720740b89c594227d0312bab3eBrian PaulglXGetAGPOffsetMESA( const GLvoid *pointer ) 1057d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul{ 1058d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul struct _glxapi_table *t; 1059d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul Display *dpy = glXGetCurrentDisplay(); 1060d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul GET_DISPATCH(dpy, t); 1061d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul if (!t) 1062d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul return ~0; 1063dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->GetAGPOffsetMESA(pointer); 1064d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul} 1065d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul 1066afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1067fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul/*** GLX_EXT_texture_from_pixmap */ 1068fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul 106973060ec7ebaa6a304402caa60610f94dac2cf24bBrian Paulvoid PUBLIC 1070fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian PaulglXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, 1071fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul const int *attrib_list) 1072fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul{ 1073fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul struct _glxapi_table *t; 1074fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul GET_DISPATCH(dpy, t); 1075fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul if (t) 1076fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul t->BindTexImageEXT(dpy, drawable, buffer, attrib_list); 1077fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul} 1078fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul 107973060ec7ebaa6a304402caa60610f94dac2cf24bBrian Paulvoid PUBLIC 1080fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian PaulglXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer) 1081fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul{ 1082fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul struct _glxapi_table *t; 1083fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul GET_DISPATCH(dpy, t); 1084fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul if (t) 1085fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul t->ReleaseTexImageEXT(dpy, drawable, buffer); 1086fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul} 1087fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul 10887cd2ae9d97377bc68f66ce3c7734f56e3f5dfa6bBrian Paul 1089e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/**********************************************************************/ 1090e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/* GLX API management functions */ 1091e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/**********************************************************************/ 1092e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1093e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1094e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulconst char * 1095e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul_glxapi_get_version(void) 1096e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 1097e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return "1.3"; 1098e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 1099e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1100afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1101afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/* 1102e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * Return array of extension strings. 1103afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach */ 1104e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulconst char ** 1105e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul_glxapi_get_extensions(void) 1106afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 1107e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul static const char *extensions[] = { 11084c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_EXT_import_context 1109e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_EXT_import_context", 1110e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11114c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_SGI_video_sync 1112e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_SGI_video_sync", 1113e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11144c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_MESA_copy_sub_buffer 1115e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_MESA_copy_sub_buffer", 1116e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11174c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_MESA_release_buffers 1118e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_MESA_release_buffers", 1119e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11204c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_MESA_pixmap_colormap 1121e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_MESA_pixmap_colormap", 1122e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11234c07bd5709830bd11cb29d4d8b8a56e757dc0365Brian Paul#ifdef GLX_MESA_set_3dfx_mode 1124e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul "GLX_MESA_set_3dfx_mode", 1125e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul#endif 11263c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul#ifdef GLX_SGIX_fbconfig 11273c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul "GLX_SGIX_fbconfig", 11283c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul#endif 11293c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul#ifdef GLX_SGIX_pbuffer 11303c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul "GLX_SGIX_pbuffer", 11313c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul#endif 1132c1ba308e6499a6eb3f970b81a3f25d63da988d1cBrian Paul#ifdef GLX_EXT_texture_from_pixmap 1133fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul "GLX_EXT_texture_from_pixmap", 1134fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul#endif 11357f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes#ifdef GLX_INTEL_swap_event 11367f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes "GLX_INTEL_swap_event", 11377f170573ea486f2f2dd474c2590346f1a0110773Jesse Barnes#endif 1138e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul NULL 1139e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul }; 1140e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return extensions; 1141afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 1142afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1143afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1144afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/* 1145e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * Return size of the GLX dispatch table, in entries, not bytes. 1146afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach */ 1147e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian PaulGLuint 1148e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul_glxapi_get_dispatch_table_size(void) 1149e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 1150e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return sizeof(struct _glxapi_table) / sizeof(void *); 1151e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 1152e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1153e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1154e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstatic int 1155e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulgeneric_no_op_func(void) 1156afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{ 1157afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach return 0; 1158afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach} 1159afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach 1160e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1161e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/* 1162e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * Initialize all functions in given dispatch table to be no-ops 1163e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul */ 1164e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulvoid 1165e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul_glxapi_set_no_op_table(struct _glxapi_table *t) 1166e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul{ 1167be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul typedef int (*nop_func)(void); 1168be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul nop_func *dispatch = (nop_func *) t; 1169e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul GLuint n = _glxapi_get_dispatch_table_size(); 1170e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul GLuint i; 1171e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul for (i = 0; i < n; i++) { 1172be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul dispatch[i] = generic_no_op_func; 1173e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 1174e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul} 1175e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1176e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1177e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstruct name_address_pair { 1178e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul const char *Name; 1179be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul __GLXextFuncPtr Address; 1180e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul}; 1181e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1182e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paulstatic struct name_address_pair GLX_functions[] = { 1183b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_VERSION_1_0 ***/ 1184be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXChooseVisual", (__GLXextFuncPtr) glXChooseVisual }, 1185be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCopyContext", (__GLXextFuncPtr) glXCopyContext }, 1186be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateContext", (__GLXextFuncPtr) glXCreateContext }, 1187be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateGLXPixmap", (__GLXextFuncPtr) glXCreateGLXPixmap }, 1188be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyContext", (__GLXextFuncPtr) glXDestroyContext }, 1189be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyGLXPixmap", (__GLXextFuncPtr) glXDestroyGLXPixmap }, 1190be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetConfig", (__GLXextFuncPtr) glXGetConfig }, 1191be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentContext", (__GLXextFuncPtr) glXGetCurrentContext }, 1192be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentDrawable", (__GLXextFuncPtr) glXGetCurrentDrawable }, 1193be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXIsDirect", (__GLXextFuncPtr) glXIsDirect }, 1194be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXMakeCurrent", (__GLXextFuncPtr) glXMakeCurrent }, 1195be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryExtension", (__GLXextFuncPtr) glXQueryExtension }, 1196be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryVersion", (__GLXextFuncPtr) glXQueryVersion }, 1197be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXSwapBuffers", (__GLXextFuncPtr) glXSwapBuffers }, 1198be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXUseXFont", (__GLXextFuncPtr) glXUseXFont }, 1199be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXWaitGL", (__GLXextFuncPtr) glXWaitGL }, 1200be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXWaitX", (__GLXextFuncPtr) glXWaitX }, 1201e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1202b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_VERSION_1_1 ***/ 1203be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetClientString", (__GLXextFuncPtr) glXGetClientString }, 1204be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryExtensionsString", (__GLXextFuncPtr) glXQueryExtensionsString }, 1205be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryServerString", (__GLXextFuncPtr) glXQueryServerString }, 120689a42b7e736bd9b0ab090906cab0cd047a6ec12eBrian Paul 1207b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_VERSION_1_2 ***/ 1208be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentDisplay", (__GLXextFuncPtr) glXGetCurrentDisplay }, 120989a42b7e736bd9b0ab090906cab0cd047a6ec12eBrian Paul 1210b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_VERSION_1_3 ***/ 1211be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXChooseFBConfig", (__GLXextFuncPtr) glXChooseFBConfig }, 1212be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateNewContext", (__GLXextFuncPtr) glXCreateNewContext }, 1213be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreatePbuffer", (__GLXextFuncPtr) glXCreatePbuffer }, 1214be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreatePixmap", (__GLXextFuncPtr) glXCreatePixmap }, 1215be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateWindow", (__GLXextFuncPtr) glXCreateWindow }, 1216be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyPbuffer", (__GLXextFuncPtr) glXDestroyPbuffer }, 1217be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyPixmap", (__GLXextFuncPtr) glXDestroyPixmap }, 1218be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyWindow", (__GLXextFuncPtr) glXDestroyWindow }, 1219be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentReadDrawable", (__GLXextFuncPtr) glXGetCurrentReadDrawable }, 1220be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetFBConfigAttrib", (__GLXextFuncPtr) glXGetFBConfigAttrib }, 1221be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetFBConfigs", (__GLXextFuncPtr) glXGetFBConfigs }, 1222be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetSelectedEvent", (__GLXextFuncPtr) glXGetSelectedEvent }, 1223be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetVisualFromFBConfig", (__GLXextFuncPtr) glXGetVisualFromFBConfig }, 1224be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXMakeContextCurrent", (__GLXextFuncPtr) glXMakeContextCurrent }, 1225be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryContext", (__GLXextFuncPtr) glXQueryContext }, 1226be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryDrawable", (__GLXextFuncPtr) glXQueryDrawable }, 1227be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXSelectEvent", (__GLXextFuncPtr) glXSelectEvent }, 122843c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul 1229ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul /*** GLX_VERSION_1_4 ***/ 1230be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetProcAddress", (__GLXextFuncPtr) glXGetProcAddress }, 1231ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul 1232ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGI_swap_control ***/ 1233be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXSwapIntervalSGI", (__GLXextFuncPtr) glXSwapIntervalSGI }, 1234ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1235b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_SGI_video_sync ***/ 1236be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetVideoSyncSGI", (__GLXextFuncPtr) glXGetVideoSyncSGI }, 1237be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXWaitVideoSyncSGI", (__GLXextFuncPtr) glXWaitVideoSyncSGI }, 1238e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1239ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGI_make_current_read ***/ 1240be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXMakeCurrentReadSGI", (__GLXextFuncPtr) glXMakeCurrentReadSGI }, 1241be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentReadDrawableSGI", (__GLXextFuncPtr) glXGetCurrentReadDrawableSGI }, 1242ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1243ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_video_source ***/ 1244ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul#if defined(_VL_H) 1245be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateGLXVideoSourceSGIX", (__GLXextFuncPtr) glXCreateGLXVideoSourceSGIX }, 1246be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyGLXVideoSourceSGIX", (__GLXextFuncPtr) glXDestroyGLXVideoSourceSGIX }, 1247ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul#endif 1248ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1249ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_EXT_import_context ***/ 1250be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXFreeContextEXT", (__GLXextFuncPtr) glXFreeContextEXT }, 1251be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetContextIDEXT", (__GLXextFuncPtr) glXGetContextIDEXT }, 1252be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetCurrentDisplayEXT", (__GLXextFuncPtr) glXGetCurrentDisplayEXT }, 1253be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXImportContextEXT", (__GLXextFuncPtr) glXImportContextEXT }, 1254be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryContextInfoEXT", (__GLXextFuncPtr) glXQueryContextInfoEXT }, 1255ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1256ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_fbconfig ***/ 1257be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetFBConfigAttribSGIX", (__GLXextFuncPtr) glXGetFBConfigAttribSGIX }, 1258be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXChooseFBConfigSGIX", (__GLXextFuncPtr) glXChooseFBConfigSGIX }, 1259be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateGLXPixmapWithConfigSGIX", (__GLXextFuncPtr) glXCreateGLXPixmapWithConfigSGIX }, 1260be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateContextWithConfigSGIX", (__GLXextFuncPtr) glXCreateContextWithConfigSGIX }, 1261be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetVisualFromFBConfigSGIX", (__GLXextFuncPtr) glXGetVisualFromFBConfigSGIX }, 1262be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetFBConfigFromVisualSGIX", (__GLXextFuncPtr) glXGetFBConfigFromVisualSGIX }, 1263ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1264ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_pbuffer ***/ 1265be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateGLXPbufferSGIX", (__GLXextFuncPtr) glXCreateGLXPbufferSGIX }, 1266be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXDestroyGLXPbufferSGIX", (__GLXextFuncPtr) glXDestroyGLXPbufferSGIX }, 1267be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryGLXPbufferSGIX", (__GLXextFuncPtr) glXQueryGLXPbufferSGIX }, 1268be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXSelectEventSGIX", (__GLXextFuncPtr) glXSelectEventSGIX }, 1269be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetSelectedEventSGIX", (__GLXextFuncPtr) glXGetSelectedEventSGIX }, 1270ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1271ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGI_cushion ***/ 1272be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCushionSGI", (__GLXextFuncPtr) glXCushionSGI }, 1273ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1274ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_video_resize ***/ 1275be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXBindChannelToWindowSGIX", (__GLXextFuncPtr) glXBindChannelToWindowSGIX }, 1276be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXChannelRectSGIX", (__GLXextFuncPtr) glXChannelRectSGIX }, 1277be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryChannelRectSGIX", (__GLXextFuncPtr) glXQueryChannelRectSGIX }, 1278be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryChannelDeltasSGIX", (__GLXextFuncPtr) glXQueryChannelDeltasSGIX }, 1279be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXChannelRectSyncSGIX", (__GLXextFuncPtr) glXChannelRectSyncSGIX }, 1280ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1281ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_dmbuffer **/ 1282ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul#if defined(_DM_BUFFER_H_) 1283be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXAssociateDMPbufferSGIX", (__GLXextFuncPtr) glXAssociateDMPbufferSGIX }, 1284ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul#endif 1285ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1286ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_swap_group ***/ 1287be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXJoinSwapGroupSGIX", (__GLXextFuncPtr) glXJoinSwapGroupSGIX }, 1288ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1289ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SGIX_swap_barrier ***/ 1290be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXBindSwapBarrierSGIX", (__GLXextFuncPtr) glXBindSwapBarrierSGIX }, 1291be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXQueryMaxSwapBarriersSGIX", (__GLXextFuncPtr) glXQueryMaxSwapBarriersSGIX }, 1292ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1293ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_SUN_get_transparent_index ***/ 1294be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetTransparentIndexSUN", (__GLXextFuncPtr) glXGetTransparentIndexSUN }, 1295ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1296b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_MESA_copy_sub_buffer ***/ 1297be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCopySubBufferMESA", (__GLXextFuncPtr) glXCopySubBufferMESA }, 129843c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul 1299b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_MESA_pixmap_colormap ***/ 1300be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXCreateGLXPixmapMESA", (__GLXextFuncPtr) glXCreateGLXPixmapMESA }, 1301e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1302ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul /*** GLX_MESA_release_buffers ***/ 1303be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXReleaseBuffersMESA", (__GLXextFuncPtr) glXReleaseBuffersMESA }, 1304ffa10b1c3b3c944438d0a75c84acdbd92091c35cBrian Paul 1305b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_MESA_set_3dfx_mode ***/ 1306be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXSet3DfxModeMESA", (__GLXextFuncPtr) glXSet3DfxModeMESA }, 1307e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 1308b0bb4f6226a18e0a6eb40046c7f7b5a841c75edaBrian Paul /*** GLX_ARB_get_proc_address ***/ 1309be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetProcAddressARB", (__GLXextFuncPtr) glXGetProcAddressARB }, 1310e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1311d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul /*** GLX_NV_vertex_array_range ***/ 1312be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXAllocateMemoryNV", (__GLXextFuncPtr) glXAllocateMemoryNV }, 1313be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXFreeMemoryNV", (__GLXextFuncPtr) glXFreeMemoryNV }, 13148fefafa2200d3ea44ec46592b190654a10685b46Brian Paul 1315d6113fc20d68f5720740b89c594227d0312bab3eBrian Paul /*** GLX_MESA_agp_offset ***/ 1316be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul { "glXGetAGPOffsetMESA", (__GLXextFuncPtr) glXGetAGPOffsetMESA }, 13173c5bfac63bcbc4028c552fe74d904e6a3416ff36Brian Paul 1318fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul /*** GLX_EXT_texture_from_pixmap ***/ 1319fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul { "glXBindTexImageEXT", (__GLXextFuncPtr) glXBindTexImageEXT }, 1320fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul { "glXReleaseTexImageEXT", (__GLXextFuncPtr) glXReleaseTexImageEXT }, 1321fd54564f78d4aeae2c39ada7502ec659c14b3ecaBrian Paul 132275b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul /*** GLX_ARB_create_context ***/ 132375b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul { "glXCreateContextAttribsARB", (__GLXextFuncPtr) glXCreateContextAttribsARB }, 132475b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul 1325e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul { NULL, NULL } /* end of list */ 1326e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul}; 1327e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul 132843c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul 132943c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul 1330e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul/* 1331e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul * Return address of named glX function, or NULL if not found. 1332e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul */ 1333be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul__GLXextFuncPtr 1334e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul_glxapi_get_proc_address(const char *funcName) 133543c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul{ 1336e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul GLuint i; 1337e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul for (i = 0; GLX_functions[i].Name; i++) { 13387399d56ec6019e00297eef57f802a53698baa8adTom Fogal#ifdef MANGLE 13397399d56ec6019e00297eef57f802a53698baa8adTom Fogal /* skip the "m" prefix on the name */ 13407399d56ec6019e00297eef57f802a53698baa8adTom Fogal if (strcmp(GLX_functions[i].Name, funcName+1) == 0) 13417399d56ec6019e00297eef57f802a53698baa8adTom Fogal#else 1342e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul if (strcmp(GLX_functions[i].Name, funcName) == 0) 13437399d56ec6019e00297eef57f802a53698baa8adTom Fogal#endif 1344e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul return GLX_functions[i].Address; 1345e17ba7120fee25e57e7e19fc55d4dbb7b5634f1fBrian Paul } 134643c9c2cfae458cf0d7618af5f25d57c0a5ebae08Brian Paul return NULL; 134789a42b7e736bd9b0ab090906cab0cd047a6ec12eBrian Paul} 1348e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1349e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1350e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1351e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul/* 1352e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul * This function does not get dispatched through the dispatch table 1353e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul * since it's really a "meta" function. 1354e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul */ 135573060ec7ebaa6a304402caa60610f94dac2cf24bBrian Paul__GLXextFuncPtr PUBLIC 1356be2de8b299c9fc7bdc22372ed799e894a8582c62Brian PaulglXGetProcAddressARB(const GLubyte *procName) 1357e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul{ 1358be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul __GLXextFuncPtr f; 1359e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1360be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul f = _glxapi_get_proc_address((const char *) procName); 1361e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul if (f) { 1362e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul return f; 1363e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul } 1364e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul 1365be2de8b299c9fc7bdc22372ed799e894a8582c62Brian Paul f = (__GLXextFuncPtr) _glapi_get_proc_address((const char *) procName); 1366e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul return f; 1367e7d9d974712646fc41cde8d73e1fb3bf78655405Brian Paul} 1368ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul 1369ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul 1370ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul/* GLX 1.4 */ 137173060ec7ebaa6a304402caa60610f94dac2cf24bBrian Paulvoid PUBLIC 137273060ec7ebaa6a304402caa60610f94dac2cf24bBrian Paul(*glXGetProcAddress(const GLubyte *procName))() 1373ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul{ 1374ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul return glXGetProcAddressARB(procName); 1375ba57e5297d60eef37e43dd4d7f10d1e62f5e97ceBrian Paul} 137675b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul 137775b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul 137875b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul/** 137975b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul * Added in GLX_ARB_create_context. 138075b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul */ 138175b713455c77931e5e90c30e65ac99d74dfb17f0Brian PaulGLXContext PUBLIC 138275b713455c77931e5e90c30e65ac99d74dfb17f0Brian PaulglXCreateContextAttribsARB(Display *dpy, GLXFBConfig config, 138375b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul GLXContext share_context, Bool direct, 138475b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul const int *attrib_list) 138575b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul{ 138675b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul struct _glxapi_table *t; 138775b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul GET_DISPATCH(dpy, t); 138875b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul if (!t) 138975b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul return 0; 1390dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding return t->CreateContextAttribs(dpy, config, share_context, direct, 1391dc18ec8b24e206c60de681a505bf66ae74e37742Boyan Ding attrib_list); 139275b713455c77931e5e90c30e65ac99d74dfb17f0Brian Paul} 1393