Fix glActiveStencilFaceEXT dispatch problem (bug 10523).
authorBrian <brian@yutani.localnet.net>
Mon, 16 Apr 2007 23:16:46 +0000 (17:16 -0600)
committerBrian <brian@yutani.localnet.net>
Mon, 16 Apr 2007 23:16:46 +0000 (17:16 -0600)
OK, _all_ extensions that might get enabled by the driver need to be in the
card_extensions[] list.  driInitExtensions() is called at least twice: first
during screen creation, then once for each context that's created.
The first call sets up the dispatch table.  The second call just sets the
extension enable/disable flags.

src/mesa/drivers/dri/r300/r300_context.c

index 58350fe0ab4f7bcbae26d4bea6f73826a4571001..c362b027e99fc29e2c7ff43dbe7196887497d357 100644 (file)
@@ -124,11 +124,8 @@ const struct dri_extension card_extensions[] = {
   {"GL_NV_blend_square",               NULL},
   {"GL_NV_vertex_program",             GL_NV_vertex_program_functions},
   {"GL_SGIS_generate_mipmap",          NULL},
-  {NULL,                               NULL}
-};
-
-const struct dri_extension stencil_two_side[] = {
   {"GL_EXT_stencil_two_side",          GL_EXT_stencil_two_side_functions},
+  {NULL,                               NULL}
 };
 
 extern struct tnl_pipeline_stage _r300_render_stage;
@@ -334,8 +331,8 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual,
 
        driInitExtensions(ctx, card_extensions, GL_TRUE);
 
-       if (driQueryOptionb(&r300->radeon.optionCache, "disable_stencil_two_side") == 0)
-               driInitSingleExtension(ctx, stencil_two_side);
+       if (driQueryOptionb(&r300->radeon.optionCache, "disable_stencil_two_side"))
+           _mesa_disable_extension(ctx, "GL_EXT_stencil_two_side");
 
        if (r300->radeon.glCtx->Mesa_DXTn && !driQueryOptionb (&r300->radeon.optionCache, "disable_s3tc")) {
          _mesa_enable_extension( ctx, "GL_EXT_texture_compression_s3tc" );