Fix up FEATURE_* defines in config.h
_glapi_add_entrypoint() updates in context.c
diff --git a/src/mesa/main/config.h b/src/mesa/main/config.h
index ebbdeaa..cb94a29 100644
--- a/src/mesa/main/config.h
+++ b/src/mesa/main/config.h
@@ -251,21 +251,17 @@
*/
#if _HAVE_FULL_GL
#define FEATURE_NV_vertex_program 1
+#define FEATURE_NV_fragment_program 1
+#define FEATURE_ARB_vertex_buffer_object 1
+#define FEATURE_ARB_vertex_program 1
+#define FEATURE_ARB_fragment_program 1
+#define FEATURE_ARB_occlusion_query 1
+#define FEATURE_NV_fence 1
#define FEATURE_userclip 1
#define FEATURE_texgen 1
#define FEATURE_windowpos 1
#endif
-#define FEATURE_NV_fragment_program 1
-
-#define FEATURE_ARB_vertex_buffer_object 1
-
-#define FEATURE_ARB_vertex_program 1
-
-#define FEATURE_ARB_fragment_program 1
-
-#define FEATURE_ARB_occlusion_query 1
-
/*@}*/
diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
index a8352bb..b4b9659 100644
--- a/src/mesa/main/context.c
+++ b/src/mesa/main/context.c
@@ -77,7 +77,6 @@
#include "attrib.h"
#include "blend.h"
#include "buffers.h"
-/*#include "clip.h"*/
#include "colortab.h"
#include "context.h"
#include "debug.h"
@@ -90,6 +89,7 @@
#include "fog.h"
#include "get.h"
#include "glthread.h"
+#include "glapioffsets.h"
#include "histogram.h"
#include "hint.h"
#include "hash.h"
@@ -1124,6 +1124,187 @@
}
+/**
+ * If the DRI libGL.so library is old, it may not have the entrypoints for
+ * some recent OpenGL extensions. Dynamically add them now.
+ * If we're building stand-alone Mesa where libGL.so has both the dispatcher
+ * and driver code, this won't be an issue (and calling this function won't
+ * do any harm).
+ */
+static void
+add_newer_entrypoints(void)
+{
+ /* GL_ARB_window_pos aliases with GL_MESA_window_pos */
+ _glapi_add_entrypoint("glWindowPos2dARB", 513);
+ _glapi_add_entrypoint("glWindowPos2dvARB", 514);
+ _glapi_add_entrypoint("glWindowPos2fARB", 515);
+ _glapi_add_entrypoint("glWindowPos2fvARB", 516);
+ _glapi_add_entrypoint("glWindowPos2iARB", 517);
+ _glapi_add_entrypoint("glWindowPos2ivARB", 518);
+ _glapi_add_entrypoint("glWindowPos2sARB", 519);
+ _glapi_add_entrypoint("glWindowPos2svARB", 520);
+ _glapi_add_entrypoint("glWindowPos3dARB", 521);
+ _glapi_add_entrypoint("glWindowPos3dvARB", 522);
+ _glapi_add_entrypoint("glWindowPos3fARB", 523);
+ _glapi_add_entrypoint("glWindowPos3fvARB", 524);
+ _glapi_add_entrypoint("glWindowPos3iARB", 525);
+ _glapi_add_entrypoint("glWindowPos3ivARB", 526);
+ _glapi_add_entrypoint("glWindowPos3sARB", 527);
+ _glapi_add_entrypoint("glWindowPos3svARB", 528);
+#if FEATURE_NV_vertex_program
+ _glapi_add_entrypoint("glAreProgramsResidentNV", 578);
+ _glapi_add_entrypoint("glBindProgramNV", 579);
+ _glapi_add_entrypoint("glDeleteProgramsNV", 580);
+ _glapi_add_entrypoint("glExecuteProgramNV", 581);
+ _glapi_add_entrypoint("glGenProgramsNV", 582);
+ _glapi_add_entrypoint("glGetProgramParameterdvNV", 583);
+ _glapi_add_entrypoint("glGetProgramParameterfvNV", 584);
+ _glapi_add_entrypoint("glGetProgramivNV", 585);
+ _glapi_add_entrypoint("glGetProgramStringNV", 586);
+ _glapi_add_entrypoint("glGetTrackMatrixivNV", 587);
+ _glapi_add_entrypoint("glGetVertexAttribdvNV", 588);
+ _glapi_add_entrypoint("glGetVertexAttribfvNV", 589);
+ _glapi_add_entrypoint("glGetVertexAttribivNV", 590);
+ _glapi_add_entrypoint("glGetVertexAttribPointervNV", 591);
+ _glapi_add_entrypoint("glIsProgramNV", 592);
+ _glapi_add_entrypoint("glLoadProgramNV", 593);
+ _glapi_add_entrypoint("glProgramParameter4dNV", 594);
+ _glapi_add_entrypoint("glProgramParameter4dvNV", 595);
+ _glapi_add_entrypoint("glProgramParameter4fNV", 596);
+ _glapi_add_entrypoint("glProgramParameter4fvNV", 597);
+ _glapi_add_entrypoint("glProgramParameters4dvNV", 598);
+ _glapi_add_entrypoint("glProgramParameters4fvNV", 599);
+ _glapi_add_entrypoint("glRequestResidentProgramsNV", 600);
+ _glapi_add_entrypoint("glTrackMatrixNV", 601);
+ _glapi_add_entrypoint("glVertexAttribPointerNV", 602);
+ _glapi_add_entrypoint("glVertexAttrib1dNV", 603);
+ _glapi_add_entrypoint("glVertexAttrib1dvNV", 604);
+ _glapi_add_entrypoint("glVertexAttrib1fNV", 605);
+ _glapi_add_entrypoint("glVertexAttrib1fvNV", 606);
+ _glapi_add_entrypoint("glVertexAttrib1sNV", 607);
+ _glapi_add_entrypoint("glVertexAttrib1svNV", 608);
+ _glapi_add_entrypoint("glVertexAttrib2dNV", 609);
+ _glapi_add_entrypoint("glVertexAttrib2dvNV", 610);
+ _glapi_add_entrypoint("glVertexAttrib2fNV", 611);
+ _glapi_add_entrypoint("glVertexAttrib2fvNV", 612);
+ _glapi_add_entrypoint("glVertexAttrib2sNV", 613);
+ _glapi_add_entrypoint("glVertexAttrib2svNV", 614);
+ _glapi_add_entrypoint("glVertexAttrib3dNV", 615);
+ _glapi_add_entrypoint("glVertexAttrib3dvNV", 616);
+ _glapi_add_entrypoint("glVertexAttrib3fNV", 617);
+ _glapi_add_entrypoint("glVertexAttrib3fvNV", 618);
+ _glapi_add_entrypoint("glVertexAttrib3sNV", 619);
+ _glapi_add_entrypoint("glVertexAttrib3svNV", 620);
+ _glapi_add_entrypoint("glVertexAttrib4dNV", 621);
+ _glapi_add_entrypoint("glVertexAttrib4dvNV", 622);
+ _glapi_add_entrypoint("glVertexAttrib4fNV", 623);
+ _glapi_add_entrypoint("glVertexAttrib4fvNV", 624);
+ _glapi_add_entrypoint("glVertexAttrib4sNV", 625);
+ _glapi_add_entrypoint("glVertexAttrib4svNV", 626);
+ _glapi_add_entrypoint("glVertexAttrib4ubNV", 627);
+ _glapi_add_entrypoint("glVertexAttrib4ubvNV", 628);
+ _glapi_add_entrypoint("glVertexAttribs1dvNV", 629);
+ _glapi_add_entrypoint("glVertexAttribs1fvNV", 630);
+ _glapi_add_entrypoint("glVertexAttribs1svNV", 631);
+ _glapi_add_entrypoint("glVertexAttribs2dvNV", 632);
+ _glapi_add_entrypoint("glVertexAttribs2fvNV", 633);
+ _glapi_add_entrypoint("glVertexAttribs2svNV", 634);
+ _glapi_add_entrypoint("glVertexAttribs3dvNV", 635);
+ _glapi_add_entrypoint("glVertexAttribs3fvNV", 636);
+ _glapi_add_entrypoint("glVertexAttribs3svNV", 637);
+ _glapi_add_entrypoint("glVertexAttribs4dvNV", 638);
+ _glapi_add_entrypoint("glVertexAttribs4fvNV", 639);
+ _glapi_add_entrypoint("glVertexAttribs4svNV", 640);
+ _glapi_add_entrypoint("glVertexAttribs4ubvNV", 641);
+#endif
+ _glapi_add_entrypoint("glPointParameteriNV", 642);
+ _glapi_add_entrypoint("glPointParameterivNV", 643);
+ _glapi_add_entrypoint("glMultiDrawArraysEXT", 644);
+ _glapi_add_entrypoint("glMultiDrawElementsEXT", 645);
+ _glapi_add_entrypoint("glActiveStencilFaceEXT", 646);
+#if FEATURE_NV_fence
+ _glapi_add_entrypoint("glDeleteFencesNV", 647);
+ _glapi_add_entrypoint("glGenFencesNV", 648);
+ _glapi_add_entrypoint("glIsFenceNV", 649);
+ _glapi_add_entrypoint("glTestFenceNV", 650);
+ _glapi_add_entrypoint("glGetFenceivNV", 651);
+ _glapi_add_entrypoint("glFinishFenceNV", 652);
+ _glapi_add_entrypoint("glSetFenceNV", 653);
+#endif
+#if FEATURE_NV_fragment_program
+ _glapi_add_entrypoint("glProgramNamedParameter4fNV", 682);
+ _glapi_add_entrypoint("glProgramNamedParameter4dNV", 683);
+ _glapi_add_entrypoint("glProgramNamedParameter4fvNV", 683);
+ _glapi_add_entrypoint("glProgramNamedParameter4dvNV", 684);
+ _glapi_add_entrypoint("glGetProgramNamedParameterfvNV", 685);
+ _glapi_add_entrypoint("glGetProgramNamedParameterdvNV", 686);
+#endif
+#if FEATURE_ARB_vertex_program
+ _glapi_add_entrypoint("glVertexAttrib1sARB", _gloffset_VertexAttrib1sNV);
+ _glapi_add_entrypoint("glVertexAttrib1fARB", _gloffset_VertexAttrib1fNV);
+ _glapi_add_entrypoint("glVertexAttrib1dARB", _gloffset_VertexAttrib1dNV);
+ _glapi_add_entrypoint("glVertexAttrib2sARB", _gloffset_VertexAttrib2sNV);
+ _glapi_add_entrypoint("glVertexAttrib2fARB", _gloffset_VertexAttrib2fNV);
+ _glapi_add_entrypoint("glVertexAttrib2dARB", _gloffset_VertexAttrib2dNV);
+ _glapi_add_entrypoint("glVertexAttrib3sARB", _gloffset_VertexAttrib3sNV);
+ _glapi_add_entrypoint("glVertexAttrib3fARB", _gloffset_VertexAttrib3fNV);
+ _glapi_add_entrypoint("glVertexAttrib3dARB", _gloffset_VertexAttrib3dNV);
+ _glapi_add_entrypoint("glVertexAttrib4sARB", _gloffset_VertexAttrib4sNV);
+ _glapi_add_entrypoint("glVertexAttrib4fARB", _gloffset_VertexAttrib4fNV);
+ _glapi_add_entrypoint("glVertexAttrib4dARB", _gloffset_VertexAttrib4dNV);
+ _glapi_add_entrypoint("glVertexAttrib4NubARB", _gloffset_VertexAttrib4ubNV);
+ _glapi_add_entrypoint("glVertexAttrib1svARB", _gloffset_VertexAttrib1svNV);
+ _glapi_add_entrypoint("glVertexAttrib1fvARB", _gloffset_VertexAttrib1fvNV);
+ _glapi_add_entrypoint("glVertexAttrib1dvARB", _gloffset_VertexAttrib1dvNV);
+ _glapi_add_entrypoint("glVertexAttrib2svARB", _gloffset_VertexAttrib2svNV);
+ _glapi_add_entrypoint("glVertexAttrib2fvARB", _gloffset_VertexAttrib2fvNV);
+ _glapi_add_entrypoint("glVertexAttrib2dvARB", _gloffset_VertexAttrib2dvNV);
+ _glapi_add_entrypoint("glVertexAttrib3svARB", _gloffset_VertexAttrib3svNV);
+ _glapi_add_entrypoint("glVertexAttrib3fvARB", _gloffset_VertexAttrib3fvNV);
+ _glapi_add_entrypoint("glVertexAttrib3dvARB", _gloffset_VertexAttrib3dvNV);
+ _glapi_add_entrypoint("glVertexAttrib4bvARB", _gloffset_VertexAttrib4bvARB);
+ _glapi_add_entrypoint("glVertexAttrib4svARB", _gloffset_VertexAttrib4svNV);
+ _glapi_add_entrypoint("glVertexAttrib4ivARB", _gloffset_VertexAttrib4ivARB);
+ _glapi_add_entrypoint("glVertexAttrib4ubvARB", _gloffset_VertexAttrib4ubvARB);
+ _glapi_add_entrypoint("glVertexAttrib4usvARB", _gloffset_VertexAttrib4usvARB);
+ _glapi_add_entrypoint("glVertexAttrib4uivARB", _gloffset_VertexAttrib4uivARB);
+ _glapi_add_entrypoint("glVertexAttrib4fvARB", _gloffset_VertexAttrib4fvNV);
+ _glapi_add_entrypoint("glVertexAttrib4dvARB", _gloffset_VertexAttrib4dvNV);
+ _glapi_add_entrypoint("glVertexAttrib4NbvARB", _gloffset_VertexAttrib4NbvARB);
+ _glapi_add_entrypoint("glVertexAttrib4NsvARB", _gloffset_VertexAttrib4NsvARB);
+ _glapi_add_entrypoint("glVertexAttrib4NivARB", _gloffset_VertexAttrib4NivARB);
+ _glapi_add_entrypoint("glVertexAttrib4NubvARB", _gloffset_VertexAttrib4ubvNV);
+ _glapi_add_entrypoint("glVertexAttrib4NusvARB", _gloffset_VertexAttrib4NusvARB);
+ _glapi_add_entrypoint("glVertexAttrib4NuivARB", _gloffset_VertexAttrib4NuivARB);
+ _glapi_add_entrypoint("glVertexAttribPointerARB", _gloffset_VertexAttribPointerARB);
+ _glapi_add_entrypoint("glEnableVertexAttribArrayARB", _gloffset_EnableVertexAttribArrayARB);
+ _glapi_add_entrypoint("glDisableVertexAttribArrayARB", _gloffset_DisableVertexAttribArrayARB);
+ _glapi_add_entrypoint("glProgramStringARB", _gloffset_ProgramStringARB);
+ _glapi_add_entrypoint("glBindProgramARB", _gloffset_BindProgramNV);
+ _glapi_add_entrypoint("glDeleteProgramsARB", _gloffset_DeleteProgramsNV);
+ _glapi_add_entrypoint("glGenProgramsARB", _gloffset_GenProgramsNV);
+ _glapi_add_entrypoint("glIsProgramARB", _gloffset_IsProgramNV);
+ _glapi_add_entrypoint("glProgramEnvParameter4dARB", _gloffset_ProgramEnvParameter4dARB);
+ _glapi_add_entrypoint("glProgramEnvParameter4dvARB", _gloffset_ProgramEnvParameter4dvARB);
+ _glapi_add_entrypoint("glProgramEnvParameter4fARB", _gloffset_ProgramEnvParameter4fARB);
+ _glapi_add_entrypoint("glProgramEnvParameter4fvARB", _gloffset_ProgramEnvParameter4fvARB);
+ _glapi_add_entrypoint("glProgramLocalParameter4dARB", _gloffset_ProgramLocalParameter4dARB);
+ _glapi_add_entrypoint("glProgramLocalParameter4dvARB", _gloffset_ProgramLocalParameter4dvARB);
+ _glapi_add_entrypoint("glProgramLocalParameter4fARB", _gloffset_ProgramLocalParameter4fARB);
+ _glapi_add_entrypoint("glProgramLocalParameter4fvARB", _gloffset_ProgramLocalParameter4fvARB);
+ _glapi_add_entrypoint("glGetProgramEnvParameterdvARB", _gloffset_GetProgramEnvParameterdvARB);
+ _glapi_add_entrypoint("glGetProgramEnvParameterfvARB", _gloffset_GetProgramEnvParameterfvARB);
+ _glapi_add_entrypoint("glGetProgramLocalParameterdvARB", _gloffset_GetProgramLocalParameterdvARB);
+ _glapi_add_entrypoint("glGetProgramLocalParameterfvARB", _gloffset_GetProgramLocalParameterfvARB);
+ _glapi_add_entrypoint("glGetProgramivARB", _gloffset_GetProgramivARB);
+ _glapi_add_entrypoint("glGetProgramStringARB", _gloffset_GetProgramStringARB);
+ _glapi_add_entrypoint("glGetVertexAttribdvARB", _gloffset_GetVertexAttribdvNV);
+ _glapi_add_entrypoint("glGetVertexAttribfvARB", _gloffset_GetVertexAttribfvNV);
+ _glapi_add_entrypoint("glGetVertexAttribivARB", _gloffset_GetVertexAttribivNV);
+ _glapi_add_entrypoint("glGetVertexAttribPointervARB", _gloffset_GetVertexAttribPointervNV);
+#endif
+}
+
/**
* Initialize a GLcontext struct.
@@ -1198,87 +1379,8 @@
return GL_FALSE;
}
-
- /* TODO: move this to somewhere program-specific.
- */
- _glapi_add_entrypoint("glAreProgramsResidentNV", 578);
- _glapi_add_entrypoint("glBindProgramNV", 579);
- _glapi_add_entrypoint("glDeleteProgramsNV", 580);
- _glapi_add_entrypoint("glExecuteProgramNV", 581);
- _glapi_add_entrypoint("glGenProgramsNV", 582);
- _glapi_add_entrypoint("glGetProgramParameterdvNV", 583);
- _glapi_add_entrypoint("glGetProgramParameterfvNV", 584);
- _glapi_add_entrypoint("glGetProgramivNV", 585);
- _glapi_add_entrypoint("glGetProgramStringNV", 586);
- _glapi_add_entrypoint("glGetTrackMatrixivNV", 587);
- _glapi_add_entrypoint("glGetVertexAttribdvNV", 588);
- _glapi_add_entrypoint("glGetVertexAttribfvNV", 589);
- _glapi_add_entrypoint("glGetVertexAttribivNV", 590);
- _glapi_add_entrypoint("glGetVertexAttribPointervNV", 591);
- _glapi_add_entrypoint("glIsProgramNV", 592);
- _glapi_add_entrypoint("glLoadProgramNV", 593);
- _glapi_add_entrypoint("glProgramParameter4dNV", 594);
- _glapi_add_entrypoint("glProgramParameter4dvNV", 595);
- _glapi_add_entrypoint("glProgramParameter4fNV", 596);
- _glapi_add_entrypoint("glProgramParameter4fvNV", 597);
- _glapi_add_entrypoint("glProgramParameters4dvNV", 598);
- _glapi_add_entrypoint("glProgramParameters4fvNV", 599);
- _glapi_add_entrypoint("glRequestResidentProgramsNV", 600);
- _glapi_add_entrypoint("glTrackMatrixNV", 601);
- _glapi_add_entrypoint("glVertexAttribPointerNV", 602);
- _glapi_add_entrypoint("glVertexAttrib1dNV", 603);
- _glapi_add_entrypoint("glVertexAttrib1dvNV", 604);
- _glapi_add_entrypoint("glVertexAttrib1fNV", 605);
- _glapi_add_entrypoint("glVertexAttrib1fvNV", 606);
- _glapi_add_entrypoint("glVertexAttrib1sNV", 607);
- _glapi_add_entrypoint("glVertexAttrib1svNV", 608);
- _glapi_add_entrypoint("glVertexAttrib2dNV", 609);
- _glapi_add_entrypoint("glVertexAttrib2dvNV", 610);
- _glapi_add_entrypoint("glVertexAttrib2fNV", 611);
- _glapi_add_entrypoint("glVertexAttrib2fvNV", 612);
- _glapi_add_entrypoint("glVertexAttrib2sNV", 613);
- _glapi_add_entrypoint("glVertexAttrib2svNV", 614);
- _glapi_add_entrypoint("glVertexAttrib3dNV", 615);
- _glapi_add_entrypoint("glVertexAttrib3dvNV", 616);
- _glapi_add_entrypoint("glVertexAttrib3fNV", 617);
- _glapi_add_entrypoint("glVertexAttrib3fvNV", 618);
- _glapi_add_entrypoint("glVertexAttrib3sNV", 619);
- _glapi_add_entrypoint("glVertexAttrib3svNV", 620);
- _glapi_add_entrypoint("glVertexAttrib4dNV", 621);
- _glapi_add_entrypoint("glVertexAttrib4dvNV", 622);
- _glapi_add_entrypoint("glVertexAttrib4fNV", 623);
- _glapi_add_entrypoint("glVertexAttrib4fvNV", 624);
- _glapi_add_entrypoint("glVertexAttrib4sNV", 625);
- _glapi_add_entrypoint("glVertexAttrib4svNV", 626);
- _glapi_add_entrypoint("glVertexAttrib4ubNV", 627);
- _glapi_add_entrypoint("glVertexAttrib4ubvNV", 628);
- _glapi_add_entrypoint("glVertexAttribs1dvNV", 629);
- _glapi_add_entrypoint("glVertexAttribs1fvNV", 630);
- _glapi_add_entrypoint("glVertexAttribs1svNV", 631);
- _glapi_add_entrypoint("glVertexAttribs2dvNV", 632);
- _glapi_add_entrypoint("glVertexAttribs2fvNV", 633);
- _glapi_add_entrypoint("glVertexAttribs2svNV", 634);
- _glapi_add_entrypoint("glVertexAttribs3dvNV", 635);
- _glapi_add_entrypoint("glVertexAttribs3fvNV", 636);
- _glapi_add_entrypoint("glVertexAttribs3svNV", 637);
- _glapi_add_entrypoint("glVertexAttribs4dvNV", 638);
- _glapi_add_entrypoint("glVertexAttribs4fvNV", 639);
- _glapi_add_entrypoint("glVertexAttribs4svNV", 640);
- _glapi_add_entrypoint("glVertexAttribs4ubvNV", 641);
- _glapi_add_entrypoint("glPointParameteriNV", 642);
- _glapi_add_entrypoint("glPointParameterivNV", 643);
- _glapi_add_entrypoint("glMultiDrawArraysEXT", 644);
- _glapi_add_entrypoint("glMultiDrawElementsEXT", 645);
- _glapi_add_entrypoint("glActiveStencilFaceEXT", 646);
- _glapi_add_entrypoint("glDeleteFencesNV", 647);
- _glapi_add_entrypoint("glGenFencesNV", 648);
- _glapi_add_entrypoint("glIsFenceNV", 649);
- _glapi_add_entrypoint("glTestFenceNV", 650);
- _glapi_add_entrypoint("glGetFenceivNV", 651);
- _glapi_add_entrypoint("glFinishFenceNV", 652);
- _glapi_add_entrypoint("glSetFenceNV", 653);
- /* XXX add NV_fragment_program and ARB_vertex_program functions */
-
+ /* libGL ABI coordination */
+ add_newer_entrypoints();
/* Find the larger of Mesa's dispatch table and libGL's dispatch table.
* In practice, this'll be the same for stand-alone Mesa. But for DRI