From c212abf99af494f024b0b981a83350f7ac9821ef Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 30 Jun 2005 16:00:48 +0000 Subject: Replace add_newer_entrypoints (src/mesa/main/context.c) with device-specific code. A new Python script (src/mesa/glapi/extension_helper.py) generates a list of all entry-points for all known extensions. Each driver the selects only the extensions that it needs and enables the via either driInitExtensions or driInitSingleExtension. This code has been compile-tested on a drivers, but has only been run-tested on mga and i915 (on i830 hardware). These changes were discussed at length on the mesa3d-dev mailing list. http://marc.theaimsgroup.com/?t=111947074700001&r=1&w=2 --- src/mesa/main/context.c | 221 ------------------------------------------------ 1 file changed, 221 deletions(-) (limited to 'src/mesa/main/context.c') diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 588ef969f3..2c444c80d8 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -1087,224 +1087,6 @@ init_attrib_groups( GLcontext *ctx ) } -/** - * 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) -{ - unsigned i; - static const struct { - const char * const name; - unsigned offset; - } - newer_entrypoints[] = { - /* GL_ARB_window_pos aliases with GL_MESA_window_pos */ - { "glWindowPos2dARB", 513 }, - { "glWindowPos2dvARB", 514 }, - { "glWindowPos2fARB", 515 }, - { "glWindowPos2fvARB", 516 }, - { "glWindowPos2iARB", 517 }, - { "glWindowPos2ivARB", 518 }, - { "glWindowPos2sARB", 519 }, - { "glWindowPos2svARB", 520 }, - { "glWindowPos3dARB", 521 }, - { "glWindowPos3dvARB", 522 }, - { "glWindowPos3fARB", 523 }, - { "glWindowPos3fvARB", 524 }, - { "glWindowPos3iARB", 525 }, - { "glWindowPos3ivARB", 526 }, - { "glWindowPos3sARB", 527 }, - { "glWindowPos3svARB", 528 }, -#if FEATURE_NV_vertex_program - { "glAreProgramsResidentNV", 578 }, - { "glBindProgramNV", 579 }, - { "glDeleteProgramsNV", 580 }, - { "glExecuteProgramNV", 581 }, - { "glGenProgramsNV", 582 }, - { "glGetProgramParameterdvNV", 583 }, - { "glGetProgramParameterfvNV", 584 }, - { "glGetProgramivNV", 585 }, - { "glGetProgramStringNV", 586 }, - { "glGetTrackMatrixivNV", 587 }, - { "glGetVertexAttribdvNV", 588 }, - { "glGetVertexAttribfvNV", 589 }, - { "glGetVertexAttribivNV", 590 }, - { "glGetVertexAttribPointervNV", 591 }, - { "glIsProgramNV", 592 }, - { "glLoadProgramNV", 593 }, - { "glProgramParameter4dNV", 594 }, - { "glProgramParameter4dvNV", 595 }, - { "glProgramParameter4fNV", 596 }, - { "glProgramParameter4fvNV", 597 }, - { "glProgramParameters4dvNV", 598 }, - { "glProgramParameters4fvNV", 599 }, - { "glRequestResidentProgramsNV", 600 }, - { "glTrackMatrixNV", 601 }, - { "glVertexAttribPointerNV", 602 }, - { "glVertexAttrib1dNV", 603 }, - { "glVertexAttrib1dvNV", 604 }, - { "glVertexAttrib1fNV", 605 }, - { "glVertexAttrib1fvNV", 606 }, - { "glVertexAttrib1sNV", 607 }, - { "glVertexAttrib1svNV", 608 }, - { "glVertexAttrib2dNV", 609 }, - { "glVertexAttrib2dvNV", 610 }, - { "glVertexAttrib2fNV", 611 }, - { "glVertexAttrib2fvNV", 612 }, - { "glVertexAttrib2sNV", 613 }, - { "glVertexAttrib2svNV", 614 }, - { "glVertexAttrib3dNV", 615 }, - { "glVertexAttrib3dvNV", 616 }, - { "glVertexAttrib3fNV", 617 }, - { "glVertexAttrib3fvNV", 618 }, - { "glVertexAttrib3sNV", 619 }, - { "glVertexAttrib3svNV", 620 }, - { "glVertexAttrib4dNV", 621 }, - { "glVertexAttrib4dvNV", 622 }, - { "glVertexAttrib4fNV", 623 }, - { "glVertexAttrib4fvNV", 624 }, - { "glVertexAttrib4sNV", 625 }, - { "glVertexAttrib4svNV", 626 }, - { "glVertexAttrib4ubNV", 627 }, - { "glVertexAttrib4ubvNV", 628 }, - { "glVertexAttribs1dvNV", 629 }, - { "glVertexAttribs1fvNV", 630 }, - { "glVertexAttribs1svNV", 631 }, - { "glVertexAttribs2dvNV", 632 }, - { "glVertexAttribs2fvNV", 633 }, - { "glVertexAttribs2svNV", 634 }, - { "glVertexAttribs3dvNV", 635 }, - { "glVertexAttribs3fvNV", 636 }, - { "glVertexAttribs3svNV", 637 }, - { "glVertexAttribs4dvNV", 638 }, - { "glVertexAttribs4fvNV", 639 }, - { "glVertexAttribs4svNV", 640 }, - { "glVertexAttribs4ubvNV", 641 }, -#endif - { "glPointParameteriNV", 642 }, - { "glPointParameterivNV", 643 }, - { "glMultiDrawArraysEXT", 644 }, - { "glMultiDrawElementsEXT", 645 }, - { "glMultiDrawArraysSUN", _gloffset_MultiDrawArraysEXT }, - { "glMultiDrawElementsSUN", _gloffset_MultiDrawElementsEXT }, - { "glActiveStencilFaceEXT", 646 }, -#if FEATURE_NV_fence - { "glDeleteFencesNV", 647 }, - { "glGenFencesNV", 648 }, - { "glIsFenceNV", 649 }, - { "glTestFenceNV", 650 }, - { "glGetFenceivNV", 651 }, - { "glFinishFenceNV", 652 }, - { "glSetFenceNV", 653 }, -#endif -#if FEATURE_NV_fragment_program - { "glProgramNamedParameter4fNV", 682 }, - { "glProgramNamedParameter4dNV", 683 }, - { "glProgramNamedParameter4fvNV", 683 }, - { "glProgramNamedParameter4dvNV", 684 }, - { "glGetProgramNamedParameterfvNV", 685 }, - { "glGetProgramNamedParameterdvNV", 686 }, -#endif -#if FEATURE_ARB_vertex_program - { "glVertexAttrib1sARB", _gloffset_VertexAttrib1sNV }, - { "glVertexAttrib1fARB", _gloffset_VertexAttrib1fNV }, - { "glVertexAttrib1dARB", _gloffset_VertexAttrib1dNV }, - { "glVertexAttrib2sARB", _gloffset_VertexAttrib2sNV }, - { "glVertexAttrib2fARB", _gloffset_VertexAttrib2fNV }, - { "glVertexAttrib2dARB", _gloffset_VertexAttrib2dNV }, - { "glVertexAttrib3sARB", _gloffset_VertexAttrib3sNV }, - { "glVertexAttrib3fARB", _gloffset_VertexAttrib3fNV }, - { "glVertexAttrib3dARB", _gloffset_VertexAttrib3dNV }, - { "glVertexAttrib4sARB", _gloffset_VertexAttrib4sNV }, - { "glVertexAttrib4fARB", _gloffset_VertexAttrib4fNV }, - { "glVertexAttrib4dARB", _gloffset_VertexAttrib4dNV }, - { "glVertexAttrib4NubARB", _gloffset_VertexAttrib4ubNV }, - { "glVertexAttrib1svARB", _gloffset_VertexAttrib1svNV }, - { "glVertexAttrib1fvARB", _gloffset_VertexAttrib1fvNV }, - { "glVertexAttrib1dvARB", _gloffset_VertexAttrib1dvNV }, - { "glVertexAttrib2svARB", _gloffset_VertexAttrib2svNV }, - { "glVertexAttrib2fvARB", _gloffset_VertexAttrib2fvNV }, - { "glVertexAttrib2dvARB", _gloffset_VertexAttrib2dvNV }, - { "glVertexAttrib3svARB", _gloffset_VertexAttrib3svNV }, - { "glVertexAttrib3fvARB", _gloffset_VertexAttrib3fvNV }, - { "glVertexAttrib3dvARB", _gloffset_VertexAttrib3dvNV }, - { "glVertexAttrib4bvARB", _gloffset_VertexAttrib4bvARB }, - { "glVertexAttrib4svARB", _gloffset_VertexAttrib4svNV }, - { "glVertexAttrib4ivARB", _gloffset_VertexAttrib4ivARB }, - { "glVertexAttrib4ubvARB", _gloffset_VertexAttrib4ubvARB }, - { "glVertexAttrib4usvARB", _gloffset_VertexAttrib4usvARB }, - { "glVertexAttrib4uivARB", _gloffset_VertexAttrib4uivARB }, - { "glVertexAttrib4fvARB", _gloffset_VertexAttrib4fvNV }, - { "glVertexAttrib4dvARB", _gloffset_VertexAttrib4dvNV }, - { "glVertexAttrib4NbvARB", _gloffset_VertexAttrib4NbvARB }, - { "glVertexAttrib4NsvARB", _gloffset_VertexAttrib4NsvARB }, - { "glVertexAttrib4NivARB", _gloffset_VertexAttrib4NivARB }, - { "glVertexAttrib4NubvARB", _gloffset_VertexAttrib4ubvNV }, - { "glVertexAttrib4NusvARB", _gloffset_VertexAttrib4NusvARB }, - { "glVertexAttrib4NuivARB", _gloffset_VertexAttrib4NuivARB }, - { "glVertexAttribPointerARB", _gloffset_VertexAttribPointerARB }, - { "glEnableVertexAttribArrayARB", _gloffset_EnableVertexAttribArrayARB }, - { "glDisableVertexAttribArrayARB", _gloffset_DisableVertexAttribArrayARB }, - { "glProgramStringARB", _gloffset_ProgramStringARB }, - { "glBindProgramARB", _gloffset_BindProgramNV }, - { "glDeleteProgramsARB", _gloffset_DeleteProgramsNV }, - { "glGenProgramsARB", _gloffset_GenProgramsNV }, - { "glIsProgramARB", _gloffset_IsProgramNV }, - { "glProgramEnvParameter4dARB", _gloffset_ProgramEnvParameter4dARB }, - { "glProgramEnvParameter4dvARB", _gloffset_ProgramEnvParameter4dvARB }, - { "glProgramEnvParameter4fARB", _gloffset_ProgramEnvParameter4fARB }, - { "glProgramEnvParameter4fvARB", _gloffset_ProgramEnvParameter4fvARB }, - { "glProgramLocalParameter4dARB", _gloffset_ProgramLocalParameter4dARB }, - { "glProgramLocalParameter4dvARB", _gloffset_ProgramLocalParameter4dvARB }, - { "glProgramLocalParameter4fARB", _gloffset_ProgramLocalParameter4fARB }, - { "glProgramLocalParameter4fvARB", _gloffset_ProgramLocalParameter4fvARB }, - { "glGetProgramEnvParameterdvARB", _gloffset_GetProgramEnvParameterdvARB }, - { "glGetProgramEnvParameterfvARB", _gloffset_GetProgramEnvParameterfvARB }, - { "glGetProgramLocalParameterdvARB", _gloffset_GetProgramLocalParameterdvARB }, - { "glGetProgramLocalParameterfvARB", _gloffset_GetProgramLocalParameterfvARB }, - { "glGetProgramivARB", _gloffset_GetProgramivARB }, - { "glGetProgramStringARB", _gloffset_GetProgramStringARB }, - { "glGetVertexAttribdvARB", _gloffset_GetVertexAttribdvNV }, - { "glGetVertexAttribfvARB", _gloffset_GetVertexAttribfvNV }, - { "glGetVertexAttribivARB", _gloffset_GetVertexAttribivNV }, - { "glGetVertexAttribPointervARB", _gloffset_GetVertexAttribPointervNV }, -#endif - { "glMultiModeDrawArraysIBM", _gloffset_MultiModeDrawArraysIBM }, - { "glMultiModeDrawElementsIBM", _gloffset_MultiModeDrawElementsIBM }, - /* GL_EXT_stencil_two_side */ - { "glActiveStencilFaceEXT", _gloffset_ActiveStencilFaceEXT }, - /* GL_ARB_draw_buffers */ - { "glDrawBuffersARB", _gloffset_DrawBuffersARB }, -#if FEATURE_ATI_fragment_shader - { "glGenFragmentShadersATI", _gloffset_GenFragmentShadersATI }, - { "glBindFragmentShaderATI", _gloffset_BindFragmentShaderATI }, - { "glDeleteFragmentShaderATI", _gloffset_DeleteFragmentShaderATI }, - { "glBeginFragmentShaderATI", _gloffset_BeginFragmentShaderATI }, - { "glEndFragmentShaderATI", _gloffset_EndFragmentShaderATI }, - { "glPassTexCoordATI", _gloffset_PassTexCoordATI }, - { "glSampleMapATI", _gloffset_SampleMapATI }, - { "glColorFragmentOp1ATI", _gloffset_ColorFragmentOp1ATI }, - { "glColorFragmentOp2ATI", _gloffset_ColorFragmentOp2ATI }, - { "glColorFragmentOp3ATI", _gloffset_ColorFragmentOp3ATI }, - { "glAlphaFragmentOp1ATI", _gloffset_AlphaFragmentOp1ATI }, - { "glAlphaFragmentOp2ATI", _gloffset_AlphaFragmentOp2ATI }, - { "glAlphaFragmentOp3ATI", _gloffset_AlphaFragmentOp3ATI }, - { "glSetFragmentShaderConstantATI", _gloffset_SetFragmentShaderConstantATI }, -#endif - }; - - for (i = 0; i < Elements(newer_entrypoints); i++ ) { - _glapi_add_entrypoint( newer_entrypoints[i].name, - newer_entrypoints[i].offset ); - } -} - - /** * This is the default function we plug into all dispatch table slots * This helps prevents a segfault when someone calls a GL function without @@ -1425,9 +1207,6 @@ _mesa_initialize_context( GLcontext *ctx, return GL_FALSE; } - /* libGL ABI coordination */ - add_newer_entrypoints(); - /* setup the API dispatch tables */ ctx->Exec = alloc_dispatch_table(); ctx->Save = alloc_dispatch_table(); -- cgit v1.2.3