1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/*
2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Mesa 3-D graphics library
3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Version:  7.1
4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *
5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *
7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a
8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * copy of this software and associated documentation files (the "Software"),
9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * to deal in the Software without restriction, including without limitation
10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * and/or sell copies of the Software, and to permit persons to whom the
12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Software is furnished to do so, subject to the following conditions:
13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *
14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The above copyright notice and this permission notice shall be included
15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * in all copies or substantial portions of the Software.
16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *
17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/**
27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * \file api_exec.c
28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Initialize dispatch table with the immidiate mode functions.
29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "mfeatures.h"
33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "accum.h"
34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "api_loopback.h"
35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "api_exec.h"
36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_ARB_vertex_program || FEATURE_ARB_fragment_program
37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "arbprogram.h"
38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "atifragshader.h"
40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "attrib.h"
41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "blend.h"
42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "bufferobj.h"
43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "arrayobj.h"
44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_draw_read_buffer
45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "buffers.h"
46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "clear.h"
48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "clip.h"
49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "colortab.h"
50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "condrender.h"
51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "context.h"
52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "convolve.h"
53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "depth.h"
54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "dlist.h"
55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "drawpix.h"
56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "rastpos.h"
57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "enable.h"
58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "errors.h"
59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "eval.h"
60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "get.h"
61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "feedback.h"
62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "fog.h"
63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_EXT_framebuffer_object
64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "fbobject.h"
65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "framebuffer.h"
67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "hint.h"
68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "histogram.h"
69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "imports.h"
70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "light.h"
71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "lines.h"
72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "matrix.h"
73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "multisample.h"
74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "pixel.h"
75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "pixelstore.h"
76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "points.h"
77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "polygon.h"
78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "queryobj.h"
79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "readpix.h"
80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_ARB_sampler_objects
81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "samplerobj.h"
82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "scissor.h"
84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "stencil.h"
85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "texenv.h"
86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "texgetimage.h"
87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "teximage.h"
88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "texgen.h"
89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "texobj.h"
90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "texparam.h"
91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "texstate.h"
92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "texstorage.h"
93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "texturebarrier.h"
94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "transformfeedback.h"
95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "mtypes.h"
96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "varray.h"
97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "viewport.h"
98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_NV_vertex_program || FEATURE_NV_fragment_program
99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "nvprogram.h"
100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_ARB_shader_objects
102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "shaderapi.h"
103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "uniforms.h"
104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "syncobj.h"
106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/dispatch.h"
107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_GL || FEATURE_ES2
110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/**
113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Initialize a dispatch table with pointers to Mesa's immediate-mode
114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * commands.
115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *
116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Pointers to glBegin()/glEnd() object commands and a few others
117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * are provided via the GLvertexformat interface.
118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *
119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * \param ctx  GL context to which \c exec belongs.
120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * \param exec dispatch table.
121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct _glapi_table *
123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_create_exec_table(struct gl_context *ctx)
124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   struct _glapi_table *exec;
126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   exec = _mesa_alloc_dispatch_table(_gloffset_COUNT);
128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (exec == NULL)
129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      return NULL;
130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   _mesa_loopback_init_api_table(ctx, exec);
133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* load the dispatch slots we understand */
136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_AlphaFunc(exec, _mesa_AlphaFunc);
138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_BlendFunc(exec, _mesa_BlendFunc);
141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_Clear(exec, _mesa_Clear);
142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_ClearColor(exec, _mesa_ClearColor);
143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_ClearStencil(exec, _mesa_ClearStencil);
144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_ColorMask(exec, _mesa_ColorMask);
145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_CullFace(exec, _mesa_CullFace);
146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_Disable(exec, _mesa_Disable);
147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_draw_read_buffer
148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL || ctx->API == API_OPENGL_CORE)
149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_DrawBuffer(exec, _mesa_DrawBuffer);
150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_ReadBuffer(exec, _mesa_ReadBuffer);
152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_Enable(exec, _mesa_Enable);
154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_Finish(exec, _mesa_Finish);
155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_Flush(exec, _mesa_Flush);
156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_FrontFace(exec, _mesa_FrontFace);
157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Frustum(exec, _mesa_Frustum);
159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GetError(exec, _mesa_GetError);
161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GetFloatv(exec, _mesa_GetFloatv);
162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GetString(exec, _mesa_GetString);
163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_LineStipple(exec, _mesa_LineStipple);
165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_LineWidth(exec, _mesa_LineWidth);
167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_LoadIdentity(exec, _mesa_LoadIdentity);
169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_LoadMatrixf(exec, _mesa_LoadMatrixf);
170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_LogicOp(exec, _mesa_LogicOp);
173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_MatrixMode(exec, _mesa_MatrixMode);
176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_MultMatrixf(exec, _mesa_MultMatrixf);
177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Ortho(exec, _mesa_Ortho);
178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_PixelStorei(exec, _mesa_PixelStorei);
180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_PopMatrix(exec, _mesa_PopMatrix);
182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_PushMatrix(exec, _mesa_PushMatrix);
183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Rotatef(exec, _mesa_Rotatef);
184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Scalef(exec, _mesa_Scalef);
185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_Scissor(exec, _mesa_Scissor);
187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ShadeModel(exec, _mesa_ShadeModel);
189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_StencilFunc(exec, _mesa_StencilFunc);
191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_StencilMask(exec, _mesa_StencilMask);
192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_StencilOp(exec, _mesa_StencilOp);
193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexEnvfv(exec, _mesa_TexEnvfv);
195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexEnvi(exec, _mesa_TexEnvi);
196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_TexImage2D(exec, _mesa_TexImage2D);
198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_TexParameteri(exec, _mesa_TexParameteri);
199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Translatef(exec, _mesa_Translatef);
201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_Viewport(exec, _mesa_Viewport);
203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_accum_dispatch(exec);
206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_dlist_dispatch(exec);
207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ClearDepth(exec, _mesa_ClearDepth);
211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ClearIndex(exec, _mesa_ClearIndex);
215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ClipPlane(exec, _mesa_ClipPlane);
216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ColorMaterial(exec, _mesa_ColorMaterial);
217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_DepthFunc(exec, _mesa_DepthFunc);
219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_DepthMask(exec, _mesa_DepthMask);
220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_DepthRange(exec, _mesa_DepthRange);
223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2 && ctx->API != API_OPENGL_CORE) {
226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_drawpix_dispatch(exec);
227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_feedback_dispatch(exec);
230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_FogCoordPointerEXT(exec, _mesa_FogCoordPointerEXT);
234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Fogf(exec, _mesa_Fogf);
235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Fogfv(exec, _mesa_Fogfv);
236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Fogi(exec, _mesa_Fogi);
237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Fogiv(exec, _mesa_Fogiv);
238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetClipPlane(exec, _mesa_GetClipPlane);
239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GetBooleanv(exec, _mesa_GetBooleanv);
241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetDoublev(exec, _mesa_GetDoublev);
243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
244f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GetIntegerv(exec, _mesa_GetIntegerv);
245f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
246f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetLightfv(exec, _mesa_GetLightfv);
247f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetLightiv(exec, _mesa_GetLightiv);
248f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetMaterialfv(exec, _mesa_GetMaterialfv);
249f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetMaterialiv(exec, _mesa_GetMaterialiv);
250f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetPolygonStipple(exec, _mesa_GetPolygonStipple);
251f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetTexEnvfv(exec, _mesa_GetTexEnvfv);
252f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetTexEnviv(exec, _mesa_GetTexEnviv);
253f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
254f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
255f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetTexLevelParameterfv(exec, _mesa_GetTexLevelParameterfv);
256f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetTexLevelParameteriv(exec, _mesa_GetTexLevelParameteriv);
257f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
258f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GetTexParameterfv(exec, _mesa_GetTexParameterfv);
259f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GetTexParameteriv(exec, _mesa_GetTexParameteriv);
260f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
261f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetTexImage(exec, _mesa_GetTexImage);
262f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
263f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_Hint(exec, _mesa_Hint);
264f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
265f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_IndexMask(exec, _mesa_IndexMask);
266f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
267f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_IsEnabled(exec, _mesa_IsEnabled);
268f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
269f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_LightModelf(exec, _mesa_LightModelf);
270f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_LightModelfv(exec, _mesa_LightModelfv);
271f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_LightModeli(exec, _mesa_LightModeli);
272f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_LightModeliv(exec, _mesa_LightModeliv);
273f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Lightf(exec, _mesa_Lightf);
274f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Lightfv(exec, _mesa_Lightfv);
275f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Lighti(exec, _mesa_Lighti);
276f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Lightiv(exec, _mesa_Lightiv);
277f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_LoadMatrixd(exec, _mesa_LoadMatrixd);
278f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
279f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
280f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
281f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_eval_dispatch(exec);
282f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_MultMatrixd(exec, _mesa_MultMatrixd);
283f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_pixel_dispatch(exec);
284f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
285f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
286f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
287f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_PixelStoref(exec, _mesa_PixelStoref);
288f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
289f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_PointSize(exec, _mesa_PointSize);
290f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
291f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_PolygonMode(exec, _mesa_PolygonMode);
292f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
293f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
294f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_PolygonOffset(exec, _mesa_PolygonOffset);
295f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
296f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_PolygonStipple(exec, _mesa_PolygonStipple);
297f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_attrib_dispatch(exec);
298f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_rastpos_dispatch(exec);
299f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
300f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
301f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_ReadPixels(exec, _mesa_ReadPixels);
302f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
303f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Rotated(exec, _mesa_Rotated);
304f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Scaled(exec, _mesa_Scaled);
305f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_SecondaryColorPointerEXT(exec, _mesa_SecondaryColorPointerEXT);
306f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexEnvf(exec, _mesa_TexEnvf);
307f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexEnviv(exec, _mesa_TexEnviv);
308f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
309f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
310f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
311f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_texgen_dispatch(exec);
312f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
313f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
314f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
315f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexImage1D(exec, _mesa_TexImage1D);
316f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
317f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_TexParameterf(exec, _mesa_TexParameterf);
318f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_TexParameterfv(exec, _mesa_TexParameterfv);
319f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_TexParameteriv(exec, _mesa_TexParameteriv);
320f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
321f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_Translated(exec, _mesa_Translated);
322f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
323f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
324f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 1.1 */
325f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_BindTexture(exec, _mesa_BindTexture);
326f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_DeleteTextures(exec, _mesa_DeleteTextures);
327f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GenTextures(exec, _mesa_GenTextures);
328f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
329f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
330f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_AreTexturesResident(exec, _mesa_AreTexturesResident);
331f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ColorPointer(exec, _mesa_ColorPointer);
332f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
333f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
334f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_CopyTexImage1D(exec, _mesa_CopyTexImage1D);
335f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_CopyTexSubImage1D(exec, _mesa_CopyTexSubImage1D);
336f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexSubImage1D(exec, _mesa_TexSubImage1D);
337f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
338f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
339f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_CopyTexImage2D(exec, _mesa_CopyTexImage2D);
340f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_CopyTexSubImage2D(exec, _mesa_CopyTexSubImage2D);
341f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_TexSubImage2D(exec, _mesa_TexSubImage2D);
342f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
343f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
344f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_DisableClientState(exec, _mesa_DisableClientState);
345f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_EdgeFlagPointer(exec, _mesa_EdgeFlagPointer);
346f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_EnableClientState(exec, _mesa_EnableClientState);
347f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetPointerv(exec, _mesa_GetPointerv);
348f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_IndexPointer(exec, _mesa_IndexPointer);
349f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_InterleavedArrays(exec, _mesa_InterleavedArrays);
350f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
351f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_IsTexture(exec, _mesa_IsTexture);
352f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
353f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_NormalPointer(exec, _mesa_NormalPointer);
354f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_PrioritizeTextures(exec, _mesa_PrioritizeTextures);
355f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexCoordPointer(exec, _mesa_TexCoordPointer);
356f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_VertexPointer(exec, _mesa_VertexPointer);
357f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
358f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
359f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
360f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 1.2 */
361f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
362f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_CopyTexSubImage3D(exec, _mesa_CopyTexSubImage3D);
363f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_TexImage3D(exec, _mesa_TexImage3D);
364f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_TexSubImage3D(exec, _mesa_TexSubImage3D);
365f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
366f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
367f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* OpenGL 1.2  GL_ARB_imaging */
368f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_BlendColor(exec, _mesa_BlendColor);
369f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_BlendEquation(exec, _mesa_BlendEquation);
370f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_BlendEquationSeparateEXT(exec, _mesa_BlendEquationSeparateEXT);
371f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
372f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
373f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_colortable_dispatch(exec);
374f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_convolve_dispatch(exec);
375f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_histogram_dispatch(exec);
376f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
377f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
378f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* OpenGL 2.0 */
379f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_StencilFuncSeparate(exec, _mesa_StencilFuncSeparate);
380f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_StencilMaskSeparate(exec, _mesa_StencilMaskSeparate);
381f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_StencilOpSeparate(exec, _mesa_StencilOpSeparate);
382f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
383f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_ARB_shader_objects
384f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   _mesa_init_shader_dispatch(ctx, exec);
385f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   _mesa_init_shader_uniform_dispatch(ctx, exec);
386f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
387f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
388f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 2. GL_EXT_blend_color */
389f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if 0
390f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/*    SET_BlendColorEXT(exec, _mesa_BlendColorEXT); */
391f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
392f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
393f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 3. GL_EXT_polygon_offset */
394f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
395f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
396f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_PolygonOffsetEXT(exec, _mesa_PolygonOffsetEXT);
397f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
398f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
399f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
400f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 6. GL_EXT_texture3d */
401f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if 0
402f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/*    SET_CopyTexSubImage3DEXT(exec, _mesa_CopyTexSubImage3D); */
403f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/*    SET_TexImage3DEXT(exec, _mesa_TexImage3DEXT); */
404f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/*    SET_TexSubImage3DEXT(exec, _mesa_TexSubImage3D); */
405f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
406f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
407f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 11. GL_EXT_histogram */
408f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if 0
409f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
410f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetHistogramEXT(exec, _mesa_GetHistogram);
411f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetHistogramParameterfvEXT(exec, _mesa_GetHistogramParameterfv);
412f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetHistogramParameterivEXT(exec, _mesa_GetHistogramParameteriv);
413f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetMinmaxEXT(exec, _mesa_GetMinmax);
414f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetMinmaxParameterfvEXT(exec, _mesa_GetMinmaxParameterfv);
415f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetMinmaxParameterivEXT(exec, _mesa_GetMinmaxParameteriv);
416f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
417f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
418f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
419f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 14. SGI_color_table */
420f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if 0
421f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
422f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ColorTableSGI(exec, _mesa_ColorTable);
423f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ColorSubTableSGI(exec, _mesa_ColorSubTable);
424f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetColorTableSGI(exec, _mesa_GetColorTable);
425f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetColorTableParameterfvSGI(exec, _mesa_GetColorTableParameterfv);
426f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetColorTableParameterivSGI(exec, _mesa_GetColorTableParameteriv);
427f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
428f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
429f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
430f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 30. GL_EXT_vertex_array */
431f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
432f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
433f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ColorPointerEXT(exec, _mesa_ColorPointerEXT);
434f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_EdgeFlagPointerEXT(exec, _mesa_EdgeFlagPointerEXT);
435f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_IndexPointerEXT(exec, _mesa_IndexPointerEXT);
436f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_NormalPointerEXT(exec, _mesa_NormalPointerEXT);
437f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexCoordPointerEXT(exec, _mesa_TexCoordPointerEXT);
438f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_VertexPointerEXT(exec, _mesa_VertexPointerEXT);
439f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
440f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
441f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
442f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 37. GL_EXT_blend_minmax */
443f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if 0
444f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_BlendEquationEXT(exec, _mesa_BlendEquationEXT);
445f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
446f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
447f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 54. GL_EXT_point_parameters */
448f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
449f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
450f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_PointParameterfEXT(exec, _mesa_PointParameterf);
451f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_PointParameterfvEXT(exec, _mesa_PointParameterfv);
452f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
453f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
454f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
455f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 95. GL_ARB_ES2_compatibility */
456f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_ClearDepthf(exec, _mesa_ClearDepthf);
457f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_DepthRangef(exec, _mesa_DepthRangef);
458f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
459f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 97. GL_EXT_compiled_vertex_array */
460f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
461f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
462f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_LockArraysEXT(exec, _mesa_LockArraysEXT);
463f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_UnlockArraysEXT(exec, _mesa_UnlockArraysEXT);
464f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
465f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
466f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
467f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 148. GL_EXT_multi_draw_arrays */
468f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
469f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_MultiDrawArraysEXT(exec, _mesa_MultiDrawArraysEXT);
470f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
471f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
472f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 173. GL_INGR_blend_func_separate */
473f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
474f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_BlendFuncSeparateEXT(exec, _mesa_BlendFuncSeparateEXT);
475f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
476f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
477f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 196. GL_MESA_resize_buffers */
478f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
479f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (_mesa_is_desktop_gl(ctx)) {
480f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ResizeBuffersMESA(exec, _mesa_ResizeBuffersMESA);
481f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
482f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
483f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
484f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 197. GL_MESA_window_pos */
485f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* part of _mesa_init_rastpos_dispatch(exec); */
486f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
487f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 200. GL_IBM_multimode_draw_arrays */
488f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
489f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
490f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_MultiModeDrawArraysIBM(exec, _mesa_MultiModeDrawArraysIBM);
491f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_MultiModeDrawElementsIBM(exec, _mesa_MultiModeDrawElementsIBM);
492f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
493f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
494f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
495f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 233. GL_NV_vertex_program */
496f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_NV_vertex_program
497f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
498f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_BindProgramNV(exec, _mesa_BindProgram);
499f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_DeleteProgramsNV(exec, _mesa_DeletePrograms);
500f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ExecuteProgramNV(exec, _mesa_ExecuteProgramNV);
501f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GenProgramsNV(exec, _mesa_GenPrograms);
502f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_AreProgramsResidentNV(exec, _mesa_AreProgramsResidentNV);
503f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_RequestResidentProgramsNV(exec, _mesa_RequestResidentProgramsNV);
504f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetProgramParameterfvNV(exec, _mesa_GetProgramParameterfvNV);
505f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetProgramParameterdvNV(exec, _mesa_GetProgramParameterdvNV);
506f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetProgramivNV(exec, _mesa_GetProgramivNV);
507f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetProgramStringNV(exec, _mesa_GetProgramStringNV);
508f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetTrackMatrixivNV(exec, _mesa_GetTrackMatrixivNV);
509f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetVertexAttribdvNV(exec, _mesa_GetVertexAttribdvNV);
510f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetVertexAttribfvNV(exec, _mesa_GetVertexAttribfvNV);
511f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetVertexAttribivNV(exec, _mesa_GetVertexAttribivNV);
512f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_IsProgramNV(exec, _mesa_IsProgramARB);
513f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_LoadProgramNV(exec, _mesa_LoadProgramNV);
514f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramEnvParameter4dARB(exec, _mesa_ProgramEnvParameter4dARB); /* alias to ProgramParameter4dNV */
515f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramEnvParameter4dvARB(exec, _mesa_ProgramEnvParameter4dvARB);  /* alias to ProgramParameter4dvNV */
516f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramEnvParameter4fARB(exec, _mesa_ProgramEnvParameter4fARB);  /* alias to ProgramParameter4fNV */
517f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramEnvParameter4fvARB(exec, _mesa_ProgramEnvParameter4fvARB);  /* alias to ProgramParameter4fvNV */
518f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramParameters4dvNV(exec, _mesa_ProgramParameters4dvNV);
519f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramParameters4fvNV(exec, _mesa_ProgramParameters4fvNV);
520f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TrackMatrixNV(exec, _mesa_TrackMatrixNV);
521f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_VertexAttribPointerNV(exec, _mesa_VertexAttribPointerNV);
522f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      /* glVertexAttrib*NV functions handled in api_loopback.c */
523f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
524f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
525f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GetVertexAttribPointervNV(exec, _mesa_GetVertexAttribPointervNV);
526f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
527f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 273. GL_APPLE_vertex_array_object */
528f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
529f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_BindVertexArrayAPPLE(exec, _mesa_BindVertexArrayAPPLE);
530f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GenVertexArraysAPPLE(exec, _mesa_GenVertexArraysAPPLE);
531f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
532f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* Reused by ARB_vertex_array_object / OES_vertex_array_object */
533f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_DeleteVertexArraysAPPLE(exec, _mesa_DeleteVertexArraysAPPLE);
534f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_IsVertexArrayAPPLE(exec, _mesa_IsVertexArrayAPPLE);
535f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
536f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 282. GL_NV_fragment_program */
537f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_NV_fragment_program
538f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
539f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramNamedParameter4fNV(exec, _mesa_ProgramNamedParameter4fNV);
540f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramNamedParameter4dNV(exec, _mesa_ProgramNamedParameter4dNV);
541f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramNamedParameter4fvNV(exec, _mesa_ProgramNamedParameter4fvNV);
542f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramNamedParameter4dvNV(exec, _mesa_ProgramNamedParameter4dvNV);
543f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetProgramNamedParameterfvNV(exec, _mesa_GetProgramNamedParameterfvNV);
544f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetProgramNamedParameterdvNV(exec, _mesa_GetProgramNamedParameterdvNV);
545f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramLocalParameter4dARB(exec, _mesa_ProgramLocalParameter4dARB);
546f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramLocalParameter4dvARB(exec, _mesa_ProgramLocalParameter4dvARB);
547f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramLocalParameter4fARB(exec, _mesa_ProgramLocalParameter4fARB);
548f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramLocalParameter4fvARB(exec, _mesa_ProgramLocalParameter4fvARB);
549f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetProgramLocalParameterdvARB(exec, _mesa_GetProgramLocalParameterdvARB);
550f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetProgramLocalParameterfvARB(exec, _mesa_GetProgramLocalParameterfvARB);
551f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
552f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
553f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
554f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 262. GL_NV_point_sprite */
555f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
556f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (_mesa_is_desktop_gl(ctx)) {
557f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_PointParameteriNV(exec, _mesa_PointParameteri);
558f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_PointParameterivNV(exec, _mesa_PointParameteriv);
559f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
560f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
561f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
562f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 268. GL_EXT_stencil_two_side */
563f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
564f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
565f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ActiveStencilFaceEXT(exec, _mesa_ActiveStencilFaceEXT);
566f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
567f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
568f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
569f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 285. GL_NV_primitive_restart */
570f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
571f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_PrimitiveRestartIndexNV(exec, _mesa_PrimitiveRestartIndex);
572f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
573f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
574f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ???. GL_EXT_depth_bounds_test */
575f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
576f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_DepthBoundsEXT(exec, _mesa_DepthBoundsEXT);
577f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
578f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
579f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 352. GL_EXT_transform_feedback */
580f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ARB 93. GL_ARB_transform_feedback2 */
581f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
582f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_transform_feedback_dispatch(exec);
583f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
584f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
585f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* 364. GL_EXT_provoking_vertex */
586f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
587f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProvokingVertexEXT(exec, _mesa_ProvokingVertexEXT);
588f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
589f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
590f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ARB 1. GL_ARB_multitexture */
591f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
592f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_ActiveTextureARB(exec, _mesa_ActiveTextureARB);
593f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) {
594f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ClientActiveTextureARB(exec, _mesa_ClientActiveTextureARB);
595f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
596f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
597f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
598f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ARB 3. GL_ARB_transpose_matrix */
599f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
600f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
601f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_LoadTransposeMatrixdARB(exec, _mesa_LoadTransposeMatrixdARB);
602f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_LoadTransposeMatrixfARB(exec, _mesa_LoadTransposeMatrixfARB);
603f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_MultTransposeMatrixdARB(exec, _mesa_MultTransposeMatrixdARB);
604f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_MultTransposeMatrixfARB(exec, _mesa_MultTransposeMatrixfARB);
605f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
606f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
607f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
608f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ARB 5. GL_ARB_multisample */
609f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
610f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_SampleCoverageARB(exec, _mesa_SampleCoverageARB);
611f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
612f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
613f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ARB 12. GL_ARB_texture_compression */
614f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if _HAVE_FULL_GL
615f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
616f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_CompressedTexImage1DARB(exec, _mesa_CompressedTexImage1DARB);
617f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_CompressedTexSubImage1DARB(exec, _mesa_CompressedTexSubImage1DARB);
618f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetCompressedTexImageARB(exec, _mesa_GetCompressedTexImageARB);
619f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
620f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
621f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_CompressedTexImage3DARB(exec, _mesa_CompressedTexImage3DARB);
622f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_CompressedTexImage2DARB(exec, _mesa_CompressedTexImage2DARB);
623f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_CompressedTexSubImage3DARB(exec, _mesa_CompressedTexSubImage3DARB);
624f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_CompressedTexSubImage2DARB(exec, _mesa_CompressedTexSubImage2DARB);
625f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
626f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ARB 104. GL_ARB_robustness */
627f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
628f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetnCompressedTexImageARB(exec, _mesa_GetnCompressedTexImageARB);
629f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
630f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
631f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
632f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ARB 14. GL_ARB_point_parameters */
633f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* reuse EXT_point_parameters functions */
634f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
635f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ARB 26. GL_ARB_vertex_program */
636f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ARB 27. GL_ARB_fragment_program */
637f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_ARB_vertex_program || FEATURE_ARB_fragment_program
638f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib1sARB aliases glVertexAttrib1sNV */
639f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib1fARB aliases glVertexAttrib1fNV */
640f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib1dARB aliases glVertexAttrib1dNV */
641f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib2sARB aliases glVertexAttrib2sNV */
642f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib2fARB aliases glVertexAttrib2fNV */
643f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib2dARB aliases glVertexAttrib2dNV */
644f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib3sARB aliases glVertexAttrib3sNV */
645f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib3fARB aliases glVertexAttrib3fNV */
646f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib3dARB aliases glVertexAttrib3dNV */
647f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4sARB aliases glVertexAttrib4sNV */
648f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4fARB aliases glVertexAttrib4fNV */
649f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4dARB aliases glVertexAttrib4dNV */
650f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4NubARB aliases glVertexAttrib4NubNV */
651f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib1svARB aliases glVertexAttrib1svNV */
652f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib1fvARB aliases glVertexAttrib1fvNV */
653f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib1dvARB aliases glVertexAttrib1dvNV */
654f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib2svARB aliases glVertexAttrib2svNV */
655f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib2fvARB aliases glVertexAttrib2fvNV */
656f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib2dvARB aliases glVertexAttrib2dvNV */
657f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib3svARB aliases glVertexAttrib3svNV */
658f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib3fvARB aliases glVertexAttrib3fvNV */
659f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib3dvARB aliases glVertexAttrib3dvNV */
660f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4svARB aliases glVertexAttrib4svNV */
661f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4fvARB aliases glVertexAttrib4fvNV */
662f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4dvARB aliases glVertexAttrib4dvNV */
663f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4NubvARB aliases glVertexAttrib4NubvNV */
664f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4bvARB handled in api_loopback.c */
665f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4ivARB handled in api_loopback.c */
666f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4ubvARB handled in api_loopback.c */
667f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4usvARB handled in api_loopback.c */
668f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4uivARB handled in api_loopback.c */
669f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4NbvARB handled in api_loopback.c */
670f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4NsvARB handled in api_loopback.c */
671f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4NivARB handled in api_loopback.c */
672f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4NusvARB handled in api_loopback.c */
673f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glVertexAttrib4NuivARB handled in api_loopback.c */
674f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_VertexAttribPointerARB(exec, _mesa_VertexAttribPointerARB);
675f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_EnableVertexAttribArrayARB(exec, _mesa_EnableVertexAttribArrayARB);
676f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_DisableVertexAttribArrayARB(exec, _mesa_DisableVertexAttribArrayARB);
677f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
678f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramStringARB(exec, _mesa_ProgramStringARB);
679f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      /* glBindProgramARB aliases glBindProgramNV */
680f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      /* glDeleteProgramsARB aliases glDeleteProgramsNV */
681f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      /* glGenProgramsARB aliases glGenProgramsNV */
682f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      /* glIsProgramARB aliases glIsProgramNV */
683f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetVertexAttribdvARB(exec, _mesa_GetVertexAttribdvARB);
684f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
685f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
686f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GetVertexAttribfvARB(exec, _mesa_GetVertexAttribfvARB);
687f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GetVertexAttribivARB(exec, _mesa_GetVertexAttribivARB);
688f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* glGetVertexAttribPointervARB aliases glGetVertexAttribPointervNV */
689f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
690f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramEnvParameter4dARB(exec, _mesa_ProgramEnvParameter4dARB);
691f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramEnvParameter4dvARB(exec, _mesa_ProgramEnvParameter4dvARB);
692f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramEnvParameter4fARB(exec, _mesa_ProgramEnvParameter4fARB);
693f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramEnvParameter4fvARB(exec, _mesa_ProgramEnvParameter4fvARB);
694f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramLocalParameter4dARB(exec, _mesa_ProgramLocalParameter4dARB);
695f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramLocalParameter4dvARB(exec, _mesa_ProgramLocalParameter4dvARB);
696f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramLocalParameter4fARB(exec, _mesa_ProgramLocalParameter4fARB);
697f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramLocalParameter4fvARB(exec, _mesa_ProgramLocalParameter4fvARB);
698f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetProgramEnvParameterdvARB(exec, _mesa_GetProgramEnvParameterdvARB);
699f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetProgramEnvParameterfvARB(exec, _mesa_GetProgramEnvParameterfvARB);
700f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetProgramivARB(exec, _mesa_GetProgramivARB);
701f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetProgramLocalParameterdvARB(exec, _mesa_GetProgramLocalParameterdvARB);
702f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetProgramLocalParameterfvARB(exec, _mesa_GetProgramLocalParameterfvARB);
703f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetProgramStringARB(exec, _mesa_GetProgramStringARB);
704f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
705f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
706f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
707f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ARB 28. GL_ARB_vertex_buffer_object */
708f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   _mesa_init_bufferobj_dispatch(ctx, exec);
709f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
710f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ARB 29. GL_ARB_occlusion_query */
711f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
712f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_queryobj_dispatch(exec);
713f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
714f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
715f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ARB 37. GL_ARB_draw_buffers */
716f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_draw_read_buffer
717f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_DrawBuffersARB(exec, _mesa_DrawBuffersARB);
718f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
719f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
720f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ARB 66. GL_ARB_sync */
721f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
722f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_sync_dispatch(exec);
723f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
724f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
725f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ARB 104. GL_ARB_debug_output */
726f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
727f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_errors_dispatch(exec);
728f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
729f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
730f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* ARB 105. GL_ARB_robustness */
731f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
732f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetGraphicsResetStatusARB(exec, _mesa_GetGraphicsResetStatusARB);
733f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetnPolygonStippleARB(exec, _mesa_GetnPolygonStippleARB);
734f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetnTexImageARB(exec, _mesa_GetnTexImageARB);
735f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ReadnPixelsARB(exec, _mesa_ReadnPixelsARB);
736f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
737f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
738f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  /* GL_ATI_fragment_shader */
739f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
740f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_ati_fragment_shader_dispatch(exec);
741f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
742f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
743f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  /* GL_ATI_envmap_bumpmap */
744f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
745f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetTexBumpParameterivATI(exec, _mesa_GetTexBumpParameterivATI);
746f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetTexBumpParameterfvATI(exec, _mesa_GetTexBumpParameterfvATI);
747f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexBumpParameterivATI(exec, _mesa_TexBumpParameterivATI);
748f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexBumpParameterfvATI(exec, _mesa_TexBumpParameterfvATI);
749f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
750f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
751f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_EXT_framebuffer_object
752f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_IsRenderbufferEXT(exec, _mesa_IsRenderbufferEXT);
753f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_BindRenderbufferEXT(exec, _mesa_BindRenderbufferEXT);
754f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_DeleteRenderbuffersEXT(exec, _mesa_DeleteRenderbuffersEXT);
755f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GenRenderbuffersEXT(exec, _mesa_GenRenderbuffersEXT);
756f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_RenderbufferStorageEXT(exec, _mesa_RenderbufferStorageEXT);
757f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GetRenderbufferParameterivEXT(exec, _mesa_GetRenderbufferParameterivEXT);
758f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_IsFramebufferEXT(exec, _mesa_IsFramebufferEXT);
759f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_BindFramebufferEXT(exec, _mesa_BindFramebufferEXT);
760f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_DeleteFramebuffersEXT(exec, _mesa_DeleteFramebuffersEXT);
761f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GenFramebuffersEXT(exec, _mesa_GenFramebuffersEXT);
762f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_CheckFramebufferStatusEXT(exec, _mesa_CheckFramebufferStatusEXT);
763f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
764f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_FramebufferTexture1DEXT(exec, _mesa_FramebufferTexture1DEXT);
765f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
766f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_FramebufferTexture2DEXT(exec, _mesa_FramebufferTexture2DEXT);
767f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_FramebufferTexture3DEXT(exec, _mesa_FramebufferTexture3DEXT);
768f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_FramebufferRenderbufferEXT(exec, _mesa_FramebufferRenderbufferEXT);
769f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GetFramebufferAttachmentParameterivEXT(exec, _mesa_GetFramebufferAttachmentParameterivEXT);
770f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GenerateMipmapEXT(exec, _mesa_GenerateMipmapEXT);
771f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
772f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
773f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_EXT_framebuffer_blit
774f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
775f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_BlitFramebufferEXT(exec, _mesa_BlitFramebufferEXT);
776f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
777f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
778f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
779f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* GL_EXT_gpu_program_parameters */
780f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_ARB_vertex_program || FEATURE_ARB_fragment_program
781f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
782f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramEnvParameters4fvEXT(exec, _mesa_ProgramEnvParameters4fvEXT);
783f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ProgramLocalParameters4fvEXT(exec, _mesa_ProgramLocalParameters4fvEXT);
784f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
785f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
786f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
787f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* GL_MESA_texture_array / GL_EXT_texture_array */
788f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_EXT_framebuffer_object
789f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
790f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_FramebufferTextureLayerEXT(exec, _mesa_FramebufferTextureLayerEXT);
791f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
792f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
793f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
794f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* GL_ATI_separate_stencil */
795f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API == API_OPENGL) {
796f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_StencilFuncSeparateATI(exec, _mesa_StencilFuncSeparateATI);
797f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
798f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
799f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_ARB_framebuffer_object
800f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* The ARB_fbo functions are the union of
801f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    * GL_EXT_fbo, GL_EXT_framebuffer_blit, GL_EXT_texture_array
802f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    */
803f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
804f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_RenderbufferStorageMultisample(exec, _mesa_RenderbufferStorageMultisample);
805f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
806f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
807f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
808f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_ARB_map_buffer_range
809f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
810f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_MapBufferRange(exec, _mesa_MapBufferRange);
811f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_FlushMappedBufferRange(exec, _mesa_FlushMappedBufferRange);
812f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
813f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
814f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
815f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* GL_ARB_copy_buffer */
816f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
817f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_CopyBufferSubData(exec, _mesa_CopyBufferSubData);
818f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
819f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
820f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* GL_ARB_vertex_array_object / GL_OES_vertex_array_object */
821f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_BindVertexArray(exec, _mesa_BindVertexArray);
822f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_GenVertexArrays(exec, _mesa_GenVertexArrays);
823f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
824f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* GL_EXT_draw_buffers2 */
825f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) {
826f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ColorMaskIndexedEXT(exec, _mesa_ColorMaskIndexed);
827f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetBooleanIndexedvEXT(exec, _mesa_GetBooleanIndexedv);
828f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetIntegerIndexedvEXT(exec, _mesa_GetIntegerIndexedv);
829f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_EnableIndexedEXT(exec, _mesa_EnableIndexed);
830f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_DisableIndexedEXT(exec, _mesa_DisableIndexed);
831f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_IsEnabledIndexedEXT(exec, _mesa_IsEnabledIndexed);
832f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
833f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
834f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* GL_NV_conditional_render */
835f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
836f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_BeginConditionalRenderNV(exec, _mesa_BeginConditionalRender);
837f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_EndConditionalRenderNV(exec, _mesa_EndConditionalRender);
838f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
839f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
840f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_OES_EGL_image
841f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_EGLImageTargetTexture2DOES(exec, _mesa_EGLImageTargetTexture2DOES);
842f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   SET_EGLImageTargetRenderbufferStorageOES(exec, _mesa_EGLImageTargetRenderbufferStorageOES);
843f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
844f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
845f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_APPLE_object_purgeable
846f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
847f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ObjectPurgeableAPPLE(exec, _mesa_ObjectPurgeableAPPLE);
848f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ObjectUnpurgeableAPPLE(exec, _mesa_ObjectUnpurgeableAPPLE);
849f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetObjectParameterivAPPLE(exec, _mesa_GetObjectParameterivAPPLE);
850f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
851f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
852f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
853f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_ARB_geometry_shader4
854f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
855f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_FramebufferTextureARB(exec, _mesa_FramebufferTextureARB);
856f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_FramebufferTextureFaceARB(exec, _mesa_FramebufferTextureFaceARB);
857f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
858f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
859f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
860f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
861f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ClampColorARB(exec, _mesa_ClampColorARB);
862f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
863f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
864f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* GL_EXT_texture_integer */
865f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) {
866f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ClearColorIiEXT(exec, _mesa_ClearColorIiEXT);
867f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ClearColorIuiEXT(exec, _mesa_ClearColorIuiEXT);
868f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
869f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
870f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetTexParameterIivEXT(exec, _mesa_GetTexParameterIiv);
871f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetTexParameterIuivEXT(exec, _mesa_GetTexParameterIuiv);
872f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexParameterIivEXT(exec, _mesa_TexParameterIiv);
873f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexParameterIuivEXT(exec, _mesa_TexParameterIuiv);
874f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
875f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
876f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* GL_EXT_gpu_shader4 / OpenGL 3.0 */
877f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
878f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetVertexAttribIivEXT(exec, _mesa_GetVertexAttribIiv);
879f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetVertexAttribIuivEXT(exec, _mesa_GetVertexAttribIuiv);
880f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_VertexAttribIPointerEXT(exec, _mesa_VertexAttribIPointer);
881f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
882f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
883f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* GL 3.0 (functions not covered by other extensions) */
884f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
885f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ClearBufferiv(exec, _mesa_ClearBufferiv);
886f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ClearBufferuiv(exec, _mesa_ClearBufferuiv);
887f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ClearBufferfv(exec, _mesa_ClearBufferfv);
888f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ClearBufferfi(exec, _mesa_ClearBufferfi);
889f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_GetStringi(exec, _mesa_GetStringi);
890f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_ClampColor(exec, _mesa_ClampColorARB);
891f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
892f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
893f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* GL_ARB_instanced_arrays */
894f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
895f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_VertexAttribDivisorARB(exec, _mesa_VertexAttribDivisor);
896f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
897f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
898f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* GL_ARB_draw_buffer_blend */
899f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
900f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_BlendFunciARB(exec, _mesa_BlendFunci);
901f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_BlendFuncSeparateiARB(exec, _mesa_BlendFuncSeparatei);
902f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_BlendEquationiARB(exec, _mesa_BlendEquationi);
903f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_BlendEquationSeparateiARB(exec, _mesa_BlendEquationSeparatei);
904f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
905f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
906f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* GL_NV_texture_barrier */
907f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
908f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TextureBarrierNV(exec, _mesa_TextureBarrierNV);
909f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
910f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
911f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* GL_ARB_texture_buffer_object */
912f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
913f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexBufferARB(exec, _mesa_TexBuffer);
914f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
915f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
916f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   /* GL_ARB_texture_storage */
917f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
918f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexStorage1D(exec, _mesa_TexStorage1D);
919f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TextureStorage1DEXT(exec, _mesa_TextureStorage1DEXT);
920f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
921f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) {
922f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexStorage2D(exec, _mesa_TexStorage2D);
923f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TexStorage3D(exec, _mesa_TexStorage3D);
924f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TextureStorage2DEXT(exec, _mesa_TextureStorage2DEXT);
925f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_TextureStorage3DEXT(exec, _mesa_TextureStorage3DEXT);
926f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
927f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
928f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_ARB_sampler_objects
929f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (ctx->API != API_OPENGLES2) {
930f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      _mesa_init_sampler_object_dispatch(exec);
931f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
932f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
933f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
934f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (_mesa_is_desktop_gl(ctx)) {
935f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_InvalidateTexSubImage(exec, _mesa_InvalidateTexSubImage);
936f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_InvalidateTexImage(exec, _mesa_InvalidateTexImage);
937f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
938f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
939f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) {
940f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_InvalidateSubFramebuffer(exec, _mesa_InvalidateSubFramebuffer);
941f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      SET_InvalidateFramebuffer(exec, _mesa_InvalidateFramebuffer);
942f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   }
943f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
944f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   return exec;
945f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
946f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
947f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif /* FEATURE_GL || FEATURE_ES2 */
948