|
|
@@ -1,933 +0,0 @@ |
|
|
|
/* |
|
|
|
* Mesa 3-D graphics library |
|
|
|
* Version: 7.1 |
|
|
|
* |
|
|
|
* Copyright (C) 1999-2008 Brian Paul All Rights Reserved. |
|
|
|
* |
|
|
|
* Permission is hereby granted, free of charge, to any person obtaining a |
|
|
|
* copy of this software and associated documentation files (the "Software"), |
|
|
|
* to deal in the Software without restriction, including without limitation |
|
|
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense, |
|
|
|
* and/or sell copies of the Software, and to permit persons to whom the |
|
|
|
* Software is furnished to do so, subject to the following conditions: |
|
|
|
* |
|
|
|
* The above copyright notice and this permission notice shall be included |
|
|
|
* in all copies or substantial portions of the Software. |
|
|
|
* |
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
|
|
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
|
|
|
* BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN |
|
|
|
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
|
|
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* \file api_exec.c |
|
|
|
* Initialize dispatch table with the immidiate mode functions. |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
#include "mfeatures.h" |
|
|
|
#include "accum.h" |
|
|
|
#include "api_loopback.h" |
|
|
|
#include "api_exec.h" |
|
|
|
#include "arbprogram.h" |
|
|
|
#include "atifragshader.h" |
|
|
|
#include "attrib.h" |
|
|
|
#include "blend.h" |
|
|
|
#include "bufferobj.h" |
|
|
|
#include "arrayobj.h" |
|
|
|
#include "buffers.h" |
|
|
|
#include "clear.h" |
|
|
|
#include "clip.h" |
|
|
|
#include "colortab.h" |
|
|
|
#include "condrender.h" |
|
|
|
#include "context.h" |
|
|
|
#include "convolve.h" |
|
|
|
#include "depth.h" |
|
|
|
#include "dlist.h" |
|
|
|
#include "drawpix.h" |
|
|
|
#include "drawtex.h" |
|
|
|
#include "rastpos.h" |
|
|
|
#include "enable.h" |
|
|
|
#include "errors.h" |
|
|
|
#include "es1_conversion.h" |
|
|
|
#include "eval.h" |
|
|
|
#include "get.h" |
|
|
|
#include "feedback.h" |
|
|
|
#include "fog.h" |
|
|
|
#include "fbobject.h" |
|
|
|
#include "framebuffer.h" |
|
|
|
#include "hint.h" |
|
|
|
#include "histogram.h" |
|
|
|
#include "imports.h" |
|
|
|
#include "light.h" |
|
|
|
#include "lines.h" |
|
|
|
#include "matrix.h" |
|
|
|
#include "multisample.h" |
|
|
|
#include "pixel.h" |
|
|
|
#include "pixelstore.h" |
|
|
|
#include "points.h" |
|
|
|
#include "polygon.h" |
|
|
|
#include "querymatrix.h" |
|
|
|
#include "queryobj.h" |
|
|
|
#include "readpix.h" |
|
|
|
#include "samplerobj.h" |
|
|
|
#include "scissor.h" |
|
|
|
#include "stencil.h" |
|
|
|
#include "texenv.h" |
|
|
|
#include "texgetimage.h" |
|
|
|
#include "teximage.h" |
|
|
|
#include "texgen.h" |
|
|
|
#include "texobj.h" |
|
|
|
#include "texparam.h" |
|
|
|
#include "texstate.h" |
|
|
|
#include "texstorage.h" |
|
|
|
#include "texturebarrier.h" |
|
|
|
#include "transformfeedback.h" |
|
|
|
#include "mtypes.h" |
|
|
|
#include "varray.h" |
|
|
|
#include "viewport.h" |
|
|
|
#include "shaderapi.h" |
|
|
|
#include "uniforms.h" |
|
|
|
#include "syncobj.h" |
|
|
|
#include "main/dispatch.h" |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* Initialize a dispatch table with pointers to Mesa's immediate-mode |
|
|
|
* commands. |
|
|
|
* |
|
|
|
* Pointers to glBegin()/glEnd() object commands and a few others |
|
|
|
* are provided via the GLvertexformat interface. |
|
|
|
* |
|
|
|
* \param ctx GL context to which \c exec belongs. |
|
|
|
* \param exec dispatch table. |
|
|
|
*/ |
|
|
|
struct _glapi_table * |
|
|
|
_mesa_create_exec_table(struct gl_context *ctx) |
|
|
|
{ |
|
|
|
struct _glapi_table *exec; |
|
|
|
|
|
|
|
exec = _mesa_alloc_dispatch_table(_gloffset_COUNT); |
|
|
|
if (exec == NULL) |
|
|
|
return NULL; |
|
|
|
|
|
|
|
_mesa_loopback_init_api_table(ctx, exec); |
|
|
|
|
|
|
|
/* load the dispatch slots we understand */ |
|
|
|
if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) { |
|
|
|
SET_AlphaFunc(exec, _mesa_AlphaFunc); |
|
|
|
} |
|
|
|
|
|
|
|
SET_BlendFunc(exec, _mesa_BlendFunc); |
|
|
|
SET_Clear(exec, _mesa_Clear); |
|
|
|
SET_ClearColor(exec, _mesa_ClearColor); |
|
|
|
SET_ClearStencil(exec, _mesa_ClearStencil); |
|
|
|
SET_ColorMask(exec, _mesa_ColorMask); |
|
|
|
SET_CullFace(exec, _mesa_CullFace); |
|
|
|
SET_Disable(exec, _mesa_Disable); |
|
|
|
if (ctx->API == API_OPENGL || ctx->API == API_OPENGL_CORE) |
|
|
|
SET_DrawBuffer(exec, _mesa_DrawBuffer); |
|
|
|
if (ctx->API != API_OPENGLES) { |
|
|
|
SET_ReadBuffer(exec, _mesa_ReadBuffer); |
|
|
|
} |
|
|
|
SET_Enable(exec, _mesa_Enable); |
|
|
|
SET_Finish(exec, _mesa_Finish); |
|
|
|
SET_Flush(exec, _mesa_Flush); |
|
|
|
SET_FrontFace(exec, _mesa_FrontFace); |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_Frustum(exec, _mesa_Frustum); |
|
|
|
} |
|
|
|
SET_GetError(exec, _mesa_GetError); |
|
|
|
SET_GetFloatv(exec, _mesa_GetFloatv); |
|
|
|
SET_GetString(exec, _mesa_GetString); |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_LineStipple(exec, _mesa_LineStipple); |
|
|
|
} |
|
|
|
SET_LineWidth(exec, _mesa_LineWidth); |
|
|
|
if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) { |
|
|
|
SET_LoadIdentity(exec, _mesa_LoadIdentity); |
|
|
|
SET_LoadMatrixf(exec, _mesa_LoadMatrixf); |
|
|
|
} |
|
|
|
if (ctx->API != API_OPENGLES2) { |
|
|
|
SET_LogicOp(exec, _mesa_LogicOp); |
|
|
|
} |
|
|
|
if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) { |
|
|
|
SET_MatrixMode(exec, _mesa_MatrixMode); |
|
|
|
SET_MultMatrixf(exec, _mesa_MultMatrixf); |
|
|
|
} |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_Ortho(exec, _mesa_Ortho); |
|
|
|
} |
|
|
|
SET_PixelStorei(exec, _mesa_PixelStorei); |
|
|
|
if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) { |
|
|
|
SET_PopMatrix(exec, _mesa_PopMatrix); |
|
|
|
SET_PushMatrix(exec, _mesa_PushMatrix); |
|
|
|
SET_Rotatef(exec, _mesa_Rotatef); |
|
|
|
SET_Scalef(exec, _mesa_Scalef); |
|
|
|
} |
|
|
|
SET_Scissor(exec, _mesa_Scissor); |
|
|
|
if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) { |
|
|
|
SET_ShadeModel(exec, _mesa_ShadeModel); |
|
|
|
} |
|
|
|
SET_StencilFunc(exec, _mesa_StencilFunc); |
|
|
|
SET_StencilMask(exec, _mesa_StencilMask); |
|
|
|
SET_StencilOp(exec, _mesa_StencilOp); |
|
|
|
if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) { |
|
|
|
SET_TexEnvfv(exec, _mesa_TexEnvfv); |
|
|
|
SET_TexEnvi(exec, _mesa_TexEnvi); |
|
|
|
} |
|
|
|
SET_TexImage2D(exec, _mesa_TexImage2D); |
|
|
|
SET_TexParameteri(exec, _mesa_TexParameteri); |
|
|
|
if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) { |
|
|
|
SET_Translatef(exec, _mesa_Translatef); |
|
|
|
} |
|
|
|
SET_Viewport(exec, _mesa_Viewport); |
|
|
|
|
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
_mesa_init_accum_dispatch(exec); |
|
|
|
_mesa_init_dlist_dispatch(exec); |
|
|
|
} |
|
|
|
|
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_ClearDepth(exec, _mesa_ClearDepth); |
|
|
|
} |
|
|
|
|
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_ClearIndex(exec, _mesa_ClearIndex); |
|
|
|
SET_ClipPlane(exec, _mesa_ClipPlane); |
|
|
|
SET_ColorMaterial(exec, _mesa_ColorMaterial); |
|
|
|
} |
|
|
|
SET_DepthFunc(exec, _mesa_DepthFunc); |
|
|
|
SET_DepthMask(exec, _mesa_DepthMask); |
|
|
|
|
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_DepthRange(exec, _mesa_DepthRange); |
|
|
|
} |
|
|
|
|
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
_mesa_init_drawpix_dispatch(exec); |
|
|
|
} |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
_mesa_init_feedback_dispatch(exec); |
|
|
|
} |
|
|
|
|
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_FogCoordPointerEXT(exec, _mesa_FogCoordPointerEXT); |
|
|
|
SET_Fogi(exec, _mesa_Fogi); |
|
|
|
SET_Fogiv(exec, _mesa_Fogiv); |
|
|
|
SET_GetClipPlane(exec, _mesa_GetClipPlane); |
|
|
|
} |
|
|
|
if (ctx->API == API_OPENGL || ctx->API == API_OPENGLES) { |
|
|
|
SET_Fogf(exec, _mesa_Fogf); |
|
|
|
SET_Fogfv(exec, _mesa_Fogfv); |
|
|
|
} |
|
|
|
SET_GetBooleanv(exec, _mesa_GetBooleanv); |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_GetDoublev(exec, _mesa_GetDoublev); |
|
|
|
} |
|
|
|
SET_GetIntegerv(exec, _mesa_GetIntegerv); |
|
|
|
if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) { |
|
|
|
SET_GetLightfv(exec, _mesa_GetLightfv); |
|
|
|
SET_GetMaterialfv(exec, _mesa_GetMaterialfv); |
|
|
|
SET_GetTexEnvfv(exec, _mesa_GetTexEnvfv); |
|
|
|
SET_GetTexEnviv(exec, _mesa_GetTexEnviv); |
|
|
|
} |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_GetLightiv(exec, _mesa_GetLightiv); |
|
|
|
SET_GetMaterialiv(exec, _mesa_GetMaterialiv); |
|
|
|
SET_GetPolygonStipple(exec, _mesa_GetPolygonStipple); |
|
|
|
} |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_GetTexLevelParameterfv(exec, _mesa_GetTexLevelParameterfv); |
|
|
|
SET_GetTexLevelParameteriv(exec, _mesa_GetTexLevelParameteriv); |
|
|
|
} |
|
|
|
SET_GetTexParameterfv(exec, _mesa_GetTexParameterfv); |
|
|
|
SET_GetTexParameteriv(exec, _mesa_GetTexParameteriv); |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_GetTexImage(exec, _mesa_GetTexImage); |
|
|
|
} |
|
|
|
SET_Hint(exec, _mesa_Hint); |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_IndexMask(exec, _mesa_IndexMask); |
|
|
|
} |
|
|
|
SET_IsEnabled(exec, _mesa_IsEnabled); |
|
|
|
if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) { |
|
|
|
SET_LightModelf(exec, _mesa_LightModelf); |
|
|
|
SET_LightModelfv(exec, _mesa_LightModelfv); |
|
|
|
SET_Lightf(exec, _mesa_Lightf); |
|
|
|
SET_Lightfv(exec, _mesa_Lightfv); |
|
|
|
} |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_LightModeli(exec, _mesa_LightModeli); |
|
|
|
SET_LightModeliv(exec, _mesa_LightModeliv); |
|
|
|
SET_Lighti(exec, _mesa_Lighti); |
|
|
|
SET_Lightiv(exec, _mesa_Lightiv); |
|
|
|
SET_LoadMatrixd(exec, _mesa_LoadMatrixd); |
|
|
|
} |
|
|
|
|
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
_mesa_init_eval_dispatch(exec); |
|
|
|
SET_MultMatrixd(exec, _mesa_MultMatrixd); |
|
|
|
_mesa_init_pixel_dispatch(exec); |
|
|
|
} |
|
|
|
|
|
|
|
if (ctx->API != API_OPENGLES2) { |
|
|
|
SET_PointSize(exec, _mesa_PointSize); |
|
|
|
} |
|
|
|
|
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_PixelStoref(exec, _mesa_PixelStoref); |
|
|
|
SET_PolygonMode(exec, _mesa_PolygonMode); |
|
|
|
} |
|
|
|
|
|
|
|
SET_PolygonOffset(exec, _mesa_PolygonOffset); |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_PolygonStipple(exec, _mesa_PolygonStipple); |
|
|
|
_mesa_init_attrib_dispatch(exec); |
|
|
|
_mesa_init_rastpos_dispatch(exec); |
|
|
|
} |
|
|
|
|
|
|
|
SET_ReadPixels(exec, _mesa_ReadPixels); |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_Rotated(exec, _mesa_Rotated); |
|
|
|
SET_Scaled(exec, _mesa_Scaled); |
|
|
|
SET_SecondaryColorPointerEXT(exec, _mesa_SecondaryColorPointerEXT); |
|
|
|
} |
|
|
|
if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) { |
|
|
|
SET_TexEnvf(exec, _mesa_TexEnvf); |
|
|
|
SET_TexEnviv(exec, _mesa_TexEnviv); |
|
|
|
} |
|
|
|
|
|
|
|
if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) { |
|
|
|
_mesa_init_texgen_dispatch(ctx, exec); |
|
|
|
} |
|
|
|
|
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_TexImage1D(exec, _mesa_TexImage1D); |
|
|
|
} |
|
|
|
SET_TexParameterf(exec, _mesa_TexParameterf); |
|
|
|
SET_TexParameterfv(exec, _mesa_TexParameterfv); |
|
|
|
SET_TexParameteriv(exec, _mesa_TexParameteriv); |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_Translated(exec, _mesa_Translated); |
|
|
|
} |
|
|
|
|
|
|
|
/* 1.1 */ |
|
|
|
SET_BindTexture(exec, _mesa_BindTexture); |
|
|
|
SET_DeleteTextures(exec, _mesa_DeleteTextures); |
|
|
|
SET_GenTextures(exec, _mesa_GenTextures); |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_AreTexturesResident(exec, _mesa_AreTexturesResident); |
|
|
|
} |
|
|
|
if (ctx->API == API_OPENGL || ctx->API == API_OPENGLES) { |
|
|
|
SET_ColorPointer(exec, _mesa_ColorPointer); |
|
|
|
} |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_CopyTexImage1D(exec, _mesa_CopyTexImage1D); |
|
|
|
SET_CopyTexSubImage1D(exec, _mesa_CopyTexSubImage1D); |
|
|
|
SET_TexSubImage1D(exec, _mesa_TexSubImage1D); |
|
|
|
} |
|
|
|
|
|
|
|
SET_CopyTexImage2D(exec, _mesa_CopyTexImage2D); |
|
|
|
SET_CopyTexSubImage2D(exec, _mesa_CopyTexSubImage2D); |
|
|
|
SET_TexSubImage2D(exec, _mesa_TexSubImage2D); |
|
|
|
|
|
|
|
if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) { |
|
|
|
SET_DisableClientState(exec, _mesa_DisableClientState); |
|
|
|
SET_EnableClientState(exec, _mesa_EnableClientState); |
|
|
|
} |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_EdgeFlagPointer(exec, _mesa_EdgeFlagPointer); |
|
|
|
SET_IndexPointer(exec, _mesa_IndexPointer); |
|
|
|
SET_InterleavedArrays(exec, _mesa_InterleavedArrays); |
|
|
|
} |
|
|
|
if (ctx->API != API_OPENGLES2) { |
|
|
|
/* Note glGetPointerv is deprecated in GL CORE 3.1 through 4.2, but |
|
|
|
* was re-added in GL CORE 4.3. We will just keep the function |
|
|
|
* around in all GL CORE contexts. |
|
|
|
*/ |
|
|
|
SET_GetPointerv(exec, _mesa_GetPointerv); |
|
|
|
} |
|
|
|
SET_IsTexture(exec, _mesa_IsTexture); |
|
|
|
if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) { |
|
|
|
SET_NormalPointer(exec, _mesa_NormalPointer); |
|
|
|
SET_TexCoordPointer(exec, _mesa_TexCoordPointer); |
|
|
|
SET_VertexPointer(exec, _mesa_VertexPointer); |
|
|
|
} |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_PrioritizeTextures(exec, _mesa_PrioritizeTextures); |
|
|
|
} |
|
|
|
|
|
|
|
/* 1.2 */ |
|
|
|
if (ctx->API != API_OPENGLES) { |
|
|
|
SET_CopyTexSubImage3D(exec, _mesa_CopyTexSubImage3D); |
|
|
|
SET_TexImage3D(exec, _mesa_TexImage3D); |
|
|
|
SET_TexSubImage3D(exec, _mesa_TexSubImage3D); |
|
|
|
} |
|
|
|
|
|
|
|
/* OpenGL 1.2 GL_ARB_imaging */ |
|
|
|
if (ctx->API != API_OPENGLES) { |
|
|
|
SET_BlendColor(exec, _mesa_BlendColor); |
|
|
|
} |
|
|
|
SET_BlendEquation(exec, _mesa_BlendEquation); |
|
|
|
SET_BlendEquationSeparateEXT(exec, _mesa_BlendEquationSeparateEXT); |
|
|
|
|
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
_mesa_init_colortable_dispatch(exec); |
|
|
|
_mesa_init_convolve_dispatch(exec); |
|
|
|
_mesa_init_histogram_dispatch(exec); |
|
|
|
} |
|
|
|
|
|
|
|
/* OpenGL 2.0 */ |
|
|
|
if (ctx->API != API_OPENGLES) { |
|
|
|
SET_StencilFuncSeparate(exec, _mesa_StencilFuncSeparate); |
|
|
|
SET_StencilMaskSeparate(exec, _mesa_StencilMaskSeparate); |
|
|
|
SET_StencilOpSeparate(exec, _mesa_StencilOpSeparate); |
|
|
|
} |
|
|
|
|
|
|
|
_mesa_init_shader_dispatch(ctx, exec); |
|
|
|
_mesa_init_shader_uniform_dispatch(ctx, exec); |
|
|
|
|
|
|
|
/* 2. GL_EXT_blend_color */ |
|
|
|
#if 0 |
|
|
|
/* SET_BlendColorEXT(exec, _mesa_BlendColorEXT); */ |
|
|
|
#endif |
|
|
|
|
|
|
|
/* 3. GL_EXT_polygon_offset */ |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_PolygonOffsetEXT(exec, _mesa_PolygonOffsetEXT); |
|
|
|
} |
|
|
|
|
|
|
|
/* 6. GL_EXT_texture3d */ |
|
|
|
#if 0 |
|
|
|
/* SET_CopyTexSubImage3DEXT(exec, _mesa_CopyTexSubImage3D); */ |
|
|
|
/* SET_TexImage3DEXT(exec, _mesa_TexImage3DEXT); */ |
|
|
|
/* SET_TexSubImage3DEXT(exec, _mesa_TexSubImage3D); */ |
|
|
|
#endif |
|
|
|
|
|
|
|
/* 11. GL_EXT_histogram */ |
|
|
|
#if 0 |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_GetHistogramEXT(exec, _mesa_GetHistogram); |
|
|
|
SET_GetHistogramParameterfvEXT(exec, _mesa_GetHistogramParameterfv); |
|
|
|
SET_GetHistogramParameterivEXT(exec, _mesa_GetHistogramParameteriv); |
|
|
|
SET_GetMinmaxEXT(exec, _mesa_GetMinmax); |
|
|
|
SET_GetMinmaxParameterfvEXT(exec, _mesa_GetMinmaxParameterfv); |
|
|
|
SET_GetMinmaxParameterivEXT(exec, _mesa_GetMinmaxParameteriv); |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
/* 14. SGI_color_table */ |
|
|
|
#if 0 |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_ColorTableSGI(exec, _mesa_ColorTable); |
|
|
|
SET_ColorSubTableSGI(exec, _mesa_ColorSubTable); |
|
|
|
SET_GetColorTableSGI(exec, _mesa_GetColorTable); |
|
|
|
SET_GetColorTableParameterfvSGI(exec, _mesa_GetColorTableParameterfv); |
|
|
|
SET_GetColorTableParameterivSGI(exec, _mesa_GetColorTableParameteriv); |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
/* 30. GL_EXT_vertex_array */ |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_ColorPointerEXT(exec, _mesa_ColorPointerEXT); |
|
|
|
SET_EdgeFlagPointerEXT(exec, _mesa_EdgeFlagPointerEXT); |
|
|
|
SET_IndexPointerEXT(exec, _mesa_IndexPointerEXT); |
|
|
|
SET_NormalPointerEXT(exec, _mesa_NormalPointerEXT); |
|
|
|
SET_TexCoordPointerEXT(exec, _mesa_TexCoordPointerEXT); |
|
|
|
SET_VertexPointerEXT(exec, _mesa_VertexPointerEXT); |
|
|
|
} |
|
|
|
|
|
|
|
/* 37. GL_EXT_blend_minmax */ |
|
|
|
#if 0 |
|
|
|
SET_BlendEquationEXT(exec, _mesa_BlendEquationEXT); |
|
|
|
#endif |
|
|
|
|
|
|
|
/* 54. GL_EXT_point_parameters */ |
|
|
|
if (ctx->API != API_OPENGLES2) { |
|
|
|
SET_PointParameterfEXT(exec, _mesa_PointParameterf); |
|
|
|
SET_PointParameterfvEXT(exec, _mesa_PointParameterfv); |
|
|
|
} |
|
|
|
|
|
|
|
/* 95. GL_ARB_ES2_compatibility */ |
|
|
|
SET_ClearDepthf(exec, _mesa_ClearDepthf); |
|
|
|
SET_DepthRangef(exec, _mesa_DepthRangef); |
|
|
|
|
|
|
|
/* 97. GL_EXT_compiled_vertex_array */ |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_LockArraysEXT(exec, _mesa_LockArraysEXT); |
|
|
|
SET_UnlockArraysEXT(exec, _mesa_UnlockArraysEXT); |
|
|
|
} |
|
|
|
|
|
|
|
/* 148. GL_EXT_multi_draw_arrays */ |
|
|
|
SET_MultiDrawArraysEXT(exec, _mesa_MultiDrawArraysEXT); |
|
|
|
|
|
|
|
/* 173. GL_INGR_blend_func_separate */ |
|
|
|
SET_BlendFuncSeparateEXT(exec, _mesa_BlendFuncSeparateEXT); |
|
|
|
|
|
|
|
/* 196. GL_MESA_resize_buffers */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_ResizeBuffersMESA(exec, _mesa_ResizeBuffersMESA); |
|
|
|
} |
|
|
|
|
|
|
|
/* 197. GL_MESA_window_pos */ |
|
|
|
/* part of _mesa_init_rastpos_dispatch(exec); */ |
|
|
|
|
|
|
|
/* 200. GL_IBM_multimode_draw_arrays */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_MultiModeDrawArraysIBM(exec, _mesa_MultiModeDrawArraysIBM); |
|
|
|
SET_MultiModeDrawElementsIBM(exec, _mesa_MultiModeDrawElementsIBM); |
|
|
|
} |
|
|
|
|
|
|
|
/* 233. GL_NV_vertex_program */ |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_BindProgramNV(exec, _mesa_BindProgram); |
|
|
|
SET_DeleteProgramsNV(exec, _mesa_DeletePrograms); |
|
|
|
SET_GenProgramsNV(exec, _mesa_GenPrograms); |
|
|
|
SET_IsProgramNV(exec, _mesa_IsProgramARB); |
|
|
|
/* glVertexAttrib*NV functions handled in api_loopback.c */ |
|
|
|
} |
|
|
|
|
|
|
|
/* 273. GL_APPLE_vertex_array_object */ |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_BindVertexArrayAPPLE(exec, _mesa_BindVertexArrayAPPLE); |
|
|
|
SET_GenVertexArraysAPPLE(exec, _mesa_GenVertexArraysAPPLE); |
|
|
|
} |
|
|
|
/* Reused by ARB_vertex_array_object / OES_vertex_array_object */ |
|
|
|
if (ctx->API != API_OPENGLES) { |
|
|
|
SET_DeleteVertexArraysAPPLE(exec, _mesa_DeleteVertexArraysAPPLE); |
|
|
|
SET_IsVertexArrayAPPLE(exec, _mesa_IsVertexArrayAPPLE); |
|
|
|
} |
|
|
|
|
|
|
|
/* 262. GL_NV_point_sprite */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_PointParameteriNV(exec, _mesa_PointParameteri); |
|
|
|
SET_PointParameterivNV(exec, _mesa_PointParameteriv); |
|
|
|
} |
|
|
|
|
|
|
|
/* 268. GL_EXT_stencil_two_side */ |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_ActiveStencilFaceEXT(exec, _mesa_ActiveStencilFaceEXT); |
|
|
|
} |
|
|
|
|
|
|
|
/* 285. GL_NV_primitive_restart */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_PrimitiveRestartIndexNV(exec, _mesa_PrimitiveRestartIndex); |
|
|
|
} |
|
|
|
|
|
|
|
/* ???. GL_EXT_depth_bounds_test */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_DepthBoundsEXT(exec, _mesa_DepthBoundsEXT); |
|
|
|
} |
|
|
|
|
|
|
|
/* 352. GL_EXT_transform_feedback */ |
|
|
|
/* ARB 93. GL_ARB_transform_feedback2 */ |
|
|
|
if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { |
|
|
|
_mesa_init_transform_feedback_dispatch(ctx, exec); |
|
|
|
} |
|
|
|
|
|
|
|
/* 364. GL_EXT_provoking_vertex */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_ProvokingVertexEXT(exec, _mesa_ProvokingVertexEXT); |
|
|
|
} |
|
|
|
|
|
|
|
/* ARB 1. GL_ARB_multitexture */ |
|
|
|
SET_ActiveTextureARB(exec, _mesa_ActiveTextureARB); |
|
|
|
if (ctx->API != API_OPENGL_CORE && ctx->API != API_OPENGLES2) { |
|
|
|
SET_ClientActiveTextureARB(exec, _mesa_ClientActiveTextureARB); |
|
|
|
} |
|
|
|
|
|
|
|
/* ARB 3. GL_ARB_transpose_matrix */ |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_LoadTransposeMatrixdARB(exec, _mesa_LoadTransposeMatrixdARB); |
|
|
|
SET_LoadTransposeMatrixfARB(exec, _mesa_LoadTransposeMatrixfARB); |
|
|
|
SET_MultTransposeMatrixdARB(exec, _mesa_MultTransposeMatrixdARB); |
|
|
|
SET_MultTransposeMatrixfARB(exec, _mesa_MultTransposeMatrixfARB); |
|
|
|
} |
|
|
|
|
|
|
|
/* ARB 5. GL_ARB_multisample */ |
|
|
|
SET_SampleCoverageARB(exec, _mesa_SampleCoverageARB); |
|
|
|
|
|
|
|
/* ARB 12. GL_ARB_texture_compression */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_CompressedTexImage1DARB(exec, _mesa_CompressedTexImage1DARB); |
|
|
|
SET_CompressedTexSubImage1DARB(exec, _mesa_CompressedTexSubImage1DARB); |
|
|
|
SET_GetCompressedTexImageARB(exec, _mesa_GetCompressedTexImageARB); |
|
|
|
} |
|
|
|
|
|
|
|
if (ctx->API != API_OPENGLES) { |
|
|
|
SET_CompressedTexImage3DARB(exec, _mesa_CompressedTexImage3DARB); |
|
|
|
} |
|
|
|
SET_CompressedTexImage2DARB(exec, _mesa_CompressedTexImage2DARB); |
|
|
|
if (ctx->API != API_OPENGLES) { |
|
|
|
SET_CompressedTexSubImage3DARB(exec, _mesa_CompressedTexSubImage3DARB); |
|
|
|
} |
|
|
|
SET_CompressedTexSubImage2DARB(exec, _mesa_CompressedTexSubImage2DARB); |
|
|
|
|
|
|
|
/* ARB 104. GL_ARB_robustness */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_GetnCompressedTexImageARB(exec, _mesa_GetnCompressedTexImageARB); |
|
|
|
} |
|
|
|
|
|
|
|
/* ARB 14. GL_ARB_point_parameters */ |
|
|
|
/* reuse EXT_point_parameters functions */ |
|
|
|
|
|
|
|
/* ARB 26. GL_ARB_vertex_program */ |
|
|
|
/* ARB 27. GL_ARB_fragment_program */ |
|
|
|
/* glVertexAttrib1sARB aliases glVertexAttrib1sNV */ |
|
|
|
/* glVertexAttrib1fARB aliases glVertexAttrib1fNV */ |
|
|
|
/* glVertexAttrib1dARB aliases glVertexAttrib1dNV */ |
|
|
|
/* glVertexAttrib2sARB aliases glVertexAttrib2sNV */ |
|
|
|
/* glVertexAttrib2fARB aliases glVertexAttrib2fNV */ |
|
|
|
/* glVertexAttrib2dARB aliases glVertexAttrib2dNV */ |
|
|
|
/* glVertexAttrib3sARB aliases glVertexAttrib3sNV */ |
|
|
|
/* glVertexAttrib3fARB aliases glVertexAttrib3fNV */ |
|
|
|
/* glVertexAttrib3dARB aliases glVertexAttrib3dNV */ |
|
|
|
/* glVertexAttrib4sARB aliases glVertexAttrib4sNV */ |
|
|
|
/* glVertexAttrib4fARB aliases glVertexAttrib4fNV */ |
|
|
|
/* glVertexAttrib4dARB aliases glVertexAttrib4dNV */ |
|
|
|
/* glVertexAttrib4NubARB aliases glVertexAttrib4NubNV */ |
|
|
|
/* glVertexAttrib1svARB aliases glVertexAttrib1svNV */ |
|
|
|
/* glVertexAttrib1fvARB aliases glVertexAttrib1fvNV */ |
|
|
|
/* glVertexAttrib1dvARB aliases glVertexAttrib1dvNV */ |
|
|
|
/* glVertexAttrib2svARB aliases glVertexAttrib2svNV */ |
|
|
|
/* glVertexAttrib2fvARB aliases glVertexAttrib2fvNV */ |
|
|
|
/* glVertexAttrib2dvARB aliases glVertexAttrib2dvNV */ |
|
|
|
/* glVertexAttrib3svARB aliases glVertexAttrib3svNV */ |
|
|
|
/* glVertexAttrib3fvARB aliases glVertexAttrib3fvNV */ |
|
|
|
/* glVertexAttrib3dvARB aliases glVertexAttrib3dvNV */ |
|
|
|
/* glVertexAttrib4svARB aliases glVertexAttrib4svNV */ |
|
|
|
/* glVertexAttrib4fvARB aliases glVertexAttrib4fvNV */ |
|
|
|
/* glVertexAttrib4dvARB aliases glVertexAttrib4dvNV */ |
|
|
|
/* glVertexAttrib4NubvARB aliases glVertexAttrib4NubvNV */ |
|
|
|
/* glVertexAttrib4bvARB handled in api_loopback.c */ |
|
|
|
/* glVertexAttrib4ivARB handled in api_loopback.c */ |
|
|
|
/* glVertexAttrib4ubvARB handled in api_loopback.c */ |
|
|
|
/* glVertexAttrib4usvARB handled in api_loopback.c */ |
|
|
|
/* glVertexAttrib4uivARB handled in api_loopback.c */ |
|
|
|
/* glVertexAttrib4NbvARB handled in api_loopback.c */ |
|
|
|
/* glVertexAttrib4NsvARB handled in api_loopback.c */ |
|
|
|
/* glVertexAttrib4NivARB handled in api_loopback.c */ |
|
|
|
/* glVertexAttrib4NusvARB handled in api_loopback.c */ |
|
|
|
/* glVertexAttrib4NuivARB handled in api_loopback.c */ |
|
|
|
if (ctx->API != API_OPENGLES) { |
|
|
|
SET_VertexAttribPointerARB(exec, _mesa_VertexAttribPointerARB); |
|
|
|
SET_EnableVertexAttribArrayARB(exec, _mesa_EnableVertexAttribArrayARB); |
|
|
|
SET_DisableVertexAttribArrayARB(exec, _mesa_DisableVertexAttribArrayARB); |
|
|
|
} |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
/* glBindProgramARB aliases glBindProgramNV */ |
|
|
|
/* glDeleteProgramsARB aliases glDeleteProgramsNV */ |
|
|
|
/* glGenProgramsARB aliases glGenProgramsNV */ |
|
|
|
/* glIsProgramARB aliases glIsProgramNV */ |
|
|
|
SET_GetVertexAttribdvARB(exec, _mesa_GetVertexAttribdvARB); |
|
|
|
} |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_ProgramStringARB(exec, _mesa_ProgramStringARB); |
|
|
|
} |
|
|
|
|
|
|
|
if (ctx->API != API_OPENGLES) { |
|
|
|
SET_GetVertexAttribfvARB(exec, _mesa_GetVertexAttribfvARB); |
|
|
|
SET_GetVertexAttribivARB(exec, _mesa_GetVertexAttribivARB); |
|
|
|
SET_GetVertexAttribPointervNV(exec, _mesa_GetVertexAttribPointervARB); |
|
|
|
} |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_ProgramEnvParameter4dARB(exec, _mesa_ProgramEnvParameter4dARB); |
|
|
|
SET_ProgramEnvParameter4dvARB(exec, _mesa_ProgramEnvParameter4dvARB); |
|
|
|
SET_ProgramEnvParameter4fARB(exec, _mesa_ProgramEnvParameter4fARB); |
|
|
|
SET_ProgramEnvParameter4fvARB(exec, _mesa_ProgramEnvParameter4fvARB); |
|
|
|
SET_ProgramLocalParameter4dARB(exec, _mesa_ProgramLocalParameter4dARB); |
|
|
|
SET_ProgramLocalParameter4dvARB(exec, _mesa_ProgramLocalParameter4dvARB); |
|
|
|
SET_ProgramLocalParameter4fARB(exec, _mesa_ProgramLocalParameter4fARB); |
|
|
|
SET_ProgramLocalParameter4fvARB(exec, _mesa_ProgramLocalParameter4fvARB); |
|
|
|
SET_GetProgramEnvParameterdvARB(exec, _mesa_GetProgramEnvParameterdvARB); |
|
|
|
SET_GetProgramEnvParameterfvARB(exec, _mesa_GetProgramEnvParameterfvARB); |
|
|
|
SET_GetProgramivARB(exec, _mesa_GetProgramivARB); |
|
|
|
SET_GetProgramLocalParameterdvARB(exec, _mesa_GetProgramLocalParameterdvARB); |
|
|
|
SET_GetProgramLocalParameterfvARB(exec, _mesa_GetProgramLocalParameterfvARB); |
|
|
|
SET_GetProgramStringARB(exec, _mesa_GetProgramStringARB); |
|
|
|
} |
|
|
|
|
|
|
|
/* ARB 28. GL_ARB_vertex_buffer_object */ |
|
|
|
_mesa_init_bufferobj_dispatch(ctx, exec); |
|
|
|
|
|
|
|
/* ARB 29. GL_ARB_occlusion_query */ |
|
|
|
if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { |
|
|
|
_mesa_init_queryobj_dispatch(ctx, exec); |
|
|
|
} |
|
|
|
|
|
|
|
/* ARB 37. GL_ARB_draw_buffers */ |
|
|
|
if (ctx->API != API_OPENGLES) { |
|
|
|
SET_DrawBuffersARB(exec, _mesa_DrawBuffersARB); |
|
|
|
} |
|
|
|
|
|
|
|
/* ARB 66. GL_ARB_sync */ |
|
|
|
if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { |
|
|
|
_mesa_init_sync_dispatch(exec); |
|
|
|
} |
|
|
|
|
|
|
|
/* ARB 104. GL_ARB_debug_output */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
_mesa_init_errors_dispatch(exec); |
|
|
|
} |
|
|
|
|
|
|
|
/* ARB 105. GL_ARB_robustness */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_GetGraphicsResetStatusARB(exec, _mesa_GetGraphicsResetStatusARB); |
|
|
|
SET_GetnPolygonStippleARB(exec, _mesa_GetnPolygonStippleARB); |
|
|
|
SET_GetnTexImageARB(exec, _mesa_GetnTexImageARB); |
|
|
|
SET_ReadnPixelsARB(exec, _mesa_ReadnPixelsARB); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_ATI_fragment_shader */ |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
_mesa_init_ati_fragment_shader_dispatch(exec); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_ATI_envmap_bumpmap */ |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_GetTexBumpParameterivATI(exec, _mesa_GetTexBumpParameterivATI); |
|
|
|
SET_GetTexBumpParameterfvATI(exec, _mesa_GetTexBumpParameterfvATI); |
|
|
|
SET_TexBumpParameterivATI(exec, _mesa_TexBumpParameterivATI); |
|
|
|
SET_TexBumpParameterfvATI(exec, _mesa_TexBumpParameterfvATI); |
|
|
|
} |
|
|
|
|
|
|
|
SET_IsRenderbufferEXT(exec, _mesa_IsRenderbufferEXT); |
|
|
|
SET_BindRenderbufferEXT(exec, _mesa_BindRenderbufferEXT); |
|
|
|
SET_DeleteRenderbuffersEXT(exec, _mesa_DeleteRenderbuffersEXT); |
|
|
|
SET_GenRenderbuffersEXT(exec, _mesa_GenRenderbuffersEXT); |
|
|
|
SET_RenderbufferStorageEXT(exec, _mesa_RenderbufferStorageEXT); |
|
|
|
SET_GetRenderbufferParameterivEXT(exec, _mesa_GetRenderbufferParameterivEXT); |
|
|
|
SET_IsFramebufferEXT(exec, _mesa_IsFramebufferEXT); |
|
|
|
SET_BindFramebufferEXT(exec, _mesa_BindFramebufferEXT); |
|
|
|
SET_DeleteFramebuffersEXT(exec, _mesa_DeleteFramebuffersEXT); |
|
|
|
SET_GenFramebuffersEXT(exec, _mesa_GenFramebuffersEXT); |
|
|
|
SET_CheckFramebufferStatusEXT(exec, _mesa_CheckFramebufferStatusEXT); |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_FramebufferTexture1DEXT(exec, _mesa_FramebufferTexture1DEXT); |
|
|
|
} |
|
|
|
SET_FramebufferTexture2DEXT(exec, _mesa_FramebufferTexture2DEXT); |
|
|
|
if (ctx->API != API_OPENGLES) { |
|
|
|
SET_FramebufferTexture3DEXT(exec, _mesa_FramebufferTexture3DEXT); |
|
|
|
} |
|
|
|
SET_FramebufferRenderbufferEXT(exec, _mesa_FramebufferRenderbufferEXT); |
|
|
|
SET_GetFramebufferAttachmentParameterivEXT(exec, _mesa_GetFramebufferAttachmentParameterivEXT); |
|
|
|
SET_GenerateMipmapEXT(exec, _mesa_GenerateMipmapEXT); |
|
|
|
|
|
|
|
if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { |
|
|
|
SET_BlitFramebufferEXT(exec, _mesa_BlitFramebufferEXT); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_EXT_gpu_program_parameters */ |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_ProgramEnvParameters4fvEXT(exec, _mesa_ProgramEnvParameters4fvEXT); |
|
|
|
SET_ProgramLocalParameters4fvEXT(exec, _mesa_ProgramLocalParameters4fvEXT); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_MESA_texture_array / GL_EXT_texture_array */ |
|
|
|
if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { |
|
|
|
SET_FramebufferTextureLayerEXT(exec, _mesa_FramebufferTextureLayerEXT); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_ATI_separate_stencil */ |
|
|
|
if (ctx->API == API_OPENGL) { |
|
|
|
SET_StencilFuncSeparateATI(exec, _mesa_StencilFuncSeparateATI); |
|
|
|
} |
|
|
|
|
|
|
|
/* The ARB_fbo functions are the union of |
|
|
|
* GL_EXT_fbo, GL_EXT_framebuffer_blit, GL_EXT_texture_array |
|
|
|
*/ |
|
|
|
if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { |
|
|
|
SET_RenderbufferStorageMultisample(exec, _mesa_RenderbufferStorageMultisample); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_ARB_map_buffer_range / GL_EXT_map_buffer_range */ |
|
|
|
SET_MapBufferRange(exec, _mesa_MapBufferRange); |
|
|
|
SET_FlushMappedBufferRange(exec, _mesa_FlushMappedBufferRange); |
|
|
|
|
|
|
|
/* GL_ARB_copy_buffer */ |
|
|
|
if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { |
|
|
|
SET_CopyBufferSubData(exec, _mesa_CopyBufferSubData); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_ARB_vertex_array_object / GL_OES_vertex_array_object */ |
|
|
|
if (ctx->API != API_OPENGLES) { |
|
|
|
SET_BindVertexArray(exec, _mesa_BindVertexArray); |
|
|
|
SET_GenVertexArrays(exec, _mesa_GenVertexArrays); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_EXT_draw_buffers2 */ |
|
|
|
if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { |
|
|
|
SET_GetIntegerIndexedvEXT(exec, _mesa_GetIntegerIndexedv); |
|
|
|
} |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_ColorMaskIndexedEXT(exec, _mesa_ColorMaskIndexed); |
|
|
|
SET_GetBooleanIndexedvEXT(exec, _mesa_GetBooleanIndexedv); |
|
|
|
SET_EnableIndexedEXT(exec, _mesa_EnableIndexed); |
|
|
|
SET_DisableIndexedEXT(exec, _mesa_DisableIndexed); |
|
|
|
SET_IsEnabledIndexedEXT(exec, _mesa_IsEnabledIndexed); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_NV_conditional_render */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_BeginConditionalRenderNV(exec, _mesa_BeginConditionalRender); |
|
|
|
SET_EndConditionalRenderNV(exec, _mesa_EndConditionalRender); |
|
|
|
} |
|
|
|
|
|
|
|
SET_EGLImageTargetTexture2DOES(exec, _mesa_EGLImageTargetTexture2DOES); |
|
|
|
SET_EGLImageTargetRenderbufferStorageOES(exec, _mesa_EGLImageTargetRenderbufferStorageOES); |
|
|
|
|
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_ObjectPurgeableAPPLE(exec, _mesa_ObjectPurgeableAPPLE); |
|
|
|
SET_ObjectUnpurgeableAPPLE(exec, _mesa_ObjectUnpurgeableAPPLE); |
|
|
|
SET_GetObjectParameterivAPPLE(exec, _mesa_GetObjectParameterivAPPLE); |
|
|
|
} |
|
|
|
|
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_ClampColorARB(exec, _mesa_ClampColorARB); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_EXT_texture_integer */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_ClearColorIiEXT(exec, _mesa_ClearColorIiEXT); |
|
|
|
SET_ClearColorIuiEXT(exec, _mesa_ClearColorIuiEXT); |
|
|
|
} |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_GetTexParameterIivEXT(exec, _mesa_GetTexParameterIiv); |
|
|
|
SET_GetTexParameterIuivEXT(exec, _mesa_GetTexParameterIuiv); |
|
|
|
SET_TexParameterIivEXT(exec, _mesa_TexParameterIiv); |
|
|
|
SET_TexParameterIuivEXT(exec, _mesa_TexParameterIuiv); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_EXT_gpu_shader4 / OpenGL 3.0 */ |
|
|
|
if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { |
|
|
|
SET_GetVertexAttribIivEXT(exec, _mesa_GetVertexAttribIiv); |
|
|
|
SET_GetVertexAttribIuivEXT(exec, _mesa_GetVertexAttribIuiv); |
|
|
|
SET_VertexAttribIPointerEXT(exec, _mesa_VertexAttribIPointer); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL 3.0 (functions not covered by other extensions) */ |
|
|
|
if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { |
|
|
|
SET_ClearBufferiv(exec, _mesa_ClearBufferiv); |
|
|
|
SET_ClearBufferuiv(exec, _mesa_ClearBufferuiv); |
|
|
|
SET_ClearBufferfv(exec, _mesa_ClearBufferfv); |
|
|
|
SET_ClearBufferfi(exec, _mesa_ClearBufferfi); |
|
|
|
SET_GetStringi(exec, _mesa_GetStringi); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_ARB_instanced_arrays */ |
|
|
|
if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { |
|
|
|
SET_VertexAttribDivisorARB(exec, _mesa_VertexAttribDivisor); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_ARB_draw_buffer_blend */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_BlendFunciARB(exec, _mesa_BlendFunci); |
|
|
|
SET_BlendFuncSeparateiARB(exec, _mesa_BlendFuncSeparatei); |
|
|
|
SET_BlendEquationiARB(exec, _mesa_BlendEquationi); |
|
|
|
SET_BlendEquationSeparateiARB(exec, _mesa_BlendEquationSeparatei); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_NV_texture_barrier */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_TextureBarrierNV(exec, _mesa_TextureBarrierNV); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_ARB_texture_buffer_object */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_TexBufferARB(exec, _mesa_TexBuffer); |
|
|
|
} |
|
|
|
|
|
|
|
/* GL_ARB_texture_storage */ |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_TexStorage1D(exec, _mesa_TexStorage1D); |
|
|
|
SET_TextureStorage1DEXT(exec, _mesa_TextureStorage1DEXT); |
|
|
|
} |
|
|
|
if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { |
|
|
|
SET_TexStorage2D(exec, _mesa_TexStorage2D); |
|
|
|
SET_TexStorage3D(exec, _mesa_TexStorage3D); |
|
|
|
} |
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_TextureStorage2DEXT(exec, _mesa_TextureStorage2DEXT); |
|
|
|
SET_TextureStorage3DEXT(exec, _mesa_TextureStorage3DEXT); |
|
|
|
} |
|
|
|
|
|
|
|
if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { |
|
|
|
_mesa_init_sampler_object_dispatch(ctx, exec); |
|
|
|
} |
|
|
|
|
|
|
|
if (_mesa_is_desktop_gl(ctx)) { |
|
|
|
SET_InvalidateTexSubImage(exec, _mesa_InvalidateTexSubImage); |
|
|
|
SET_InvalidateTexImage(exec, _mesa_InvalidateTexImage); |
|
|
|
} |
|
|
|
|
|
|
|
if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { |
|
|
|
SET_InvalidateSubFramebuffer(exec, _mesa_InvalidateSubFramebuffer); |
|
|
|
SET_InvalidateFramebuffer(exec, _mesa_InvalidateFramebuffer); |
|
|
|
} |
|
|
|
|
|
|
|
if (ctx->API == API_OPENGLES) { |
|
|
|
SET_AlphaFuncxOES(exec, _es_AlphaFuncx); |
|
|
|
SET_ClearColorxOES(exec, _es_ClearColorx); |
|
|
|
SET_ClearDepthxOES(exec, _es_ClearDepthx); |
|
|
|
SET_ClipPlanefOES(exec, _es_ClipPlanef); |
|
|
|
SET_ClipPlanexOES(exec, _es_ClipPlanex); |
|
|
|
SET_Color4xOES(exec, _es_Color4x); |
|
|
|
SET_DepthRangexOES(exec, _es_DepthRangex); |
|
|
|
SET_DrawTexfOES(exec, _mesa_DrawTexf); |
|
|
|
SET_DrawTexfvOES(exec, _mesa_DrawTexfv); |
|
|
|
SET_DrawTexiOES(exec, _mesa_DrawTexi); |
|
|
|
SET_DrawTexivOES(exec, _mesa_DrawTexiv); |
|
|
|
SET_DrawTexsOES(exec, _mesa_DrawTexs); |
|
|
|
SET_DrawTexsvOES(exec, _mesa_DrawTexsv); |
|
|
|
SET_DrawTexxOES(exec, _es_DrawTexxOES); |
|
|
|
SET_DrawTexxvOES(exec, _es_DrawTexxvOES); |
|
|
|
SET_FogxOES(exec, _es_Fogx); |
|
|
|
SET_FogxvOES(exec, _es_Fogxv); |
|
|
|
SET_FrustumfOES(exec, _es_Frustumf); |
|
|
|
SET_FrustumxOES(exec, _es_Frustumx); |
|
|
|
SET_GetClipPlanefOES(exec, _es_GetClipPlanef); |
|
|
|
SET_GetClipPlanexOES(exec, _es_GetClipPlanex); |
|
|
|
SET_GetFixedvOES(exec, _mesa_GetFixedv); |
|
|
|
SET_GetLightxvOES(exec, _es_GetLightxv); |
|
|
|
SET_GetMaterialxvOES(exec, _es_GetMaterialxv); |
|
|
|
SET_GetTexEnvxvOES(exec, _es_GetTexEnvxv); |
|
|
|
SET_GetTexGenxvOES(exec, _check_GetTexGenxvOES); |
|
|
|
SET_GetTexParameterxvOES(exec, _es_GetTexParameterxv); |
|
|
|
SET_LightModelxOES(exec, _es_LightModelx); |
|
|
|
SET_LightModelxvOES(exec, _es_LightModelxv); |
|
|
|
SET_LightxOES(exec, _es_Lightx); |
|
|
|
SET_LightxvOES(exec, _es_Lightxv); |
|
|
|
SET_LineWidthxOES(exec, _es_LineWidthx); |
|
|
|
SET_LoadMatrixxOES(exec, _es_LoadMatrixx); |
|
|
|
SET_MaterialxOES(exec, _es_Materialx); |
|
|
|
SET_MaterialxvOES(exec, _es_Materialxv); |
|
|
|
SET_MultMatrixxOES(exec, _es_MultMatrixx); |
|
|
|
SET_MultiTexCoord4xOES(exec, _es_MultiTexCoord4x); |
|
|
|
SET_Normal3xOES(exec, _es_Normal3x); |
|
|
|
SET_OrthofOES(exec, _es_Orthof); |
|
|
|
SET_OrthoxOES(exec, _es_Orthox); |
|
|
|
SET_PointParameterxOES(exec, _es_PointParameterx); |
|
|
|
SET_PointParameterxvOES(exec, _es_PointParameterxv); |
|
|
|
SET_PointSizePointerOES(exec, _mesa_PointSizePointer); |
|
|
|
SET_PointSizexOES(exec, _es_PointSizex); |
|
|
|
SET_PolygonOffsetxOES(exec, _es_PolygonOffsetx); |
|
|
|
SET_QueryMatrixxOES(exec, _es_QueryMatrixxOES); |
|
|
|
SET_RotatexOES(exec, _es_Rotatex); |
|
|
|
SET_SampleCoveragexOES(exec, _es_SampleCoveragex); |
|
|
|
SET_ScalexOES(exec, _es_Scalex); |
|
|
|
SET_TexEnvxOES(exec, _es_TexEnvx); |
|
|
|
SET_TexEnvxvOES(exec, _es_TexEnvxv); |
|
|
|
SET_TexGenxOES(exec, _check_TexGenxOES); |
|
|
|
SET_TexGenxvOES(exec, _check_TexGenxvOES); |
|
|
|
SET_TexParameterxOES(exec, _es_TexParameterx); |
|
|
|
SET_TexParameterxvOES(exec, _es_TexParameterxv); |
|
|
|
SET_TranslatexOES(exec, _es_Translatex); |
|
|
|
} |
|
|
|
|
|
|
|
return exec; |
|
|
|
} |