/** * Enable and map extensions supported by the driver. * * When ctx is NULL, extensions are not enabled, but their functions * are still mapped. When extensions_to_enable is NULL, all static * functions known to mesa core are mapped. * * \bug * ARB_imaging isn't handled properly. In Mesa, enabling ARB_imaging also * enables all the sub-extensions that are folded into it. This means that * we need to add entry-points (via \c driInitSingleExtension) for those * new functions here. */ void driInitExtensions( GLcontext * ctx, const struct dri_extension * extensions_to_enable, GLboolean enable_imaging ) { static int first_time = 1; unsigned i; if ( first_time ) { first_time = 0; driInitExtensions( NULL, all_mesa_extensions, GL_FALSE ); } if ( (ctx != NULL) && enable_imaging ) { _mesa_enable_imaging_extensions( ctx ); } /* The caller is too lazy to list any extension */ if ( extensions_to_enable == NULL ) { /* Map the static functions. Together with those mapped by remap * table, this should cover everything mesa core knows. */ _mesa_map_static_functions(); return; } for ( i = 0 ; extensions_to_enable[i].name != NULL ; i++ ) { driInitSingleExtension( ctx, & extensions_to_enable[i] ); } }
void gldEnableExtensions_DX8( GLcontext *ctx) { GLuint i; // Mesa enables some extensions by default. // This table decides which ones we want to switch off again. // NOTE: GL_EXT_compiled_vertex_array appears broken. const char *gld_disable_extensions[] = { // "GL_ARB_transpose_matrix", // "GL_EXT_compiled_vertex_array", // "GL_EXT_polygon_offset", // "GL_EXT_rescale_normal", "GL_EXT_texture3D", // "GL_NV_texgen_reflection", NULL }; const char *gld_multitex_extensions[] = { "GL_ARB_multitexture", // Quake 3 NULL }; // Quake 2 engines const char *szGL_SGIS_multitexture = "GL_SGIS_multitexture"; const char *gld_enable_extensions[] = { "GL_EXT_texture_env_add", // Quake 3 "GL_ARB_texture_env_add", // Quake 3 NULL }; for (i=0; gld_disable_extensions[i]; i++) { _mesa_disable_extension(ctx, gld_disable_extensions[i]); } for (i=0; gld_enable_extensions[i]; i++) { _mesa_enable_extension(ctx, gld_enable_extensions[i]); } if (glb.bMultitexture) { for (i=0; gld_multitex_extensions[i]; i++) { _mesa_enable_extension(ctx, gld_multitex_extensions[i]); } // GL_SGIS_multitexture // NOTE: Quake2 ran *slower* with this enabled, so I've // disabled it for now. // Fair bit slower on GeForce256, // Much slower on 3dfx Voodoo5 5500. // _mesa_add_extension(ctx, GL_TRUE, szGL_SGIS_multitexture, 0); } _mesa_enable_imaging_extensions(ctx); _mesa_enable_1_3_extensions(ctx); _mesa_enable_1_4_extensions(ctx); }
void driInitExtensions( GLcontext * ctx, const char * const extensions_to_enable[], GLboolean enable_imaging ) { unsigned i; if ( enable_imaging ) { _mesa_enable_imaging_extensions( ctx ); } for ( i = 0 ; extensions_to_enable[i] != NULL ; i++ ) { _mesa_enable_extension( ctx, extensions_to_enable[i] ); } }
/** * Enable extensions supported by the driver. * * \bug * ARB_imaging isn't handled properly. In Mesa, enabling ARB_imaging also * enables all the sub-extensions that are folded into it. This means that * we need to add entry-points (via \c driInitSingleExtension) for those * new functions here. */ void driInitExtensions( GLcontext * ctx, const struct dri_extension * extensions_to_enable, GLboolean enable_imaging ) { static int first_time = 1; unsigned i; if ( first_time ) { for ( i = 0 ; i < driDispatchRemapTable_size ; i++ ) { driDispatchRemapTable[i] = -1; } first_time = 0; driInitExtensions( ctx, all_mesa_extensions, GL_FALSE ); } if ( (ctx != NULL) && enable_imaging ) { _mesa_enable_imaging_extensions( ctx ); } for ( i = 0 ; extensions_to_enable[i].name != NULL ; i++ ) { driInitSingleExtension( ctx, & extensions_to_enable[i] ); } }