1fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul/* 2fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * Mesa 3-D graphics library 31136412013d76a5cc197a10fcab99da03c642378Brian Paul * Version: 6.3 4fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * 51136412013d76a5cc197a10fcab99da03c642378Brian Paul * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. 6fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * 7fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * Permission is hereby granted, free of charge, to any person obtaining a 8fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * copy of this software and associated documentation files (the "Software"), 9fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * to deal in the Software without restriction, including without limitation 10fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * the rights to use, copy, modify, merge, publish, distribute, sublicense, 11fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * and/or sell copies of the Software, and to permit persons to whom the 12fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * Software is furnished to do so, subject to the following conditions: 13fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * 14fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * The above copyright notice and this permission notice shall be included 15fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * in all copies or substantial portions of the Software. 16fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * 17fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 21fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul */ 24fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 25fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul 26a657c1aee85b7a2466d8608d8f3d44ebd015e476Ian Romanick/** 2727d260b41038e0c19c8f24b8bdb2c004c1eb7aa2Chia-I Wu * \file glapi_dispatch.c 28a657c1aee85b7a2466d8608d8f3d44ebd015e476Ian Romanick * 29a657c1aee85b7a2466d8608d8f3d44ebd015e476Ian Romanick * This file generates all the gl* function entrypoints. This code is not 3073ded0624de66bc83ae990530febb129d950d04bChia-I Wu * used if optimized assembly stubs are available (e.g., using 3173ded0624de66bc83ae990530febb129d950d04bChia-I Wu * glapi/glapi_x86.S on IA32 or glapi/glapi_sparc.S on SPARC). 32a02fb6afc865a30077ae4d802a7020371c141e73Brian Paul * 33a657c1aee85b7a2466d8608d8f3d44ebd015e476Ian Romanick * \note 34a657c1aee85b7a2466d8608d8f3d44ebd015e476Ian Romanick * This file is also used to build the client-side libGL that loads DRI-based 356e8897ff9f90601ebf6eed500ad942c11b54d1f7Kristian Høgsberg * device drivers. At build-time it is symlinked to src/glx. 36a02fb6afc865a30077ae4d802a7020371c141e73Brian Paul * 37a657c1aee85b7a2466d8608d8f3d44ebd015e476Ian Romanick * \author Brian Paul <brian@precisioninsight.com> 38a02fb6afc865a30077ae4d802a7020371c141e73Brian Paul */ 39a02fb6afc865a30077ae4d802a7020371c141e73Brian Paul 40e607b67ebc0d15f6709fc8f9c79afeeda8ac1031Chia-I Wu#include "glapi/glapi_priv.h" 4149f35a379dc52e9847fce803b9ef73d622d0e575José Fonseca#include "glapi/glapitable.h" 423c63452e64df7e10aa073c6c3b9492b1d7dabbb8Brian Paul 43042a333028eba49f21b45cafaf9dd15d34c68033Kristian Høgsberg 44f0ff50d4edbeab5aa0df349772ed2eda64878282Ian Romanick#if !(defined(USE_X86_ASM) || defined(USE_X86_64_ASM) || defined(USE_SPARC_ASM)) 4559577b577d03d696594f53e7a76a016b3f76da4bBrian Paul 4604120f6cce0aa9e3604a64c740c25b99ca3999dcBrian Paul#if defined(WIN32) 4704120f6cce0aa9e3604a64c740c25b99ca3999dcBrian Paul#define KEYWORD1 GLAPI 4804120f6cce0aa9e3604a64c740c25b99ca3999dcBrian Paul#else 49819b5195346c2f3661d5c6643feb6622a112c8abBrian Paul#define KEYWORD1 PUBLIC 5004120f6cce0aa9e3604a64c740c25b99ca3999dcBrian Paul#endif 5104120f6cce0aa9e3604a64c740c25b99ca3999dcBrian Paul 5201c071340d046a909aefcca16e8fa32cbd3c8791Brian Paul#define KEYWORD2 GLAPIENTRY 5304120f6cce0aa9e3604a64c740c25b99ca3999dcBrian Paul 543c257e187bded9417d00471286d86ea4e483a98aBrian Paul#if defined(USE_MGL_NAMESPACE) 5501c071340d046a909aefcca16e8fa32cbd3c8791Brian Paul#define NAME(func) mgl##func 5601c071340d046a909aefcca16e8fa32cbd3c8791Brian Paul#else 5701c071340d046a909aefcca16e8fa32cbd3c8791Brian Paul#define NAME(func) gl##func 5801c071340d046a909aefcca16e8fa32cbd3c8791Brian Paul#endif 5901c071340d046a909aefcca16e8fa32cbd3c8791Brian Paul 60042a333028eba49f21b45cafaf9dd15d34c68033Kristian Høgsberg#if 0 /* Use this to log GL calls to stdout (for DEBUG only!) */ 61042a333028eba49f21b45cafaf9dd15d34c68033Kristian Høgsberg 62042a333028eba49f21b45cafaf9dd15d34c68033Kristian Høgsberg#define F stdout 63042a333028eba49f21b45cafaf9dd15d34c68033Kristian Høgsberg#define DISPATCH(FUNC, ARGS, MESSAGE) \ 64042a333028eba49f21b45cafaf9dd15d34c68033Kristian Høgsberg fprintf MESSAGE; \ 65b5022ad03584f119b27c143b53e7ed80e8c12ffbChia-I Wu GET_DISPATCH()->FUNC ARGS 66042a333028eba49f21b45cafaf9dd15d34c68033Kristian Høgsberg 67042a333028eba49f21b45cafaf9dd15d34c68033Kristian Høgsberg#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \ 68042a333028eba49f21b45cafaf9dd15d34c68033Kristian Høgsberg fprintf MESSAGE; \ 69b5022ad03584f119b27c143b53e7ed80e8c12ffbChia-I Wu return GET_DISPATCH()->FUNC ARGS 70042a333028eba49f21b45cafaf9dd15d34c68033Kristian Høgsberg 71042a333028eba49f21b45cafaf9dd15d34c68033Kristian Høgsberg#else 72042a333028eba49f21b45cafaf9dd15d34c68033Kristian Høgsberg 73471a774f433c23b263828aa591415741e78a35daBrian Paul#define DISPATCH(FUNC, ARGS, MESSAGE) \ 74b5022ad03584f119b27c143b53e7ed80e8c12ffbChia-I Wu GET_DISPATCH()->FUNC ARGS 75471a774f433c23b263828aa591415741e78a35daBrian Paul 763c257e187bded9417d00471286d86ea4e483a98aBrian Paul#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \ 77b5022ad03584f119b27c143b53e7ed80e8c12ffbChia-I Wu return GET_DISPATCH()->FUNC ARGS 7801c071340d046a909aefcca16e8fa32cbd3c8791Brian Paul 79042a333028eba49f21b45cafaf9dd15d34c68033Kristian Høgsberg#endif /* logging */ 80042a333028eba49f21b45cafaf9dd15d34c68033Kristian Høgsberg 8101c071340d046a909aefcca16e8fa32cbd3c8791Brian Paul 8201c071340d046a909aefcca16e8fa32cbd3c8791Brian Paul#ifndef GLAPIENTRY 8301c071340d046a909aefcca16e8fa32cbd3c8791Brian Paul#define GLAPIENTRY 8401c071340d046a909aefcca16e8fa32cbd3c8791Brian Paul#endif 8501c071340d046a909aefcca16e8fa32cbd3c8791Brian Paul 867870298086cfdde020437e23ba86abb61741129eChia-I Wu#ifdef GLX_INDIRECT_RENDERING 877870298086cfdde020437e23ba86abb61741129eChia-I Wu/* those link to libglapi.a should provide the entry points */ 887870298086cfdde020437e23ba86abb61741129eChia-I Wu#define _GLAPI_SKIP_PROTO_ENTRY_POINTS 897870298086cfdde020437e23ba86abb61741129eChia-I Wu#endif 90bbd287103dad776d8a45c87c4e51fbc26d9b80d5Brian Paul#include "glapi/glapitemp.h" 913c257e187bded9417d00471286d86ea4e483a98aBrian Paul 923c257e187bded9417d00471286d86ea4e483a98aBrian Paul#endif /* USE_X86_ASM */ 93