[Mesa-dev] [PATCH v3 6/6] intel: add support for using API_OPENGL_CORE
Jordan Justen
jordan.l.justen at intel.com
Fri Jul 27 14:07:27 PDT 2012
Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
---
src/mesa/drivers/dri/intel/intel_extensions.c | 2 +-
src/mesa/main/api_exec.c | 227 +++++++++++++++----------
src/mesa/main/api_exec.h | 3 +-
src/mesa/main/context.c | 2 +-
src/mesa/main/vtxfmt.c | 167 +++++++++---------
5 files changed, 233 insertions(+), 168 deletions(-)
diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c b/src/mesa/drivers/dri/intel/intel_extensions.c
index c2bc072..b752216 100755
--- a/src/mesa/drivers/dri/intel/intel_extensions.c
+++ b/src/mesa/drivers/dri/intel/intel_extensions.c
@@ -44,7 +44,7 @@ intelInitExtensions(struct gl_context *ctx)
ctx->Extensions.ARB_draw_elements_base_vertex = true;
ctx->Extensions.ARB_explicit_attrib_location = true;
- if (ctx->API == API_OPENGL)
+ if (_mesa_is_desktop_gl(ctx))
ctx->Extensions.ARB_framebuffer_object = true;
ctx->Extensions.ARB_half_float_pixel = true;
ctx->Extensions.ARB_map_buffer_range = true;
diff --git a/src/mesa/main/api_exec.c b/src/mesa/main/api_exec.c
index 19e7f98..81be46d 100644
--- a/src/mesa/main/api_exec.c
+++ b/src/mesa/main/api_exec.c
@@ -120,7 +120,7 @@
* \param exec dispatch table.
*/
struct _glapi_table *
-_mesa_create_exec_table(void)
+_mesa_create_exec_table(struct gl_context *ctx)
{
struct _glapi_table *exec;
@@ -133,7 +133,10 @@ _mesa_create_exec_table(void)
#endif
/* load the dispatch slots we understand */
- SET_AlphaFunc(exec, _mesa_AlphaFunc);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_AlphaFunc(exec, _mesa_AlphaFunc);
+ }
+
SET_BlendFunc(exec, _mesa_BlendFunc);
SET_Clear(exec, _mesa_Clear);
SET_ClearColor(exec, _mesa_ClearColor);
@@ -149,42 +152,62 @@ _mesa_create_exec_table(void)
SET_Finish(exec, _mesa_Finish);
SET_Flush(exec, _mesa_Flush);
SET_FrontFace(exec, _mesa_FrontFace);
- SET_Frustum(exec, _mesa_Frustum);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_Frustum(exec, _mesa_Frustum);
+ }
SET_GetError(exec, _mesa_GetError);
SET_GetFloatv(exec, _mesa_GetFloatv);
SET_GetString(exec, _mesa_GetString);
- SET_LineStipple(exec, _mesa_LineStipple);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_LineStipple(exec, _mesa_LineStipple);
+ }
SET_LineWidth(exec, _mesa_LineWidth);
- SET_LoadIdentity(exec, _mesa_LoadIdentity);
- SET_LoadMatrixf(exec, _mesa_LoadMatrixf);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_LoadIdentity(exec, _mesa_LoadIdentity);
+ SET_LoadMatrixf(exec, _mesa_LoadMatrixf);
+ }
SET_LogicOp(exec, _mesa_LogicOp);
- SET_MatrixMode(exec, _mesa_MatrixMode);
- SET_MultMatrixf(exec, _mesa_MultMatrixf);
- SET_Ortho(exec, _mesa_Ortho);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_MatrixMode(exec, _mesa_MatrixMode);
+ SET_MultMatrixf(exec, _mesa_MultMatrixf);
+ SET_Ortho(exec, _mesa_Ortho);
+ }
SET_PixelStorei(exec, _mesa_PixelStorei);
- SET_PopMatrix(exec, _mesa_PopMatrix);
- SET_PushMatrix(exec, _mesa_PushMatrix);
- SET_Rotatef(exec, _mesa_Rotatef);
- SET_Scalef(exec, _mesa_Scalef);
+ if (ctx->API != API_OPENGL_CORE) {
+ 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);
- SET_ShadeModel(exec, _mesa_ShadeModel);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_ShadeModel(exec, _mesa_ShadeModel);
+ }
SET_StencilFunc(exec, _mesa_StencilFunc);
SET_StencilMask(exec, _mesa_StencilMask);
SET_StencilOp(exec, _mesa_StencilOp);
- SET_TexEnvfv(exec, _mesa_TexEnvfv);
- SET_TexEnvi(exec, _mesa_TexEnvi);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_TexEnvfv(exec, _mesa_TexEnvfv);
+ SET_TexEnvi(exec, _mesa_TexEnvi);
+ }
SET_TexImage2D(exec, _mesa_TexImage2D);
SET_TexParameteri(exec, _mesa_TexParameteri);
- SET_Translatef(exec, _mesa_Translatef);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_Translatef(exec, _mesa_Translatef);
+ }
SET_Viewport(exec, _mesa_Viewport);
- _mesa_init_accum_dispatch(exec);
- _mesa_init_dlist_dispatch(exec);
+ if (ctx->API != API_OPENGL_CORE) {
+ _mesa_init_accum_dispatch(exec);
+ _mesa_init_dlist_dispatch(exec);
+ }
SET_ClearDepth(exec, _mesa_ClearDepth);
- SET_ClearIndex(exec, _mesa_ClearIndex);
- SET_ClipPlane(exec, _mesa_ClipPlane);
- SET_ColorMaterial(exec, _mesa_ColorMaterial);
+ if (ctx->API != API_OPENGL_CORE) {
+ 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);
SET_DepthRange(exec, _mesa_DepthRange);
@@ -192,43 +215,53 @@ _mesa_create_exec_table(void)
_mesa_init_drawpix_dispatch(exec);
_mesa_init_feedback_dispatch(exec);
- SET_FogCoordPointerEXT(exec, _mesa_FogCoordPointerEXT);
- SET_Fogf(exec, _mesa_Fogf);
- SET_Fogfv(exec, _mesa_Fogfv);
- SET_Fogi(exec, _mesa_Fogi);
- SET_Fogiv(exec, _mesa_Fogiv);
- SET_GetClipPlane(exec, _mesa_GetClipPlane);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_FogCoordPointerEXT(exec, _mesa_FogCoordPointerEXT);
+ SET_Fogf(exec, _mesa_Fogf);
+ SET_Fogfv(exec, _mesa_Fogfv);
+ SET_Fogi(exec, _mesa_Fogi);
+ SET_Fogiv(exec, _mesa_Fogiv);
+ SET_GetClipPlane(exec, _mesa_GetClipPlane);
+ }
SET_GetBooleanv(exec, _mesa_GetBooleanv);
SET_GetDoublev(exec, _mesa_GetDoublev);
SET_GetIntegerv(exec, _mesa_GetIntegerv);
- SET_GetLightfv(exec, _mesa_GetLightfv);
- SET_GetLightiv(exec, _mesa_GetLightiv);
- SET_GetMaterialfv(exec, _mesa_GetMaterialfv);
- SET_GetMaterialiv(exec, _mesa_GetMaterialiv);
- SET_GetPolygonStipple(exec, _mesa_GetPolygonStipple);
- SET_GetTexEnvfv(exec, _mesa_GetTexEnvfv);
- SET_GetTexEnviv(exec, _mesa_GetTexEnviv);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_GetLightfv(exec, _mesa_GetLightfv);
+ SET_GetLightiv(exec, _mesa_GetLightiv);
+ SET_GetMaterialfv(exec, _mesa_GetMaterialfv);
+ SET_GetMaterialiv(exec, _mesa_GetMaterialiv);
+ SET_GetPolygonStipple(exec, _mesa_GetPolygonStipple);
+ SET_GetTexEnvfv(exec, _mesa_GetTexEnvfv);
+ SET_GetTexEnviv(exec, _mesa_GetTexEnviv);
+ }
SET_GetTexLevelParameterfv(exec, _mesa_GetTexLevelParameterfv);
SET_GetTexLevelParameteriv(exec, _mesa_GetTexLevelParameteriv);
SET_GetTexParameterfv(exec, _mesa_GetTexParameterfv);
SET_GetTexParameteriv(exec, _mesa_GetTexParameteriv);
SET_GetTexImage(exec, _mesa_GetTexImage);
SET_Hint(exec, _mesa_Hint);
- SET_IndexMask(exec, _mesa_IndexMask);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_IndexMask(exec, _mesa_IndexMask);
+ }
SET_IsEnabled(exec, _mesa_IsEnabled);
- SET_LightModelf(exec, _mesa_LightModelf);
- SET_LightModelfv(exec, _mesa_LightModelfv);
- SET_LightModeli(exec, _mesa_LightModeli);
- SET_LightModeliv(exec, _mesa_LightModeliv);
- SET_Lightf(exec, _mesa_Lightf);
- SET_Lightfv(exec, _mesa_Lightfv);
- SET_Lighti(exec, _mesa_Lighti);
- SET_Lightiv(exec, _mesa_Lightiv);
- SET_LoadMatrixd(exec, _mesa_LoadMatrixd);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_LightModelf(exec, _mesa_LightModelf);
+ SET_LightModelfv(exec, _mesa_LightModelfv);
+ SET_LightModeli(exec, _mesa_LightModeli);
+ SET_LightModeliv(exec, _mesa_LightModeliv);
+ SET_Lightf(exec, _mesa_Lightf);
+ SET_Lightfv(exec, _mesa_Lightfv);
+ SET_Lighti(exec, _mesa_Lighti);
+ SET_Lightiv(exec, _mesa_Lightiv);
+ SET_LoadMatrixd(exec, _mesa_LoadMatrixd);
+ }
_mesa_init_eval_dispatch(exec);
- SET_MultMatrixd(exec, _mesa_MultMatrixd);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_MultMatrixd(exec, _mesa_MultMatrixd);
+ }
_mesa_init_pixel_dispatch(exec);
@@ -236,17 +269,21 @@ _mesa_create_exec_table(void)
SET_PointSize(exec, _mesa_PointSize);
SET_PolygonMode(exec, _mesa_PolygonMode);
SET_PolygonOffset(exec, _mesa_PolygonOffset);
- SET_PolygonStipple(exec, _mesa_PolygonStipple);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_PolygonStipple(exec, _mesa_PolygonStipple);
+ }
_mesa_init_attrib_dispatch(exec);
_mesa_init_rastpos_dispatch(exec);
SET_ReadPixels(exec, _mesa_ReadPixels);
- SET_Rotated(exec, _mesa_Rotated);
- SET_Scaled(exec, _mesa_Scaled);
- SET_SecondaryColorPointerEXT(exec, _mesa_SecondaryColorPointerEXT);
- SET_TexEnvf(exec, _mesa_TexEnvf);
- SET_TexEnviv(exec, _mesa_TexEnviv);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_Rotated(exec, _mesa_Rotated);
+ SET_Scaled(exec, _mesa_Scaled);
+ SET_SecondaryColorPointerEXT(exec, _mesa_SecondaryColorPointerEXT);
+ SET_TexEnvf(exec, _mesa_TexEnvf);
+ SET_TexEnviv(exec, _mesa_TexEnviv);
+ }
_mesa_init_texgen_dispatch(exec);
@@ -254,32 +291,42 @@ _mesa_create_exec_table(void)
SET_TexParameterf(exec, _mesa_TexParameterf);
SET_TexParameterfv(exec, _mesa_TexParameterfv);
SET_TexParameteriv(exec, _mesa_TexParameteriv);
- SET_Translated(exec, _mesa_Translated);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_Translated(exec, _mesa_Translated);
+ }
/* 1.1 */
SET_BindTexture(exec, _mesa_BindTexture);
SET_DeleteTextures(exec, _mesa_DeleteTextures);
SET_GenTextures(exec, _mesa_GenTextures);
#if _HAVE_FULL_GL
- SET_AreTexturesResident(exec, _mesa_AreTexturesResident);
- SET_ColorPointer(exec, _mesa_ColorPointer);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_AreTexturesResident(exec, _mesa_AreTexturesResident);
+ SET_ColorPointer(exec, _mesa_ColorPointer);
+ }
SET_CopyTexImage1D(exec, _mesa_CopyTexImage1D);
SET_CopyTexImage2D(exec, _mesa_CopyTexImage2D);
SET_CopyTexSubImage1D(exec, _mesa_CopyTexSubImage1D);
SET_CopyTexSubImage2D(exec, _mesa_CopyTexSubImage2D);
- SET_DisableClientState(exec, _mesa_DisableClientState);
- SET_EdgeFlagPointer(exec, _mesa_EdgeFlagPointer);
- SET_EnableClientState(exec, _mesa_EnableClientState);
- SET_GetPointerv(exec, _mesa_GetPointerv);
- SET_IndexPointer(exec, _mesa_IndexPointer);
- SET_InterleavedArrays(exec, _mesa_InterleavedArrays);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_DisableClientState(exec, _mesa_DisableClientState);
+ SET_EdgeFlagPointer(exec, _mesa_EdgeFlagPointer);
+ SET_EnableClientState(exec, _mesa_EnableClientState);
+ SET_GetPointerv(exec, _mesa_GetPointerv);
+ SET_IndexPointer(exec, _mesa_IndexPointer);
+ SET_InterleavedArrays(exec, _mesa_InterleavedArrays);
+ }
SET_IsTexture(exec, _mesa_IsTexture);
- SET_NormalPointer(exec, _mesa_NormalPointer);
- SET_PrioritizeTextures(exec, _mesa_PrioritizeTextures);
- SET_TexCoordPointer(exec, _mesa_TexCoordPointer);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_NormalPointer(exec, _mesa_NormalPointer);
+ SET_PrioritizeTextures(exec, _mesa_PrioritizeTextures);
+ SET_TexCoordPointer(exec, _mesa_TexCoordPointer);
+ }
SET_TexSubImage1D(exec, _mesa_TexSubImage1D);
SET_TexSubImage2D(exec, _mesa_TexSubImage2D);
- SET_VertexPointer(exec, _mesa_VertexPointer);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_VertexPointer(exec, _mesa_VertexPointer);
+ }
#endif
/* 1.2 */
@@ -327,31 +374,37 @@ _mesa_create_exec_table(void)
/* 11. GL_EXT_histogram */
#if 0
- 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);
+ if (ctx->API != API_OPENGL_CORE) {
+ 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
- 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);
+ if (ctx->API != API_OPENGL_CORE) {
+ 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 _HAVE_FULL_GL
- 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);
+ if (ctx->API != API_OPENGL_CORE) {
+ 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);
+ }
#endif
/* 37. GL_EXT_blend_minmax */
@@ -483,10 +536,12 @@ _mesa_create_exec_table(void)
/* ARB 3. GL_ARB_transpose_matrix */
#if _HAVE_FULL_GL
- SET_LoadTransposeMatrixdARB(exec, _mesa_LoadTransposeMatrixdARB);
- SET_LoadTransposeMatrixfARB(exec, _mesa_LoadTransposeMatrixfARB);
- SET_MultTransposeMatrixdARB(exec, _mesa_MultTransposeMatrixdARB);
- SET_MultTransposeMatrixfARB(exec, _mesa_MultTransposeMatrixfARB);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_LoadTransposeMatrixdARB(exec, _mesa_LoadTransposeMatrixdARB);
+ SET_LoadTransposeMatrixfARB(exec, _mesa_LoadTransposeMatrixfARB);
+ SET_MultTransposeMatrixdARB(exec, _mesa_MultTransposeMatrixdARB);
+ SET_MultTransposeMatrixfARB(exec, _mesa_MultTransposeMatrixfARB);
+ }
#endif
/* ARB 5. GL_ARB_multisample */
diff --git a/src/mesa/main/api_exec.h b/src/mesa/main/api_exec.h
index 29c953f..100e972 100644
--- a/src/mesa/main/api_exec.h
+++ b/src/mesa/main/api_exec.h
@@ -28,12 +28,13 @@
struct _glapi_table;
+struct gl_context;
extern struct _glapi_table *
_mesa_alloc_dispatch_table(int size);
extern struct _glapi_table *
-_mesa_create_exec_table(void);
+_mesa_create_exec_table(struct gl_context *ctx);
extern struct _glapi_table *
_mesa_create_exec_table_es1(void);
diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
index 7dbfe0f..05140a6 100644
--- a/src/mesa/main/context.c
+++ b/src/mesa/main/context.c
@@ -963,7 +963,7 @@ _mesa_initialize_context(struct gl_context *ctx,
#if FEATURE_GL
case API_OPENGL:
case API_OPENGL_CORE:
- ctx->Exec = _mesa_create_exec_table();
+ ctx->Exec = _mesa_create_exec_table(ctx);
break;
#endif
#if FEATURE_ES1
diff --git a/src/mesa/main/vtxfmt.c b/src/mesa/main/vtxfmt.c
index bc925b0..ce490ed 100644
--- a/src/mesa/main/vtxfmt.c
+++ b/src/mesa/main/vtxfmt.c
@@ -45,57 +45,64 @@
* API dispatch table.
*/
static void
-install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt )
+install_vtxfmt(struct gl_context *ctx, struct _glapi_table *tab,
+ const GLvertexformat *vfmt)
{
_mesa_install_arrayelt_vtxfmt(tab, vfmt);
- SET_Color3f(tab, vfmt->Color3f);
- SET_Color3fv(tab, vfmt->Color3fv);
- SET_Color4f(tab, vfmt->Color4f);
- SET_Color4fv(tab, vfmt->Color4fv);
- SET_EdgeFlag(tab, vfmt->EdgeFlag);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_Color3f(tab, vfmt->Color3f);
+ SET_Color3fv(tab, vfmt->Color3fv);
+ SET_Color4f(tab, vfmt->Color4f);
+ SET_Color4fv(tab, vfmt->Color4fv);
+ SET_EdgeFlag(tab, vfmt->EdgeFlag);
+ }
_mesa_install_eval_vtxfmt(tab, vfmt);
- SET_FogCoordfEXT(tab, vfmt->FogCoordfEXT);
- SET_FogCoordfvEXT(tab, vfmt->FogCoordfvEXT);
- SET_Indexf(tab, vfmt->Indexf);
- SET_Indexfv(tab, vfmt->Indexfv);
- SET_Materialfv(tab, vfmt->Materialfv);
- SET_MultiTexCoord1fARB(tab, vfmt->MultiTexCoord1fARB);
- SET_MultiTexCoord1fvARB(tab, vfmt->MultiTexCoord1fvARB);
- SET_MultiTexCoord2fARB(tab, vfmt->MultiTexCoord2fARB);
- SET_MultiTexCoord2fvARB(tab, vfmt->MultiTexCoord2fvARB);
- SET_MultiTexCoord3fARB(tab, vfmt->MultiTexCoord3fARB);
- SET_MultiTexCoord3fvARB(tab, vfmt->MultiTexCoord3fvARB);
- SET_MultiTexCoord4fARB(tab, vfmt->MultiTexCoord4fARB);
- SET_MultiTexCoord4fvARB(tab, vfmt->MultiTexCoord4fvARB);
- SET_Normal3f(tab, vfmt->Normal3f);
- SET_Normal3fv(tab, vfmt->Normal3fv);
- SET_SecondaryColor3fEXT(tab, vfmt->SecondaryColor3fEXT);
- SET_SecondaryColor3fvEXT(tab, vfmt->SecondaryColor3fvEXT);
- SET_TexCoord1f(tab, vfmt->TexCoord1f);
- SET_TexCoord1fv(tab, vfmt->TexCoord1fv);
- SET_TexCoord2f(tab, vfmt->TexCoord2f);
- SET_TexCoord2fv(tab, vfmt->TexCoord2fv);
- SET_TexCoord3f(tab, vfmt->TexCoord3f);
- SET_TexCoord3fv(tab, vfmt->TexCoord3fv);
- SET_TexCoord4f(tab, vfmt->TexCoord4f);
- SET_TexCoord4fv(tab, vfmt->TexCoord4fv);
- SET_Vertex2f(tab, vfmt->Vertex2f);
- SET_Vertex2fv(tab, vfmt->Vertex2fv);
- SET_Vertex3f(tab, vfmt->Vertex3f);
- SET_Vertex3fv(tab, vfmt->Vertex3fv);
- SET_Vertex4f(tab, vfmt->Vertex4f);
- SET_Vertex4fv(tab, vfmt->Vertex4fv);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_FogCoordfEXT(tab, vfmt->FogCoordfEXT);
+ SET_FogCoordfvEXT(tab, vfmt->FogCoordfvEXT);
+ SET_Indexf(tab, vfmt->Indexf);
+ SET_Indexfv(tab, vfmt->Indexfv);
+ SET_Materialfv(tab, vfmt->Materialfv);
+ SET_MultiTexCoord1fARB(tab, vfmt->MultiTexCoord1fARB);
+ SET_MultiTexCoord1fvARB(tab, vfmt->MultiTexCoord1fvARB);
+ SET_MultiTexCoord2fARB(tab, vfmt->MultiTexCoord2fARB);
+ SET_MultiTexCoord2fvARB(tab, vfmt->MultiTexCoord2fvARB);
+ SET_MultiTexCoord3fARB(tab, vfmt->MultiTexCoord3fARB);
+ SET_MultiTexCoord3fvARB(tab, vfmt->MultiTexCoord3fvARB);
+ SET_MultiTexCoord4fARB(tab, vfmt->MultiTexCoord4fARB);
+ SET_MultiTexCoord4fvARB(tab, vfmt->MultiTexCoord4fvARB);
+ SET_Normal3f(tab, vfmt->Normal3f);
+ SET_Normal3fv(tab, vfmt->Normal3fv);
+ SET_SecondaryColor3fEXT(tab, vfmt->SecondaryColor3fEXT);
+ SET_SecondaryColor3fvEXT(tab, vfmt->SecondaryColor3fvEXT);
+ SET_TexCoord1f(tab, vfmt->TexCoord1f);
+ SET_TexCoord1fv(tab, vfmt->TexCoord1fv);
+ SET_TexCoord2f(tab, vfmt->TexCoord2f);
+ SET_TexCoord2fv(tab, vfmt->TexCoord2fv);
+ SET_TexCoord3f(tab, vfmt->TexCoord3f);
+ SET_TexCoord3fv(tab, vfmt->TexCoord3fv);
+ SET_TexCoord4f(tab, vfmt->TexCoord4f);
+ SET_TexCoord4fv(tab, vfmt->TexCoord4fv);
+ SET_Vertex2f(tab, vfmt->Vertex2f);
+ SET_Vertex2fv(tab, vfmt->Vertex2fv);
+ SET_Vertex3f(tab, vfmt->Vertex3f);
+ SET_Vertex3fv(tab, vfmt->Vertex3fv);
+ SET_Vertex4f(tab, vfmt->Vertex4f);
+ SET_Vertex4fv(tab, vfmt->Vertex4fv);
+ }
_mesa_install_dlist_vtxfmt(tab, vfmt); /* glCallList / glCallLists */
- SET_Begin(tab, vfmt->Begin);
- SET_End(tab, vfmt->End);
- SET_PrimitiveRestartNV(tab, vfmt->PrimitiveRestartNV);
+ if (ctx->API != API_OPENGL_CORE) {
+ SET_Begin(tab, vfmt->Begin);
+ SET_End(tab, vfmt->End);
+ SET_PrimitiveRestartNV(tab, vfmt->PrimitiveRestartNV);
- SET_Rectf(tab, vfmt->Rectf);
+ SET_Rectf(tab, vfmt->Rectf);
+ }
SET_DrawArrays(tab, vfmt->DrawArrays);
SET_DrawElements(tab, vfmt->DrawElements);
@@ -154,42 +161,44 @@ install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt )
SET_VertexAttribI3uivEXT(tab, vfmt->VertexAttribI3uiv);
SET_VertexAttribI4uivEXT(tab, vfmt->VertexAttribI4uiv);
- /* GL_ARB_vertex_type_10_10_10_2_rev / GL 3.3 */
- SET_VertexP2ui(tab, vfmt->VertexP2ui);
- SET_VertexP2uiv(tab, vfmt->VertexP2uiv);
- SET_VertexP3ui(tab, vfmt->VertexP3ui);
- SET_VertexP3uiv(tab, vfmt->VertexP3uiv);
- SET_VertexP4ui(tab, vfmt->VertexP4ui);
- SET_VertexP4uiv(tab, vfmt->VertexP4uiv);
-
- SET_TexCoordP1ui(tab, vfmt->TexCoordP1ui);
- SET_TexCoordP1uiv(tab, vfmt->TexCoordP1uiv);
- SET_TexCoordP2ui(tab, vfmt->TexCoordP2ui);
- SET_TexCoordP2uiv(tab, vfmt->TexCoordP2uiv);
- SET_TexCoordP3ui(tab, vfmt->TexCoordP3ui);
- SET_TexCoordP3uiv(tab, vfmt->TexCoordP3uiv);
- SET_TexCoordP4ui(tab, vfmt->TexCoordP4ui);
- SET_TexCoordP4uiv(tab, vfmt->TexCoordP4uiv);
-
- SET_MultiTexCoordP1ui(tab, vfmt->MultiTexCoordP1ui);
- SET_MultiTexCoordP2ui(tab, vfmt->MultiTexCoordP2ui);
- SET_MultiTexCoordP3ui(tab, vfmt->MultiTexCoordP3ui);
- SET_MultiTexCoordP4ui(tab, vfmt->MultiTexCoordP4ui);
- SET_MultiTexCoordP1uiv(tab, vfmt->MultiTexCoordP1uiv);
- SET_MultiTexCoordP2uiv(tab, vfmt->MultiTexCoordP2uiv);
- SET_MultiTexCoordP3uiv(tab, vfmt->MultiTexCoordP3uiv);
- SET_MultiTexCoordP4uiv(tab, vfmt->MultiTexCoordP4uiv);
-
- SET_NormalP3ui(tab, vfmt->NormalP3ui);
- SET_NormalP3uiv(tab, vfmt->NormalP3uiv);
-
- SET_ColorP3ui(tab, vfmt->ColorP3ui);
- SET_ColorP4ui(tab, vfmt->ColorP4ui);
- SET_ColorP3uiv(tab, vfmt->ColorP3uiv);
- SET_ColorP4uiv(tab, vfmt->ColorP4uiv);
-
- SET_SecondaryColorP3ui(tab, vfmt->SecondaryColorP3ui);
- SET_SecondaryColorP3uiv(tab, vfmt->SecondaryColorP3uiv);
+ if (ctx->API != API_OPENGL_CORE) {
+ /* GL_ARB_vertex_type_10_10_10_2_rev / GL 3.3 */
+ SET_VertexP2ui(tab, vfmt->VertexP2ui);
+ SET_VertexP2uiv(tab, vfmt->VertexP2uiv);
+ SET_VertexP3ui(tab, vfmt->VertexP3ui);
+ SET_VertexP3uiv(tab, vfmt->VertexP3uiv);
+ SET_VertexP4ui(tab, vfmt->VertexP4ui);
+ SET_VertexP4uiv(tab, vfmt->VertexP4uiv);
+
+ SET_TexCoordP1ui(tab, vfmt->TexCoordP1ui);
+ SET_TexCoordP1uiv(tab, vfmt->TexCoordP1uiv);
+ SET_TexCoordP2ui(tab, vfmt->TexCoordP2ui);
+ SET_TexCoordP2uiv(tab, vfmt->TexCoordP2uiv);
+ SET_TexCoordP3ui(tab, vfmt->TexCoordP3ui);
+ SET_TexCoordP3uiv(tab, vfmt->TexCoordP3uiv);
+ SET_TexCoordP4ui(tab, vfmt->TexCoordP4ui);
+ SET_TexCoordP4uiv(tab, vfmt->TexCoordP4uiv);
+
+ SET_MultiTexCoordP1ui(tab, vfmt->MultiTexCoordP1ui);
+ SET_MultiTexCoordP2ui(tab, vfmt->MultiTexCoordP2ui);
+ SET_MultiTexCoordP3ui(tab, vfmt->MultiTexCoordP3ui);
+ SET_MultiTexCoordP4ui(tab, vfmt->MultiTexCoordP4ui);
+ SET_MultiTexCoordP1uiv(tab, vfmt->MultiTexCoordP1uiv);
+ SET_MultiTexCoordP2uiv(tab, vfmt->MultiTexCoordP2uiv);
+ SET_MultiTexCoordP3uiv(tab, vfmt->MultiTexCoordP3uiv);
+ SET_MultiTexCoordP4uiv(tab, vfmt->MultiTexCoordP4uiv);
+
+ SET_NormalP3ui(tab, vfmt->NormalP3ui);
+ SET_NormalP3uiv(tab, vfmt->NormalP3uiv);
+
+ SET_ColorP3ui(tab, vfmt->ColorP3ui);
+ SET_ColorP4ui(tab, vfmt->ColorP4ui);
+ SET_ColorP3uiv(tab, vfmt->ColorP3uiv);
+ SET_ColorP4uiv(tab, vfmt->ColorP4uiv);
+
+ SET_SecondaryColorP3ui(tab, vfmt->SecondaryColorP3ui);
+ SET_SecondaryColorP3uiv(tab, vfmt->SecondaryColorP3uiv);
+ }
SET_VertexAttribP1ui(tab, vfmt->VertexAttribP1ui);
SET_VertexAttribP2ui(tab, vfmt->VertexAttribP2ui);
@@ -210,7 +219,7 @@ void
_mesa_install_exec_vtxfmt(struct gl_context *ctx, const GLvertexformat *vfmt)
{
if (_mesa_is_desktop_gl(ctx))
- install_vtxfmt( ctx->Exec, vfmt );
+ install_vtxfmt( ctx, ctx->Exec, vfmt );
}
@@ -222,7 +231,7 @@ void
_mesa_install_save_vtxfmt(struct gl_context *ctx, const GLvertexformat *vfmt)
{
if (_mesa_is_desktop_gl(ctx))
- install_vtxfmt( ctx->Save, vfmt );
+ install_vtxfmt( ctx, ctx->Save, vfmt );
}
--
1.7.9.5
More information about the mesa-dev
mailing list