Mesa (master): mesa: call _mesa_compute_version() to set context' s version info

Brian Paul brianp at kemper.freedesktop.org
Wed Jan 6 04:31:00 UTC 2010


Module: Mesa
Branch: master
Commit: 3510a1b0c5398b4fce4157d5b578344d2a0bd7d3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3510a1b0c5398b4fce4157d5b578344d2a0bd7d3

Author: Brian Paul <brianp at vmware.com>
Date:   Tue Jan  5 21:23:59 2010 -0700

mesa: call _mesa_compute_version() to set context's version info

---

 src/mesa/main/context.c   |    5 +++
 src/mesa/main/getstring.c |   81 +--------------------------------------------
 2 files changed, 6 insertions(+), 80 deletions(-)

diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
index 5c20ce0..320c590 100644
--- a/src/mesa/main/context.c
+++ b/src/mesa/main/context.c
@@ -1015,6 +1015,9 @@ _mesa_free_context_data( GLcontext *ctx )
    if (ctx->Extensions.String)
       _mesa_free((void *) ctx->Extensions.String);
 
+   if (ctx->VersionString)
+      _mesa_free(ctx->VersionString);
+
    /* unbind the context if it's currently bound */
    if (ctx == _mesa_get_current_context()) {
       _mesa_make_current(NULL, NULL, NULL);
@@ -1374,6 +1377,8 @@ _mesa_make_current( GLcontext *newCtx, GLframebuffer *drawBuffer,
       }
 
       if (newCtx->FirstTimeCurrent) {
+         _mesa_compute_version(newCtx);
+
          check_context_limits(newCtx);
 
          /* We can use this to help debug user's problems.  Tell them to set
diff --git a/src/mesa/main/getstring.c b/src/mesa/main/getstring.c
index cac5eef..e76a790 100644
--- a/src/mesa/main/getstring.c
+++ b/src/mesa/main/getstring.c
@@ -33,85 +33,6 @@
 
 
 /**
- * Examine enabled GL extensions to determine GL version.
- * \return version string
- */
-static const char *
-compute_version(const GLcontext *ctx)
-{
-   static const char *version_1_2 = "1.2 Mesa " MESA_VERSION_STRING;
-   static const char *version_1_3 = "1.3 Mesa " MESA_VERSION_STRING;
-   static const char *version_1_4 = "1.4 Mesa " MESA_VERSION_STRING;
-   static const char *version_1_5 = "1.5 Mesa " MESA_VERSION_STRING;
-   static const char *version_2_0 = "2.0 Mesa " MESA_VERSION_STRING;
-   static const char *version_2_1 = "2.1 Mesa " MESA_VERSION_STRING;
-
-   const GLboolean ver_1_3 = (ctx->Extensions.ARB_multisample &&
-                              ctx->Extensions.ARB_multitexture &&
-                              ctx->Extensions.ARB_texture_border_clamp &&
-                              ctx->Extensions.ARB_texture_compression &&
-                              ctx->Extensions.ARB_texture_cube_map &&
-                              ctx->Extensions.EXT_texture_env_add &&
-                              ctx->Extensions.ARB_texture_env_combine &&
-                              ctx->Extensions.ARB_texture_env_dot3);
-   const GLboolean ver_1_4 = (ver_1_3 &&
-                              ctx->Extensions.ARB_depth_texture &&
-                              ctx->Extensions.ARB_shadow &&
-                              ctx->Extensions.ARB_texture_env_crossbar &&
-                              ctx->Extensions.ARB_texture_mirrored_repeat &&
-                              ctx->Extensions.ARB_window_pos &&
-                              ctx->Extensions.EXT_blend_color &&
-                              ctx->Extensions.EXT_blend_func_separate &&
-                              ctx->Extensions.EXT_blend_minmax &&
-                              ctx->Extensions.EXT_blend_subtract &&
-                              ctx->Extensions.EXT_fog_coord &&
-                              ctx->Extensions.EXT_multi_draw_arrays &&
-                              ctx->Extensions.EXT_point_parameters &&
-                              ctx->Extensions.EXT_secondary_color &&
-                              ctx->Extensions.EXT_stencil_wrap &&
-                              ctx->Extensions.EXT_texture_lod_bias &&
-                              ctx->Extensions.SGIS_generate_mipmap);
-   const GLboolean ver_1_5 = (ver_1_4 &&
-                              ctx->Extensions.ARB_occlusion_query &&
-                              ctx->Extensions.ARB_vertex_buffer_object &&
-                              ctx->Extensions.EXT_shadow_funcs);
-   const GLboolean ver_2_0 = (ver_1_5 &&
-                              ctx->Extensions.ARB_draw_buffers &&
-                              ctx->Extensions.ARB_point_sprite &&
-                              ctx->Extensions.ARB_shader_objects &&
-                              ctx->Extensions.ARB_vertex_shader &&
-                              ctx->Extensions.ARB_fragment_shader &&
-                              ctx->Extensions.ARB_texture_non_power_of_two &&
-                              ctx->Extensions.EXT_blend_equation_separate &&
-
-			      /* Technically, 2.0 requires the functionality
-			       * of the EXT version.  Enable 2.0 if either
-			       * extension is available, and assume that a
-			       * driver that only exposes the ATI extension
-			       * will fallback to software when necessary.
-			       */
-			      (ctx->Extensions.EXT_stencil_two_side
-			       || ctx->Extensions.ATI_separate_stencil));
-   const GLboolean ver_2_1 = (ver_2_0 &&
-                              ctx->Extensions.ARB_shading_language_120 &&
-                              ctx->Extensions.EXT_pixel_buffer_object &&
-                              ctx->Extensions.EXT_texture_sRGB);
-   if (ver_2_1)
-      return version_2_1;
-   if (ver_2_0)
-      return version_2_0;
-   if (ver_1_5)
-      return version_1_5;
-   if (ver_1_4)
-      return version_1_4;
-   if (ver_1_3)
-      return version_1_3;
-   return version_1_2;
-}
-
-
-
-/**
  * Query string-valued state.  The return value should _not_ be freed by
  * the caller.
  *
@@ -149,7 +70,7 @@ _mesa_GetString( GLenum name )
       case GL_RENDERER:
          return (const GLubyte *) renderer;
       case GL_VERSION:
-         return (const GLubyte *) compute_version(ctx);
+         return (const GLubyte *) ctx->VersionString;
       case GL_EXTENSIONS:
          if (!ctx->Extensions.String)
             ctx->Extensions.String = _mesa_make_extension_string(ctx);




More information about the mesa-commit mailing list