1474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/*
2474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * Mesa 3-D graphics library
3474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * Version:  6.3
4474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *
5474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
6474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *
7474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a
8474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * copy of this software and associated documentation files (the "Software"),
9474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * to deal in the Software without restriction, including without limitation
10474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * and/or sell copies of the Software, and to permit persons to whom the
12474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * Software is furnished to do so, subject to the following conditions:
13474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *
14474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * The above copyright notice and this permission notice shall be included
15474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * in all copies or substantial portions of the Software.
16167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org *
17474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
215c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org */
24474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
25474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
26474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/**
27474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * \file glapi_dispatch.c
28ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org *
29474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * This file generates all the gl* function entrypoints.  This code is not
30474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * used if optimized assembly stubs are available (e.g., using
31474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * glapi/glapi_x86.S on IA32 or glapi/glapi_sparc.S on SPARC).
325c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org *
335c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org * \note
345c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org * This file is also used to build the client-side libGL that loads DRI-based
35474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * device drivers.  At build-time it is symlinked to src/glx.
36474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *
37474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * \author Brian Paul <brian@precisioninsight.com>
38474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org */
39474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
40474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "glapi/glapi_priv.h"
41474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "glapi/glapitable.h"
42474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
43474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
44474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#if !(defined(USE_X86_ASM) || defined(USE_X86_64_ASM) || defined(USE_SPARC_ASM))
45474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
46d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org#if defined(WIN32)
47474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define KEYWORD1 GLAPI
48474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#else
49474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define KEYWORD1 PUBLIC
50474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#endif
51474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
52474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define KEYWORD2 GLAPIENTRY
53474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
54474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#if defined(USE_MGL_NAMESPACE)
55474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define NAME(func)  mgl##func
56474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#else
57474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define NAME(func)  gl##func
58474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#endif
59474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
60167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#if 0  /* Use this to log GL calls to stdout (for DEBUG only!) */
61167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
62167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org#define F stdout
63474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define DISPATCH(FUNC, ARGS, MESSAGE)		\
64474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org   fprintf MESSAGE;				\
65474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org   GET_DISPATCH()->FUNC ARGS
66474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
67474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) 	\
68474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org   fprintf MESSAGE;				\
69474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org   return GET_DISPATCH()->FUNC ARGS
70474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
71474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#else
72474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
73474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define DISPATCH(FUNC, ARGS, MESSAGE)		\
74474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org   GET_DISPATCH()->FUNC ARGS
75474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
76474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) 	\
77474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org   return GET_DISPATCH()->FUNC ARGS
78474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
79474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#endif /* logging */
80474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
81474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
82474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#ifndef GLAPIENTRY
83474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define GLAPIENTRY
84474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#endif
85474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
86474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#ifdef GLX_INDIRECT_RENDERING
87474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* those link to libglapi.a should provide the entry points */
88474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define _GLAPI_SKIP_PROTO_ENTRY_POINTS
89474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#endif
90474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "glapi/glapitemp.h"
91474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
92474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#endif /* USE_X86_ASM */
93474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org