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