st/mesa: support for primitive restart
[mesa.git] / src / mesa / state_tracker / st_extensions.c
index 225f75e3af0824ee2850904e012d9f1246a63977..2720f446450ffd3612d1e7db37251e0149341a21 100644 (file)
@@ -204,7 +204,7 @@ void st_init_limits(struct st_context *st)
 void st_init_extensions(struct st_context *st)
 {
    struct pipe_screen *screen = st->pipe->screen;
-   GLcontext *ctx = st->ctx;
+   struct gl_context *ctx = st->ctx;
 
    /*
     * Extensions that are supported by all Gallium drivers:
@@ -373,6 +373,12 @@ void st_init_extensions(struct st_context *st)
       ctx->Extensions.EXT_texture_sRGB = GL_TRUE;
    }
 
+   if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8_UNORM,
+                                   PIPE_TEXTURE_2D, 0,
+                                   PIPE_BIND_SAMPLER_VIEW, 0)) {
+      ctx->Extensions.ARB_texture_rg = GL_TRUE;
+   }
+
    /* s3tc support */
    if (screen->is_format_supported(screen, PIPE_FORMAT_DXT5_RGBA,
                                    PIPE_TEXTURE_2D, 0,
@@ -426,7 +432,15 @@ void st_init_extensions(struct st_context *st)
       ctx->Extensions.ARB_geometry_shader4 = GL_TRUE;
    }
 
+   if (screen->get_param(screen, PIPE_CAP_PRIMITIVE_RESTART)) {
+      ctx->Extensions.NV_primitive_restart = GL_TRUE;
+   }
+
    if (screen->get_param(screen, PIPE_CAP_DEPTH_CLAMP)) {
       ctx->Extensions.ARB_depth_clamp = GL_TRUE;
    }
+
+   if (screen->get_param(screen, PIPE_CAP_SHADER_STENCIL_EXPORT)) {
+      ctx->Extensions.ARB_shader_stencil_export = GL_TRUE;
+   }
 }