LWJGL now ignores OpenGL extensions with missing symbols

This commit is contained in:
Elias Naur 2003-09-22 08:31:51 +00:00
parent 8eb376ca5d
commit 5801ddf254
1 changed files with 71 additions and 19 deletions

View File

@ -1363,6 +1363,12 @@ void * lib_glu_handle = NULL;
CFBundleRef gBundleRefOpenGL = NULL; CFBundleRef gBundleRefOpenGL = NULL;
#endif #endif
#define EXTGL_SANITY_CHECK(x) if (extgl_error != 0) { \
extgl_Extensions.x = 0; \
printf("NOTICE: %s disabled because of missing driver symbols\n", #x); \
extgl_error = 0; \
}
#ifdef _AGL #ifdef _AGL
// ------------------------- // -------------------------
OSStatus aglInitEntryPoints (void) OSStatus aglInitEntryPoints (void)
@ -1743,6 +1749,7 @@ static void extgl_InitARBFragmentProgram()
glGetProgramivARB = (glGetProgramivARBPROC) extgl_GetProcAddress("glGetProgramivARB"); glGetProgramivARB = (glGetProgramivARBPROC) extgl_GetProcAddress("glGetProgramivARB");
glGetProgramStringARB = (glGetProgramStringARBPROC) extgl_GetProcAddress("glGetProgramStringARB"); glGetProgramStringARB = (glGetProgramStringARBPROC) extgl_GetProcAddress("glGetProgramStringARB");
glIsProgramARB = (glIsProgramARBPROC) extgl_GetProcAddress("glIsProgramARB"); glIsProgramARB = (glIsProgramARBPROC) extgl_GetProcAddress("glIsProgramARB");
EXTGL_SANITY_CHECK(ARB_fragment_program)
#endif #endif
} }
@ -1753,6 +1760,7 @@ static void extgl_InitNVPrimitiveRestart()
return; return;
glPrimitiveRestartNV = (glPrimitiveRestartNVPROC) extgl_GetProcAddress("glPrimitiveRestartNV"); glPrimitiveRestartNV = (glPrimitiveRestartNVPROC) extgl_GetProcAddress("glPrimitiveRestartNV");
glPrimitiveRestartIndexNV = (glPrimitiveRestartIndexNVPROC) extgl_GetProcAddress("glPrimitiveRestartIndexNV"); glPrimitiveRestartIndexNV = (glPrimitiveRestartIndexNVPROC) extgl_GetProcAddress("glPrimitiveRestartIndexNV");
EXTGL_SANITY_CHECK(NV_primitive_restart)
#endif /* GL_NV_primitive_restart */ #endif /* GL_NV_primitive_restart */
} }
@ -1775,6 +1783,7 @@ static void extgl_InitNVFragmentProgram()
glGetProgramLocalParameterdvARB = (glGetProgramLocalParameterdvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterdvARB"); glGetProgramLocalParameterdvARB = (glGetProgramLocalParameterdvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterdvARB");
glGetProgramLocalParameterfvARB = (glGetProgramLocalParameterfvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterfvARB"); glGetProgramLocalParameterfvARB = (glGetProgramLocalParameterfvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterfvARB");
#endif /* GL_ARB_vertex_program */ #endif /* GL_ARB_vertex_program */
EXTGL_SANITY_CHECK(NV_fragment_program)
#endif /* GL_NV_fragment_program */ #endif /* GL_NV_fragment_program */
} }
@ -1788,6 +1797,7 @@ static void extgl_InitNVElementArray()
glDrawRangeElementArrayNV = (glDrawRangeElementArrayNVPROC) extgl_GetProcAddress("glDrawRangeElementArrayNV"); glDrawRangeElementArrayNV = (glDrawRangeElementArrayNVPROC) extgl_GetProcAddress("glDrawRangeElementArrayNV");
glMultiDrawElementArrayNV = (glMultiDrawElementArrayNVPROC) extgl_GetProcAddress("glMultiDrawElementArrayNV"); glMultiDrawElementArrayNV = (glMultiDrawElementArrayNVPROC) extgl_GetProcAddress("glMultiDrawElementArrayNV");
glMultiDrawRangeElementArrayNV = (glMultiDrawRangeElementArrayNVPROC) extgl_GetProcAddress("glMultiDrawRangeElementArrayNV"); glMultiDrawRangeElementArrayNV = (glMultiDrawRangeElementArrayNVPROC) extgl_GetProcAddress("glMultiDrawRangeElementArrayNV");
EXTGL_SANITY_CHECK(NV_element_array)
#endif #endif
} }
@ -1798,6 +1808,7 @@ static void extgl_InitEXTBlendFuncSeparate()
if (!extgl_Extensions.EXT_blend_func_separate) if (!extgl_Extensions.EXT_blend_func_separate)
return; return;
glBlendFuncSeparateEXT = (glBlendFuncSeparateEXTPROC) extgl_GetProcAddress("glBlendFuncSeparateEXT"); glBlendFuncSeparateEXT = (glBlendFuncSeparateEXTPROC) extgl_GetProcAddress("glBlendFuncSeparateEXT");
EXTGL_SANITY_CHECK(EXT_blend_func_separate)
#endif #endif
} }
@ -1808,6 +1819,7 @@ static void extgl_InitEXTCullVertex()
return; return;
glCullParameterfvEXT = (glCullParameterfvEXTPROC) extgl_GetProcAddress("glCullParameterfvEXT"); glCullParameterfvEXT = (glCullParameterfvEXTPROC) extgl_GetProcAddress("glCullParameterfvEXT");
glCullParameterdvEXT = (glCullParameterdvEXTPROC) extgl_GetProcAddress("glCullParameterdvEXT"); glCullParameterdvEXT = (glCullParameterdvEXTPROC) extgl_GetProcAddress("glCullParameterdvEXT");
EXTGL_SANITY_CHECK(EXT_cull_vertex)
#endif #endif
} }
@ -1827,6 +1839,7 @@ static void extgl_InitARBVertexBufferObject()
glUnmapBufferARB = (glUnmapBufferARBPROC) extgl_GetProcAddress("glUnmapBufferARB"); glUnmapBufferARB = (glUnmapBufferARBPROC) extgl_GetProcAddress("glUnmapBufferARB");
glGetBufferParameterivARB = (glGetBufferParameterivARBPROC) extgl_GetProcAddress("glGetBufferParameterivARB"); glGetBufferParameterivARB = (glGetBufferParameterivARBPROC) extgl_GetProcAddress("glGetBufferParameterivARB");
glGetBufferPointervARB = (glGetBufferPointervARBPROC) extgl_GetProcAddress("glGetBufferPointervARB"); glGetBufferPointervARB = (glGetBufferPointervARBPROC) extgl_GetProcAddress("glGetBufferPointervARB");
EXTGL_SANITY_CHECK(ARB_vertex_buffer_object)
#endif #endif
} }
@ -1897,6 +1910,7 @@ static void extgl_InitARBVertexProgram()
glGetVertexAttribivARB = (glGetVertexAttribivARBPROC) extgl_GetProcAddress("glGetVertexAttribivARB"); glGetVertexAttribivARB = (glGetVertexAttribivARBPROC) extgl_GetProcAddress("glGetVertexAttribivARB");
glGetVertexAttribPointervARB = (glGetVertexAttribPointervARBPROC) extgl_GetProcAddress("glGetVertexAttribPointervARB"); glGetVertexAttribPointervARB = (glGetVertexAttribPointervARBPROC) extgl_GetProcAddress("glGetVertexAttribPointervARB");
glIsProgramARB = (glIsProgramARBPROC) extgl_GetProcAddress("glIsProgramARB"); glIsProgramARB = (glIsProgramARBPROC) extgl_GetProcAddress("glIsProgramARB");
EXTGL_SANITY_CHECK(ARB_vertex_program)
#endif #endif
} }
@ -1906,6 +1920,7 @@ static void extgl_InitEXTStencilTwoSide()
if (!extgl_Extensions.EXT_stencil_two_side) if (!extgl_Extensions.EXT_stencil_two_side)
return; return;
glActiveStencilFaceEXT = (glActiveStencilFaceEXTPROC) extgl_GetProcAddress("glActiveStencilFaceEXT"); glActiveStencilFaceEXT = (glActiveStencilFaceEXTPROC) extgl_GetProcAddress("glActiveStencilFaceEXT");
EXTGL_SANITY_CHECK(EXT_stencil_two_side)
#endif #endif
} }
@ -1930,6 +1945,7 @@ static void extgl_InitARBWindowPos()
glWindowPos3fvARB = (glWindowPos3fvARBPROC) extgl_GetProcAddress("glWindowPos3fvARB"); glWindowPos3fvARB = (glWindowPos3fvARBPROC) extgl_GetProcAddress("glWindowPos3fvARB");
glWindowPos3ivARB = (glWindowPos3ivARBPROC) extgl_GetProcAddress("glWindowPos3ivARB"); glWindowPos3ivARB = (glWindowPos3ivARBPROC) extgl_GetProcAddress("glWindowPos3ivARB");
glWindowPos3svARB = (glWindowPos3svARBPROC) extgl_GetProcAddress("glWindowPos3svARB"); glWindowPos3svARB = (glWindowPos3svARBPROC) extgl_GetProcAddress("glWindowPos3svARB");
EXTGL_SANITY_CHECK(ARB_window_pos)
#endif #endif
} }
@ -1945,6 +1961,7 @@ static void extgl_InitARBTextureCompression()
glCompressedTexSubImage2DARB = (glCompressedTexSubImage2DARBPROC) extgl_GetProcAddress("glCompressedTexSubImage2DARB"); glCompressedTexSubImage2DARB = (glCompressedTexSubImage2DARBPROC) extgl_GetProcAddress("glCompressedTexSubImage2DARB");
glCompressedTexSubImage1DARB = (glCompressedTexSubImage1DARBPROC) extgl_GetProcAddress("glCompressedTexSubImage1DARB"); glCompressedTexSubImage1DARB = (glCompressedTexSubImage1DARBPROC) extgl_GetProcAddress("glCompressedTexSubImage1DARB");
glGetCompressedTexImageARB = (glGetCompressedTexImageARBPROC) extgl_GetProcAddress("glGetCompressedTexImageARB"); glGetCompressedTexImageARB = (glGetCompressedTexImageARBPROC) extgl_GetProcAddress("glGetCompressedTexImageARB");
EXTGL_SANITY_CHECK(ARB_texture_compression)
#endif #endif
} }
@ -1955,6 +1972,7 @@ static void extgl_InitNVPointSprite()
return; return;
glPointParameteriNV = (glPointParameteriNVPROC) extgl_GetProcAddress("glPointParameteriNV"); glPointParameteriNV = (glPointParameteriNVPROC) extgl_GetProcAddress("glPointParameteriNV");
glPointParameterivNV = (glPointParameterivNVPROC) extgl_GetProcAddress("glPointParameterivNV"); glPointParameterivNV = (glPointParameterivNVPROC) extgl_GetProcAddress("glPointParameterivNV");
EXTGL_SANITY_CHECK(NV_point_sprite)
#endif #endif
} }
@ -1970,6 +1988,7 @@ static void extgl_InitNVOcclusionQuery()
glEndOcclusionQueryNV = (glEndOcclusionQueryNVPROC) extgl_GetProcAddress("glEndOcclusionQueryNV"); glEndOcclusionQueryNV = (glEndOcclusionQueryNVPROC) extgl_GetProcAddress("glEndOcclusionQueryNV");
glGetOcclusionQueryivNV = (glGetOcclusionQueryivNVPROC) extgl_GetProcAddress("glGetOcclusionQueryivNV"); glGetOcclusionQueryivNV = (glGetOcclusionQueryivNVPROC) extgl_GetProcAddress("glGetOcclusionQueryivNV");
glGetOcclusionQueryuivNV = (glGetOcclusionQueryuivNVPROC) extgl_GetProcAddress("glGetOcclusionQueryuivNV"); glGetOcclusionQueryuivNV = (glGetOcclusionQueryuivNVPROC) extgl_GetProcAddress("glGetOcclusionQueryuivNV");
EXTGL_SANITY_CHECK(NV_occlusion_query)
#endif #endif
} }
@ -1990,6 +2009,7 @@ static void extgl_InitATIVertexArrayObject()
glVariantArrayObjectATI = (glVariantArrayObjectATIPROC) extgl_GetProcAddress("glVariantArrayObjectATI"); glVariantArrayObjectATI = (glVariantArrayObjectATIPROC) extgl_GetProcAddress("glVariantArrayObjectATI");
glGetVariantArrayObjectfvATI = (glGetVariantArrayObjectfvATIPROC) extgl_GetProcAddress("glGetVariantArrayObjectfvATI"); glGetVariantArrayObjectfvATI = (glGetVariantArrayObjectfvATIPROC) extgl_GetProcAddress("glGetVariantArrayObjectfvATI");
glGetVariantArrayObjectivATI = (glGetVariantArrayObjectivATIPROC) extgl_GetProcAddress("glGetVariantArrayObjectivATI"); glGetVariantArrayObjectivATI = (glGetVariantArrayObjectivATIPROC) extgl_GetProcAddress("glGetVariantArrayObjectivATI");
EXTGL_SANITY_CHECK(ATI_vertex_array_object)
#endif #endif
} }
@ -2035,6 +2055,7 @@ static void extgl_InitATIVertexStreams()
glNormalStream3fvATI = (glNormalStream3fvATIPROC) extgl_GetProcAddress("glNormalStream3fvATI"); glNormalStream3fvATI = (glNormalStream3fvATIPROC) extgl_GetProcAddress("glNormalStream3fvATI");
glNormalStream3dATI = (glNormalStream3dATIPROC) extgl_GetProcAddress("glNormalStream3dATI"); glNormalStream3dATI = (glNormalStream3dATIPROC) extgl_GetProcAddress("glNormalStream3dATI");
glNormalStream3dvATI = (glNormalStream3dvATIPROC) extgl_GetProcAddress("glNormalStream3dvATI"); glNormalStream3dvATI = (glNormalStream3dvATIPROC) extgl_GetProcAddress("glNormalStream3dvATI");
EXTGL_SANITY_CHECK(ATI_vertex_streams)
#endif #endif
} }
@ -2046,6 +2067,7 @@ static void extgl_InitATIElementArray()
glElementPointerATI = (glElementPointerATIPROC) extgl_GetProcAddress("glElementPointerATI"); glElementPointerATI = (glElementPointerATIPROC) extgl_GetProcAddress("glElementPointerATI");
glDrawElementArrayATI = (glDrawElementArrayATIPROC) extgl_GetProcAddress("glDrawElementArrayATI"); glDrawElementArrayATI = (glDrawElementArrayATIPROC) extgl_GetProcAddress("glDrawElementArrayATI");
glDrawRangeElementArrayATI = (glDrawRangeElementArrayATIPROC) extgl_GetProcAddress("glDrawRangeElementArrayATI"); glDrawRangeElementArrayATI = (glDrawRangeElementArrayATIPROC) extgl_GetProcAddress("glDrawRangeElementArrayATI");
EXTGL_SANITY_CHECK(ATI_element_array)
#endif #endif
} }
@ -2068,6 +2090,7 @@ static void extgl_InitATIFragmentShader()
glAlphaFragmentOp2ATI = (glAlphaFragmentOp2ATIPROC) extgl_GetProcAddress("glAlphaFragmentOp2ATI"); glAlphaFragmentOp2ATI = (glAlphaFragmentOp2ATIPROC) extgl_GetProcAddress("glAlphaFragmentOp2ATI");
glAlphaFragmentOp3ATI = (glAlphaFragmentOp3ATIPROC) extgl_GetProcAddress("glAlphaFragmentOp3ATI"); glAlphaFragmentOp3ATI = (glAlphaFragmentOp3ATIPROC) extgl_GetProcAddress("glAlphaFragmentOp3ATI");
glSetFragmentShaderConstantATI = (glSetFragmentShaderConstantATIPROC) extgl_GetProcAddress("glSetFragmentShaderConstantATI"); glSetFragmentShaderConstantATI = (glSetFragmentShaderConstantATIPROC) extgl_GetProcAddress("glSetFragmentShaderConstantATI");
EXTGL_SANITY_CHECK(ATI_fragment_shader)
#endif #endif
} }
@ -2081,6 +2104,7 @@ static void extgl_InitATIEnvmapBumpmap()
glTexBumpParameterfvATI = (glTexBumpParameterfvATIPROC) extgl_GetProcAddress("glTexBumpParameterfvATI"); glTexBumpParameterfvATI = (glTexBumpParameterfvATIPROC) extgl_GetProcAddress("glTexBumpParameterfvATI");
glGetTexBumpParameterivATI = (glGetTexBumpParameterivATIPROC) extgl_GetProcAddress("glGetTexBumpParameterivATI"); glGetTexBumpParameterivATI = (glGetTexBumpParameterivATIPROC) extgl_GetProcAddress("glGetTexBumpParameterivATI");
glGetTexBumpParameterfvATI = (glGetTexBumpParameterfvATIPROC) extgl_GetProcAddress("glGetTexBumpParameterfvATI"); glGetTexBumpParameterfvATI = (glGetTexBumpParameterfvATIPROC) extgl_GetProcAddress("glGetTexBumpParameterfvATI");
EXTGL_SANITY_CHECK(ATI_envmap_bumpmap)
#endif #endif
} }
@ -2131,6 +2155,7 @@ static void extgl_InitEXTVertexShader()
glGetLocalConstantBooleanvEXT = (glGetLocalConstantBooleanvEXTPROC) extgl_GetProcAddress("glGetLocalConstantBooleanvEXT"); glGetLocalConstantBooleanvEXT = (glGetLocalConstantBooleanvEXTPROC) extgl_GetProcAddress("glGetLocalConstantBooleanvEXT");
glGetLocalConstantIntegervEXT = (glGetLocalConstantIntegervEXTPROC) extgl_GetProcAddress("glGetLocalConstantIntegervEXT"); glGetLocalConstantIntegervEXT = (glGetLocalConstantIntegervEXTPROC) extgl_GetProcAddress("glGetLocalConstantIntegervEXT");
glGetLocalConstantFloatvEXT = (glGetLocalConstantFloatvEXTPROC) extgl_GetProcAddress("glGetLocalConstantFloatvEXT"); glGetLocalConstantFloatvEXT = (glGetLocalConstantFloatvEXTPROC) extgl_GetProcAddress("glGetLocalConstantFloatvEXT");
EXTGL_SANITY_CHECK(EXT_vertex_shader)
#endif #endif
} }
@ -2144,6 +2169,7 @@ static void extgl_InitARBMatrixPalette()
glMatrixIndexusvARB = (glMatrixIndexusvARBPROC) extgl_GetProcAddress("glMatrixIndexusvARB"); glMatrixIndexusvARB = (glMatrixIndexusvARBPROC) extgl_GetProcAddress("glMatrixIndexusvARB");
glMatrixIndexuivARB = (glMatrixIndexuivARBPROC) extgl_GetProcAddress("glMatrixIndexuivARB"); glMatrixIndexuivARB = (glMatrixIndexuivARBPROC) extgl_GetProcAddress("glMatrixIndexuivARB");
glMatrixIndexPointerARB = (glMatrixIndexPointerARBPROC) extgl_GetProcAddress("glMatrixIndexPointerARB"); glMatrixIndexPointerARB = (glMatrixIndexPointerARBPROC) extgl_GetProcAddress("glMatrixIndexPointerARB");
EXTGL_SANITY_CHECK(ARB_matrix_palette)
#endif #endif
} }
@ -2154,6 +2180,7 @@ static void extgl_InitEXTMultiDrawArrays()
return; return;
glMultiDrawArraysEXT = (glMultiDrawArraysEXTPROC) extgl_GetProcAddress("glMultiDrawArraysEXT"); glMultiDrawArraysEXT = (glMultiDrawArraysEXTPROC) extgl_GetProcAddress("glMultiDrawArraysEXT");
glMultiDrawElementsEXT = (glMultiDrawElementsEXTPROC) extgl_GetProcAddress("glMultiDrawElementsEXT"); glMultiDrawElementsEXT = (glMultiDrawElementsEXTPROC) extgl_GetProcAddress("glMultiDrawElementsEXT");
EXTGL_SANITY_CHECK(EXT_multi_draw_arrays)
#endif #endif
} }
@ -2172,6 +2199,7 @@ static void extgl_InitARBVertexBlend()
glWeightuivARB = (glWeightuivARBPROC) extgl_GetProcAddress("glWeightuivARB"); glWeightuivARB = (glWeightuivARBPROC) extgl_GetProcAddress("glWeightuivARB");
glWeightPointerARB = (glWeightPointerARBPROC) extgl_GetProcAddress("glWeightPointerARB"); glWeightPointerARB = (glWeightPointerARBPROC) extgl_GetProcAddress("glWeightPointerARB");
glVertexBlendARB = (glVertexBlendARBPROC) extgl_GetProcAddress("glVertexBlendARB"); glVertexBlendARB = (glVertexBlendARBPROC) extgl_GetProcAddress("glVertexBlendARB");
EXTGL_SANITY_CHECK(ARB_vertex_blend)
#endif #endif
} }
@ -2182,6 +2210,7 @@ static void extgl_InitARBPointParameters()
return; return;
glPointParameterfARB = (glPointParameterfARBPROC) extgl_GetProcAddress("glPointParameterfARB"); glPointParameterfARB = (glPointParameterfARBPROC) extgl_GetProcAddress("glPointParameterfARB");
glPointParameterfvARB = (glPointParameterfvARBPROC) extgl_GetProcAddress("glPointParameterfvARB"); glPointParameterfvARB = (glPointParameterfvARBPROC) extgl_GetProcAddress("glPointParameterfvARB");
EXTGL_SANITY_CHECK(ARB_point_parameters)
#endif #endif
} }
@ -2192,6 +2221,7 @@ static void extgl_InitATIPNTriangles()
return; return;
glPNTrianglesiATI = (glPNTrianglesiATIPROC) extgl_GetProcAddress("glPNTrianglesiATI"); glPNTrianglesiATI = (glPNTrianglesiATIPROC) extgl_GetProcAddress("glPNTrianglesiATI");
glPNTrianglesfATI = (glPNTrianglesfATIPROC) extgl_GetProcAddress("glPNTrianglesfATI"); glPNTrianglesfATI = (glPNTrianglesfATIPROC) extgl_GetProcAddress("glPNTrianglesfATI");
EXTGL_SANITY_CHECK(ATI_pn_triangles)
#endif #endif
} }
@ -2202,6 +2232,7 @@ static void extgl_InitATISeparateStencil()
return; return;
glStencilOpSeparateATI = (glStencilOpSeparateATIPROC)extgl_GetProcAddress("glStencilOpSeparateATI"); glStencilOpSeparateATI = (glStencilOpSeparateATIPROC)extgl_GetProcAddress("glStencilOpSeparateATI");
glStencilFuncSeparateATI = (glStencilFuncSeparateATIPROC)extgl_GetProcAddress("glStencilFuncSeparateATI"); glStencilFuncSeparateATI = (glStencilFuncSeparateATIPROC)extgl_GetProcAddress("glStencilFuncSeparateATI");
EXTGL_SANITY_CHECK(ATI_separate_stencil)
#endif #endif
} }
@ -2219,6 +2250,7 @@ static void extgl_InitNVEvaluators()
glGetMapAttribParameterivNV = (glGetMapAttribParameterivNVPROC) extgl_GetProcAddress("glGetMapAttribParameterivNV"); glGetMapAttribParameterivNV = (glGetMapAttribParameterivNVPROC) extgl_GetProcAddress("glGetMapAttribParameterivNV");
glGetMapAttribParameterfvNV = (glGetMapAttribParameterfvNVPROC) extgl_GetProcAddress("glGetMapAttribParameterfvNV"); glGetMapAttribParameterfvNV = (glGetMapAttribParameterfvNVPROC) extgl_GetProcAddress("glGetMapAttribParameterfvNV");
glEvalMapsNV = (glEvalMapsNVPROC) extgl_GetProcAddress("glEvalMapsNV"); glEvalMapsNV = (glEvalMapsNVPROC) extgl_GetProcAddress("glEvalMapsNV");
EXTGL_SANITY_CHECK(NV_evaluators)
#endif #endif
} }
@ -2229,6 +2261,7 @@ static void extgl_InitNVRegisterCombiners2()
return; return;
glCombinerStageParameterfvNV = (glCombinerStageParameterfvNVPROC) extgl_GetProcAddress("glCombinerStageParameterfvNV"); glCombinerStageParameterfvNV = (glCombinerStageParameterfvNVPROC) extgl_GetProcAddress("glCombinerStageParameterfvNV");
glGetCombinerStageParameterfvNV = (glGetCombinerStageParameterfvNVPROC) extgl_GetProcAddress("glGetCombinerStageParameterfvNV"); glGetCombinerStageParameterfvNV = (glGetCombinerStageParameterfvNVPROC) extgl_GetProcAddress("glGetCombinerStageParameterfvNV");
EXTGL_SANITY_CHECK(NV_register_combiners2)
#endif #endif
} }
@ -2244,6 +2277,7 @@ static void extgl_InitNVFence()
glFinishFenceNV = (glFinishFenceNVPROC) extgl_GetProcAddress("glFinishFenceNV"); glFinishFenceNV = (glFinishFenceNVPROC) extgl_GetProcAddress("glFinishFenceNV");
glIsFenceNV = (glIsFenceNVPROC) extgl_GetProcAddress("glIsFenceNV"); glIsFenceNV = (glIsFenceNVPROC) extgl_GetProcAddress("glIsFenceNV");
glGetFenceivNV = (glGetFenceivNVPROC) extgl_GetProcAddress("glGetFenceivNV"); glGetFenceivNV = (glGetFenceivNVPROC) extgl_GetProcAddress("glGetFenceivNV");
EXTGL_SANITY_CHECK(NV_fence)
#endif #endif
} }
@ -2316,6 +2350,7 @@ static void extgl_InitNVVertexProgram()
glVertexAttribs4fvNV = (glVertexAttribs4fvNVPROC) extgl_GetProcAddress("glVertexAttribs4fvNV"); glVertexAttribs4fvNV = (glVertexAttribs4fvNVPROC) extgl_GetProcAddress("glVertexAttribs4fvNV");
glVertexAttribs4dvNV = (glVertexAttribs4dvNVPROC) extgl_GetProcAddress("glVertexAttribs4dvNV"); glVertexAttribs4dvNV = (glVertexAttribs4dvNVPROC) extgl_GetProcAddress("glVertexAttribs4dvNV");
glVertexAttribs4ubvNV = (glVertexAttribs4ubvNVPROC) extgl_GetProcAddress("glVertexAttribs4ubvNV"); glVertexAttribs4ubvNV = (glVertexAttribs4ubvNVPROC) extgl_GetProcAddress("glVertexAttribs4ubvNV");
EXTGL_SANITY_CHECK(NV_vertex_program)
#endif #endif
} }
@ -2327,6 +2362,7 @@ static void extgl_InitEXTVertexWeighting()
glVertexWeightfEXT = (glVertexWeightfEXTPROC) extgl_GetProcAddress("glVertexWeightfEXT"); glVertexWeightfEXT = (glVertexWeightfEXTPROC) extgl_GetProcAddress("glVertexWeightfEXT");
glVertexWeightfvEXT = (glVertexWeightfvEXTPROC) extgl_GetProcAddress("glVertexWeightfvEXT"); glVertexWeightfvEXT = (glVertexWeightfvEXTPROC) extgl_GetProcAddress("glVertexWeightfvEXT");
glVertexWeightPointerEXT = (glVertexWeightPointerEXTPROC) extgl_GetProcAddress("glVertexWeightPointerEXT"); glVertexWeightPointerEXT = (glVertexWeightPointerEXTPROC) extgl_GetProcAddress("glVertexWeightPointerEXT");
EXTGL_SANITY_CHECK(EXT_vertex_weighting)
#endif #endif
} }
@ -2336,6 +2372,7 @@ static void extgl_InitARBMultisample()
if (!extgl_Extensions.ARB_multisample) if (!extgl_Extensions.ARB_multisample)
return; return;
glSampleCoverageARB = (glSampleCoverageARBPROC) extgl_GetProcAddress("glSampleCoverageARB"); glSampleCoverageARB = (glSampleCoverageARBPROC) extgl_GetProcAddress("glSampleCoverageARB");
EXTGL_SANITY_CHECK(ARB_multisample)
#endif #endif
} }
@ -2357,6 +2394,7 @@ static void extgl_InitNVRegisterCombiners()
glGetCombinerOutputParameterivNV = (glGetCombinerOutputParameterivNVPROC) extgl_GetProcAddress("glGetCombinerOutputParameterivNV"); glGetCombinerOutputParameterivNV = (glGetCombinerOutputParameterivNVPROC) extgl_GetProcAddress("glGetCombinerOutputParameterivNV");
glGetFinalCombinerInputParameterfvNV = (glGetFinalCombinerInputParameterfvNVPROC) extgl_GetProcAddress("glGetFinalCombinerInputParameterfvNV"); glGetFinalCombinerInputParameterfvNV = (glGetFinalCombinerInputParameterfvNVPROC) extgl_GetProcAddress("glGetFinalCombinerInputParameterfvNV");
glGetFinalCombinerInputParameterivNV = (glGetFinalCombinerInputParameterivNVPROC) extgl_GetProcAddress("glGetFinalCombinerInputParameterivNV"); glGetFinalCombinerInputParameterivNV = (glGetFinalCombinerInputParameterivNVPROC) extgl_GetProcAddress("glGetFinalCombinerInputParameterivNV");
EXTGL_SANITY_CHECK(NV_register_combiners)
#endif #endif
} }
@ -2367,6 +2405,7 @@ static void extgl_InitEXTPointParameters()
return; return;
glPointParameterfEXT = (glPointParameterfEXTPROC) extgl_GetProcAddress("glPointParameterfEXT"); glPointParameterfEXT = (glPointParameterfEXTPROC) extgl_GetProcAddress("glPointParameterfEXT");
glPointParameterfvEXT = (glPointParameterfvEXTPROC) extgl_GetProcAddress("glPointParameterfvEXT"); glPointParameterfvEXT = (glPointParameterfvEXTPROC) extgl_GetProcAddress("glPointParameterfvEXT");
EXTGL_SANITY_CHECK(EXT_point_parameters)
#endif #endif
} }
@ -2385,6 +2424,7 @@ static void extgl_InitNVVertexArrayRange()
glXAllocateMemoryNV = (glXAllocateMemoryNVPROC) extgl_GetProcAddress("glXAllocateMemoryNV"); glXAllocateMemoryNV = (glXAllocateMemoryNVPROC) extgl_GetProcAddress("glXAllocateMemoryNV");
glXFreeMemoryNV = (glXFreeMemoryNVPROC) extgl_GetProcAddress("glXFreeMemoryNV"); glXFreeMemoryNV = (glXFreeMemoryNVPROC) extgl_GetProcAddress("glXFreeMemoryNV");
#endif /* X11 */ #endif /* X11 */
EXTGL_SANITY_CHECK(NV_vertex_array_range)
#endif #endif
} }
@ -2398,6 +2438,7 @@ static void extgl_InitEXTFogCoord()
glFogCoorddEXT = (glFogCoorddEXTPROC) extgl_GetProcAddress("glFogCoorddEXT"); glFogCoorddEXT = (glFogCoorddEXTPROC) extgl_GetProcAddress("glFogCoorddEXT");
glFogCoorddvEXT = (glFogCoorddvEXTPROC) extgl_GetProcAddress("glFogCoorddvEXT"); glFogCoorddvEXT = (glFogCoorddvEXTPROC) extgl_GetProcAddress("glFogCoorddvEXT");
glFogCoordPointerEXT = (glFogCoordPointerEXTPROC) extgl_GetProcAddress("glFogCoordPointerEXT"); glFogCoordPointerEXT = (glFogCoordPointerEXTPROC) extgl_GetProcAddress("glFogCoordPointerEXT");
EXTGL_SANITY_CHECK(EXT_fog_coord)
#endif #endif
} }
@ -2423,6 +2464,7 @@ static void extgl_InitEXTSecondaryColor()
glSecondaryColor3usEXT = (glSecondaryColor3usEXTPROC) extgl_GetProcAddress("glSecondaryColor3usEXT"); glSecondaryColor3usEXT = (glSecondaryColor3usEXTPROC) extgl_GetProcAddress("glSecondaryColor3usEXT");
glSecondaryColor3usvEXT = (glSecondaryColor3usvEXTPROC) extgl_GetProcAddress("glSecondaryColor3usvEXT"); glSecondaryColor3usvEXT = (glSecondaryColor3usvEXTPROC) extgl_GetProcAddress("glSecondaryColor3usvEXT");
glSecondaryColorPointerEXT = (glSecondaryColorPointerEXTPROC) extgl_GetProcAddress("glSecondaryColorPointerEXT"); glSecondaryColorPointerEXT = (glSecondaryColorPointerEXTPROC) extgl_GetProcAddress("glSecondaryColorPointerEXT");
EXTGL_SANITY_CHECK(EXT_secondary_color)
#endif #endif
} }
@ -2433,6 +2475,7 @@ static void extgl_InitEXTCompiledVertexArray()
return; return;
glLockArraysEXT = (glLockArraysEXTPROC) extgl_GetProcAddress("glLockArraysEXT"); glLockArraysEXT = (glLockArraysEXTPROC) extgl_GetProcAddress("glLockArraysEXT");
glUnlockArraysEXT = (glUnlockArraysEXTPROC) extgl_GetProcAddress("glUnlockArraysEXT"); glUnlockArraysEXT = (glUnlockArraysEXTPROC) extgl_GetProcAddress("glUnlockArraysEXT");
EXTGL_SANITY_CHECK(EXT_compiled_vertex_array)
#endif #endif
} }
@ -2445,6 +2488,7 @@ static void extgl_InitARBTransposeMatrix()
glLoadTransposeMatrixdARB = (glLoadTransposeMatrixdARBPROC) extgl_GetProcAddress("glLoadTransposeMatrixdARB"); glLoadTransposeMatrixdARB = (glLoadTransposeMatrixdARBPROC) extgl_GetProcAddress("glLoadTransposeMatrixdARB");
glMultTransposeMatrixfARB = (glMultTransposeMatrixfARBPROC) extgl_GetProcAddress("glMultTransposeMatrixfARB"); glMultTransposeMatrixfARB = (glMultTransposeMatrixfARBPROC) extgl_GetProcAddress("glMultTransposeMatrixfARB");
glMultTransposeMatrixdARB = (glMultTransposeMatrixdARBPROC) extgl_GetProcAddress("glMultTransposeMatrixdARB"); glMultTransposeMatrixdARB = (glMultTransposeMatrixdARBPROC) extgl_GetProcAddress("glMultTransposeMatrixdARB");
EXTGL_SANITY_CHECK(ARB_transpose_matrix)
#endif #endif
} }
@ -2454,6 +2498,7 @@ static void extgl_InitEXTDrawRangeElements()
if (!extgl_Extensions.EXT_draw_range_elements) if (!extgl_Extensions.EXT_draw_range_elements)
return; return;
glDrawRangeElementsEXT = (glDrawRangeElementsEXTPROC) extgl_GetProcAddress("glDrawRangeElementsEXT"); glDrawRangeElementsEXT = (glDrawRangeElementsEXTPROC) extgl_GetProcAddress("glDrawRangeElementsEXT");
EXTGL_SANITY_CHECK(EXT_draw_range_elements)
#endif #endif
} }
@ -2500,10 +2545,11 @@ static void extgl_InitARBMultitexture()
glMultiTexCoord4ivARB = (glMultiTexCoord4ivARBPROC) extgl_GetProcAddress("glMultiTexCoord4ivARB"); glMultiTexCoord4ivARB = (glMultiTexCoord4ivARBPROC) extgl_GetProcAddress("glMultiTexCoord4ivARB");
glMultiTexCoord4sARB = (glMultiTexCoord4sARBPROC) extgl_GetProcAddress("glMultiTexCoord4sARB"); glMultiTexCoord4sARB = (glMultiTexCoord4sARBPROC) extgl_GetProcAddress("glMultiTexCoord4sARB");
glMultiTexCoord4svARB = (glMultiTexCoord4svARBPROC) extgl_GetProcAddress("glMultiTexCoord4svARB"); glMultiTexCoord4svARB = (glMultiTexCoord4svARBPROC) extgl_GetProcAddress("glMultiTexCoord4svARB");
EXTGL_SANITY_CHECK(ARB_multitexture)
#endif /* GL_ARB_multitexture */ #endif /* GL_ARB_multitexture */
} }
int extgl_InitGLU12(void) static void extgl_InitGLU12(void)
{ {
gluBeginCurve = (gluBeginCurvePROC) extgl_GetProcAddress("gluBeginCurve"); gluBeginCurve = (gluBeginCurvePROC) extgl_GetProcAddress("gluBeginCurve");
gluBeginPolygon = (gluBeginPolygonPROC) extgl_GetProcAddress("gluBeginPolygon"); gluBeginPolygon = (gluBeginPolygonPROC) extgl_GetProcAddress("gluBeginPolygon");
@ -2556,13 +2602,12 @@ int extgl_InitGLU12(void)
gluTessProperty = (gluTessPropertyPROC) extgl_GetProcAddress("gluTessProperty"); gluTessProperty = (gluTessPropertyPROC) extgl_GetProcAddress("gluTessProperty");
gluTessVertex = (gluTessVertexPROC) extgl_GetProcAddress("gluTessVertex"); gluTessVertex = (gluTessVertexPROC) extgl_GetProcAddress("gluTessVertex");
gluUnProject = (gluUnProjectPROC) extgl_GetProcAddress("gluUnProject"); gluUnProject = (gluUnProjectPROC) extgl_GetProcAddress("gluUnProject");
return extgl_error;
} }
int extgl_InitGLU13(void) static void extgl_InitGLU13(void)
{ {
if (extgl_Extensions.glu.GLU13 != 1) if (extgl_Extensions.glu.GLU13 != 1)
return extgl_error; return;
gluUnProject4 = (gluUnProject4PROC) extgl_GetProcAddress("gluUnProject4"); gluUnProject4 = (gluUnProject4PROC) extgl_GetProcAddress("gluUnProject4");
gluBuild1DMipmapLevels = (gluBuild1DMipmapLevelsPROC) extgl_GetProcAddress("gluBuild1DMipmapLevels"); gluBuild1DMipmapLevels = (gluBuild1DMipmapLevelsPROC) extgl_GetProcAddress("gluBuild1DMipmapLevels");
gluBuild2DMipmapLevels = (gluBuild2DMipmapLevelsPROC) extgl_GetProcAddress("gluBuild2DMipmapLevels"); gluBuild2DMipmapLevels = (gluBuild2DMipmapLevelsPROC) extgl_GetProcAddress("gluBuild2DMipmapLevels");
@ -2570,23 +2615,22 @@ int extgl_InitGLU13(void)
gluBuild3DMipmaps = (gluBuild3DMipmapsPROC) extgl_GetProcAddress("gluBuild3DMipmaps"); gluBuild3DMipmaps = (gluBuild3DMipmapsPROC) extgl_GetProcAddress("gluBuild3DMipmaps");
gluNurbsCallbackData = (gluNurbsCallbackDataPROC) extgl_GetProcAddress("gluNurbsCallbackData"); gluNurbsCallbackData = (gluNurbsCallbackDataPROC) extgl_GetProcAddress("gluNurbsCallbackData");
gluCheckExtension = (gluCheckExtensionPROC) extgl_GetProcAddress("gluCheckExtension"); gluCheckExtension = (gluCheckExtensionPROC) extgl_GetProcAddress("gluCheckExtension");
return extgl_error; EXTGL_SANITY_CHECK(glu.GLU13)
} }
int extgl_InitEXTNurbsTesselator(void) static void extgl_InitEXTNurbsTesselator(void)
{ {
if (!extgl_Extensions.glu.EXT_nurbs_tessellator) if (!extgl_Extensions.glu.EXT_nurbs_tessellator)
return 1; return;
gluNurbsCallbackDataEXT = (gluNurbsCallbackDataEXTPROC) extgl_GetProcAddress("gluNurbsCallbackDataEXT"); gluNurbsCallbackDataEXT = (gluNurbsCallbackDataEXTPROC) extgl_GetProcAddress("gluNurbsCallbackDataEXT");
EXTGL_SANITY_CHECK(glu.EXT_nurbs_tessellator)
return 0;
} }
#ifdef _X11 #ifdef _X11
int extgl_InitGLX13(void) static void extgl_InitGLX13(void)
{ {
if (extgl_Extensions.glx.GLX13 == 0) if (extgl_Extensions.glx.GLX13 != 1)
return extgl_error; return;
glXGetFBConfigs = (glXGetFBConfigsPROC) extgl_GetProcAddress("glXGetFBConfigs"); glXGetFBConfigs = (glXGetFBConfigsPROC) extgl_GetProcAddress("glXGetFBConfigs");
glXChooseFBConfig = (glXChooseFBConfigPROC) extgl_GetProcAddress("glXChooseFBConfig"); glXChooseFBConfig = (glXChooseFBConfigPROC) extgl_GetProcAddress("glXChooseFBConfig");
glXGetFBConfigAttrib = (glXGetFBConfigAttribPROC) extgl_GetProcAddress("glXGetFBConfigAttrib"); glXGetFBConfigAttrib = (glXGetFBConfigAttribPROC) extgl_GetProcAddress("glXGetFBConfigAttrib");
@ -2605,10 +2649,10 @@ int extgl_InitGLX13(void)
glXQueryContext = (glXQueryContextPROC) extgl_GetProcAddress("glXQueryContext"); glXQueryContext = (glXQueryContextPROC) extgl_GetProcAddress("glXQueryContext");
glXSelectEvent = (glXSelectEventPROC) extgl_GetProcAddress("glXSelectEvent"); glXSelectEvent = (glXSelectEventPROC) extgl_GetProcAddress("glXSelectEvent");
glXGetSelectedEvent = (glXGetSelectedEventPROC) extgl_GetProcAddress("glXGetSelectedEvent"); glXGetSelectedEvent = (glXGetSelectedEventPROC) extgl_GetProcAddress("glXGetSelectedEvent");
return extgl_error; EXTGL_SANITY_CHECK(glx.GLX13)
} }
int extgl_InitGLX12(void) static int extgl_InitGLX12(void)
{ {
glXChooseVisual = (glXChooseVisualPROC) extgl_GetProcAddress("glXChooseVisual"); glXChooseVisual = (glXChooseVisualPROC) extgl_GetProcAddress("glXChooseVisual");
glXCopyContext = (glXCopyContextPROC) extgl_GetProcAddress("glXCopyContext"); glXCopyContext = (glXCopyContextPROC) extgl_GetProcAddress("glXCopyContext");
@ -2654,8 +2698,7 @@ int extgl_InitGLX(Display *disp, int screen)
return 1; return 1;
if (major > 1 || (major == 1 && minor >= 3)) if (major > 1 || (major == 1 && minor >= 3))
extgl_Extensions.glx.GLX13 = 1; extgl_Extensions.glx.GLX13 = 1;
if (extgl_InitGLX13() != 0) extgl_InitGLX13();
return 1;
return 0; return 0;
} }
#endif #endif
@ -3010,6 +3053,7 @@ static void extgl_InitOpenGL1_2()
glTexSubImage3D = (glTexSubImage3DPROC) extgl_GetProcAddress("glTexSubImage3D"); glTexSubImage3D = (glTexSubImage3DPROC) extgl_GetProcAddress("glTexSubImage3D");
glCopyTexSubImage3D = (glCopyTexSubImage3DPROC) extgl_GetProcAddress("glCopyTexSubImage3D"); glCopyTexSubImage3D = (glCopyTexSubImage3DPROC) extgl_GetProcAddress("glCopyTexSubImage3D");
glDrawRangeElements = (glDrawRangeElementsPROC) extgl_GetProcAddress("glDrawRangeElements"); glDrawRangeElements = (glDrawRangeElementsPROC) extgl_GetProcAddress("glDrawRangeElements");
EXTGL_SANITY_CHECK(OpenGL12)
#endif /* GL_VERSION_1_2 */ #endif /* GL_VERSION_1_2 */
} }
@ -3052,6 +3096,7 @@ static void extgl_InitARBImaging()
glMinmax = (glMinmaxPROC) extgl_GetProcAddress("glMinmax"); glMinmax = (glMinmaxPROC) extgl_GetProcAddress("glMinmax");
glResetHistogram = (glResetHistogramPROC) extgl_GetProcAddress("glResetHistogram"); glResetHistogram = (glResetHistogramPROC) extgl_GetProcAddress("glResetHistogram");
glResetMinmax = (glResetMinmaxPROC) extgl_GetProcAddress("glResetMinmax"); glResetMinmax = (glResetMinmaxPROC) extgl_GetProcAddress("glResetMinmax");
EXTGL_SANITY_CHECK(ARB_imaging)
#endif /* GL_ARB_imaging */ #endif /* GL_ARB_imaging */
} }
@ -3112,6 +3157,7 @@ static void extgl_InitOpenGL1_3()
glGetCompressedTexImage = (glGetCompressedTexImagePROC) extgl_GetProcAddress("glGetCompressedTexImage"); glGetCompressedTexImage = (glGetCompressedTexImagePROC) extgl_GetProcAddress("glGetCompressedTexImage");
glSampleCoverage = (glSampleCoveragePROC) extgl_GetProcAddress("glSampleCoverage"); glSampleCoverage = (glSampleCoveragePROC) extgl_GetProcAddress("glSampleCoverage");
EXTGL_SANITY_CHECK(OpenGL13)
#endif /* GL_VERSION_1_3 */ #endif /* GL_VERSION_1_3 */
} }
@ -3165,6 +3211,7 @@ static void extgl_InitOpenGL1_4()
glWindowPos3fv = (glWindowPos3fvPROC) extgl_GetProcAddress("glWindowPos3fv"); glWindowPos3fv = (glWindowPos3fvPROC) extgl_GetProcAddress("glWindowPos3fv");
glWindowPos3iv = (glWindowPos3ivPROC) extgl_GetProcAddress("glWindowPos3iv"); glWindowPos3iv = (glWindowPos3ivPROC) extgl_GetProcAddress("glWindowPos3iv");
glWindowPos3sv = (glWindowPos3svPROC) extgl_GetProcAddress("glWindowPos3sv"); glWindowPos3sv = (glWindowPos3svPROC) extgl_GetProcAddress("glWindowPos3sv");
EXTGL_SANITY_CHECK(OpenGL14)
#endif /* GL_VERSION_1_4 */ #endif /* GL_VERSION_1_4 */
} }
@ -3318,11 +3365,14 @@ static void extgl_InitSupportedExtensions()
int extgl_Initialize() int extgl_Initialize()
{ {
extgl_error = 0; extgl_error = 0;
extgl_InitOpenGL1_1(); extgl_InitOpenGL1_1();
extgl_InitGLU12(); extgl_InitGLU12();
extgl_InitGLU13(); if (extgl_error != 0)
extgl_InitSupportedExtensions(); return extgl_error;
extgl_InitGLUSupportedExtensions(); extgl_InitGLUSupportedExtensions();
extgl_InitSupportedExtensions();
extgl_InitEXTNurbsTesselator(); extgl_InitEXTNurbsTesselator();
@ -3374,6 +3424,8 @@ int extgl_Initialize()
extgl_InitOpenGL1_3(); extgl_InitOpenGL1_3();
extgl_InitOpenGL1_4(); extgl_InitOpenGL1_4();
extgl_InitGLU13();
#ifdef _WIN32 #ifdef _WIN32
/* load WGL extensions */ /* load WGL extensions */
extgl_InitializeWGL(); extgl_InitializeWGL();
@ -3383,7 +3435,7 @@ int extgl_Initialize()
/* load AGL extensions */ /* load AGL extensions */
extgl_InitializeAGL(); extgl_InitializeAGL();
#endif #endif
return extgl_error; return 0;
} }
#ifdef _X11 #ifdef _X11