[Mesa-dev] [PATCH 1/2] mesa: Replace VersionMajor/VersionMinor with a Version field.

Kenneth Graunke kenneth at whitecape.org
Tue Jul 31 16:13:39 PDT 2012


On 07/31/2012 03:24 PM, Eric Anholt wrote:
> As we get into supporting GL 3.x core, we come across more and more features
> of the API that depend on the version number as opposed to just the extension
> list.  This will let us more sanely do version checks than "(VersionMajor == 3
> && VersionMinor >= 2) || VersionMajor >= 4".
> ---
> 
> I didn't like any of the macrofying changes I heard, particularly
> because I expect the minor version to never hit 10 (We've had GL minor
> versions up to a maximum of 3/10 so far), and it provides consistency
> with piglit where we're also using major * 10 + minor.
> 
> I did take Brian's suggestion of removing the old fields, though.
> That was a bit more typing, but I think it was good.
> 
>  src/mesa/drivers/dri/intel/intel_screen.c      |    4 +---
>  src/mesa/drivers/dri/nouveau/nouveau_context.c |    4 +---
>  src/mesa/drivers/dri/r200/r200_context.c       |    4 +---
>  src/mesa/drivers/dri/radeon/radeon_context.c   |    4 +---
>  src/mesa/main/enable.c                         |    4 ++--
>  src/mesa/main/fbobject.c                       |    8 +++----
>  src/mesa/main/get.c                            |   13 ++++++++---
>  src/mesa/main/glformats.c                      |    8 +++----
>  src/mesa/main/mtypes.h                         |    4 ++--
>  src/mesa/main/texformat.c                      |    4 ++--
>  src/mesa/main/teximage.c                       |   15 ++++++------
>  src/mesa/main/texparam.c                       |    2 +-
>  src/mesa/main/varray.c                         |    5 ++--
>  src/mesa/main/version.c                        |   29 ++++++++++++------------
>  src/mesa/state_tracker/st_manager.c            |    3 +--
>  15 files changed, 53 insertions(+), 58 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c
> index e8a4ad1..24dab8f 100644
> --- a/src/mesa/drivers/dri/intel/intel_screen.c
> +++ b/src/mesa/drivers/dri/intel/intel_screen.c
> @@ -693,9 +693,7 @@ intelCreateContext(gl_api api,
>  	 (struct gl_context *) driContextPriv->driverPrivate;
>  
>        _mesa_compute_version(ctx);
> -      if (ctx->VersionMajor > major_version
> -	  || (ctx->VersionMajor == major_version
> -	      && ctx->VersionMinor >= minor_version)) {
> +      if (ctx->Version >= major_version * 10 + minor_version) {
>  	 return true;
>        }
>  
> diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c
> index d7d5a04..f794308 100644
> --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c
> +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c
> @@ -75,9 +75,7 @@ nouveau_context_create(gl_api api,
>  	dri_ctx->driverPrivate = ctx;
>  
>  	_mesa_compute_version(ctx);
> -	if (ctx->VersionMajor < major_version
> -	    || (ctx->VersionMajor == major_version
> -		&& ctx->VersionMinor < minor_version)) {
> +	if (ctx->Version < major_version * 10 + minor_version) {
>  	   nouveau_context_destroy(dri_ctx);
>  	   *error = __DRI_CTX_ERROR_BAD_VERSION;
>  	   return GL_FALSE;
> diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c
> index 244973e..17e08a1 100644
> --- a/src/mesa/drivers/dri/r200/r200_context.c
> +++ b/src/mesa/drivers/dri/r200/r200_context.c
> @@ -454,9 +454,7 @@ GLboolean r200CreateContext( gl_api api,
>     }
>  
>     _mesa_compute_version(ctx);
> -   if (ctx->VersionMajor < major_version
> -       || (ctx->VersionMajor == major_version
> -	   && ctx->VersionMinor < minor_version)) {
> +   if (ctx->Version < major_version * 10 + minor_version) {
>        r200DestroyContext(driContextPriv);
>        *error = __DRI_CTX_ERROR_BAD_VERSION;
>        return GL_FALSE;
> diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c
> index 9881d00..34c392e 100644
> --- a/src/mesa/drivers/dri/radeon/radeon_context.c
> +++ b/src/mesa/drivers/dri/radeon/radeon_context.c
> @@ -402,9 +402,7 @@ r100CreateContext( gl_api api,
>     }
>  
>     _mesa_compute_version(ctx);
> -   if (ctx->VersionMajor < major_version
> -       || (ctx->VersionMajor == major_version
> -	   && ctx->VersionMinor < minor_version)) {
> +   if (ctx->Version < major_version * 10 + minor_version) {
>        radeonDestroyContext(driContextPriv);
>        *error = __DRI_CTX_ERROR_BAD_VERSION;
>        return GL_FALSE;
> diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c
> index c811f2a..f811057 100644
> --- a/src/mesa/main/enable.c
> +++ b/src/mesa/main/enable.c
> @@ -902,7 +902,7 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
>         * GL_PRIMITIVE_RESTART_NV (which is client state).
>         */
>        case GL_PRIMITIVE_RESTART:
> -         if (ctx->VersionMajor * 10 + ctx->VersionMinor < 31) {
> +         if (ctx->Version < 31) {
>              goto invalid_enum_error;
>           }
>           if (ctx->Array.PrimitiveRestart != state) {
> @@ -1419,7 +1419,7 @@ _mesa_IsEnabled( GLenum cap )
>  
>        /* GL 3.1 primitive restart */
>        case GL_PRIMITIVE_RESTART:
> -         if (ctx->VersionMajor * 10 + ctx->VersionMinor < 31) {
> +         if (ctx->Version < 31) {
>              goto invalid_enum_error;
>           }
>           return ctx->Array.PrimitiveRestart;
> diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
> index eb03b09..d558d7f 100644
> --- a/src/mesa/main/fbobject.c
> +++ b/src/mesa/main/fbobject.c
> @@ -1226,7 +1226,7 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat)
>     case GL_RGBA8I_EXT:
>     case GL_RGBA16I_EXT:
>     case GL_RGBA32I_EXT:
> -      return ctx->VersionMajor >= 3 ||
> +      return ctx->Version >= 30 ||
>               ctx->Extensions.EXT_texture_integer ? GL_RGBA : 0;
>  
>     case GL_RGB8UI_EXT:
> @@ -1235,7 +1235,7 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat)
>     case GL_RGB8I_EXT:
>     case GL_RGB16I_EXT:
>     case GL_RGB32I_EXT:
> -      return ctx->VersionMajor >= 3 ||
> +      return ctx->Version >= 30 ||
>               ctx->Extensions.EXT_texture_integer ? GL_RGB : 0;
>  
>     case GL_R8UI:
> @@ -1244,7 +1244,7 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat)
>     case GL_R16I:
>     case GL_R32UI:
>     case GL_R32I:
> -      return ctx->VersionMajor >= 3 ||
> +      return ctx->Version >= 30 ||
>               (ctx->Extensions.ARB_texture_rg &&
>                ctx->Extensions.EXT_texture_integer) ? GL_RED : 0;
>  
> @@ -1254,7 +1254,7 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat)
>     case GL_RG16I:
>     case GL_RG32UI:
>     case GL_RG32I:
> -      return ctx->VersionMajor >= 3 ||
> +      return ctx->Version >= 30 ||
>               (ctx->Extensions.ARB_texture_rg &&
>                ctx->Extensions.EXT_texture_integer) ? GL_RG : 0;
>  
> diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
> index b9c98fb..7ffa3c1 100644
> --- a/src/mesa/main/get.c
> +++ b/src/mesa/main/get.c
> @@ -1308,8 +1308,8 @@ static const struct value_desc values[] = {
>  
>     /* GL 3.0 */
>     { GL_NUM_EXTENSIONS, LOC_CUSTOM, TYPE_INT, 0, extra_version_30 },
> -   { GL_MAJOR_VERSION, CONTEXT_INT(VersionMajor), extra_version_30 },
> -   { GL_MINOR_VERSION, CONTEXT_INT(VersionMinor), extra_version_30  },
> +   { GL_MAJOR_VERSION, LOC_CUSTOM, TYPE_INT, 0, extra_version_30 },
> +   { GL_MINOR_VERSION, LOC_CUSTOM, TYPE_INT, 0, extra_version_30  },
>     { GL_CONTEXT_FLAGS, CONTEXT_INT(Const.ContextFlags), extra_version_30  },
>  
>     /* GL3.0 / GL_EXT_framebuffer_sRGB */
> @@ -1491,6 +1491,13 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
>     GLuint unit, *p;
>  
>     switch (d->pname) {
> +   case GL_MAJOR_VERSION:
> +      v->value_int = ctx->Version / 10;
> +      break;
> +   case GL_MINOR_VERSION:
> +      v->value_int = ctx->Version % 10;
> +      break;
> +
>     case GL_TEXTURE_1D:
>     case GL_TEXTURE_2D:
>     case GL_TEXTURE_3D:
> @@ -1853,7 +1860,7 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
>  static GLboolean
>  check_extra(struct gl_context *ctx, const char *func, const struct value_desc *d)
>  {
> -   const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
> +   const GLuint version = ctx->Version;
>     int total, enabled;
>     const int *e;
>  
> diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
> index 4fe0ae0..daf1b76 100644
> --- a/src/mesa/main/glformats.c
> +++ b/src/mesa/main/glformats.c
> @@ -1237,7 +1237,7 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
>              case GL_UNSIGNED_SHORT:
>              case GL_INT:
>              case GL_UNSIGNED_INT:
> -               return (ctx->VersionMajor >= 3 ||
> +               return (ctx->Version >= 30 ||
>                         ctx->Extensions.EXT_texture_integer)
>                    ? GL_NO_ERROR : GL_INVALID_ENUM;
>              default:
> @@ -1252,7 +1252,7 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
>              case GL_UNSIGNED_SHORT:
>              case GL_INT:
>              case GL_UNSIGNED_INT:
> -               return (ctx->VersionMajor >= 3 ||
> +               return (ctx->Version >= 30 ||
>                         ctx->Extensions.EXT_texture_integer)
>                    ? GL_NO_ERROR : GL_INVALID_ENUM;
>              case GL_UNSIGNED_BYTE_3_3_2:
> @@ -1274,7 +1274,7 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
>              case GL_INT:
>              case GL_UNSIGNED_INT:
>              /* NOTE: no packed formats w/ BGR format */
> -               return (ctx->VersionMajor >= 3 ||
> +               return (ctx->Version >= 30 ||
>                         ctx->Extensions.EXT_texture_integer)
>                    ? GL_NO_ERROR : GL_INVALID_ENUM;
>              default:
> @@ -1290,7 +1290,7 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
>              case GL_UNSIGNED_SHORT:
>              case GL_INT:
>              case GL_UNSIGNED_INT:
> -               return (ctx->VersionMajor >= 3 ||
> +               return (ctx->Version >= 30 ||
>                         ctx->Extensions.EXT_texture_integer)
>                    ? GL_NO_ERROR : GL_INVALID_ENUM;
>              case GL_UNSIGNED_SHORT_4_4_4_4:
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index 7d7213f..a3618a6 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -3426,8 +3426,8 @@ struct gl_context
>     /** Extension information */
>     struct gl_extensions Extensions;
>  
> -   /** Version info */
> -   GLuint VersionMajor, VersionMinor;
> +   /** GL version integer, for example 31 for GL 3.1, or 20 for GLES 2.0. */
> +   GLuint Version;
>     char *VersionString;
>  
>     /** \name State attribute stack (for glPush/PopAttrib) */
> diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c
> index d360f0e..275e69e 100644
> --- a/src/mesa/main/texformat.c
> +++ b/src/mesa/main/texformat.c
> @@ -719,7 +719,7 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
>        }
>     }
>  
> -   if (ctx->VersionMajor >= 3 ||
> +   if (ctx->Version >= 30 ||
>         ctx->Extensions.EXT_texture_integer) {
>        switch (internalFormat) {
>        case GL_RGB8UI_EXT:
> @@ -838,7 +838,7 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
>        }
>     }
>  
> -   if (ctx->VersionMajor >= 3 ||
> +   if (ctx->Version >= 30 ||
>         (ctx->Extensions.ARB_texture_rg &&
>          ctx->Extensions.EXT_texture_integer)) {
>        switch (internalFormat) {
> diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
> index d2746c6..ef64a79 100644
> --- a/src/mesa/main/teximage.c
> +++ b/src/mesa/main/teximage.c
> @@ -332,7 +332,7 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat )
>     }
>  #endif /* FEATURE_EXT_texture_sRGB */
>  
> -   if (ctx->VersionMajor >= 3 ||
> +   if (ctx->Version >= 30 ||
>         ctx->Extensions.EXT_texture_integer) {
>        switch (internalFormat) {
>        case GL_RGBA8UI_EXT:
> @@ -406,7 +406,7 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat )
>        case GL_R16UI:
>        case GL_R32I:
>        case GL_R32UI:
> -	 if (ctx->VersionMajor < 3 && !ctx->Extensions.EXT_texture_integer)
> +	 if (ctx->Version < 30 && !ctx->Extensions.EXT_texture_integer)
>  	    break;
>  	 /* FALLTHROUGH */
>        case GL_R8:
> @@ -431,7 +431,7 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat )
>        case GL_RG16UI:
>        case GL_RG32I:
>        case GL_RG32UI:
> -	 if (ctx->VersionMajor < 3 && !ctx->Extensions.EXT_texture_integer)
> +	 if (ctx->Version < 30 && !ctx->Extensions.EXT_texture_integer)
>  	    break;
>  	 /* FALLTHROUGH */
>        case GL_RG:
> @@ -1732,7 +1732,7 @@ texture_error_check( struct gl_context *ctx,
>            target != GL_TEXTURE_RECTANGLE_ARB &&
>            target != GL_PROXY_TEXTURE_RECTANGLE_ARB &&
>           !((_mesa_is_cube_face(target) || target == GL_PROXY_TEXTURE_CUBE_MAP) &&
> -           (ctx->VersionMajor >= 3 || ctx->Extensions.EXT_gpu_shader4))) {
> +           (ctx->Version >= 30 || ctx->Extensions.EXT_gpu_shader4))) {
>           if (!isProxy)
>              _mesa_error(ctx, GL_INVALID_ENUM,
>                          "glTexImage(target/internalFormat)");
> @@ -1764,7 +1764,7 @@ texture_error_check( struct gl_context *ctx,
>     }
>  
>     /* additional checks for integer textures */
> -   if ((ctx->VersionMajor >= 3 || ctx->Extensions.EXT_texture_integer) &&
> +   if ((ctx->Version >= 30 || ctx->Extensions.EXT_texture_integer) &&
>         (_mesa_is_enum_format_integer(format) !=
>          _mesa_is_enum_format_integer(internalFormat))) {
>        if (!isProxy) {
> @@ -1937,7 +1937,7 @@ subtexture_error_check2( struct gl_context *ctx, GLuint dimensions,
>        }         
>     }
>  
> -   if (ctx->VersionMajor >= 3 || ctx->Extensions.EXT_texture_integer) {
> +   if (ctx->Version >= 30 || ctx->Extensions.EXT_texture_integer) {
>        /* both source and dest must be integer-valued, or neither */
>        if (_mesa_is_format_integer_color(destTex->TexFormat) !=
>            _mesa_is_enum_format_integer(format)) {
> @@ -3860,8 +3860,7 @@ validate_texbuffer_format(const struct gl_context *ctx, GLenum internalFormat)
>      * any mention of R/RG formats, but they appear in the GL 3.1 core
>      * specification.
>      */
> -   if (ctx->VersionMajor < 3 ||
> -       (ctx->VersionMajor == 3 && ctx->VersionMinor == 0)) {
> +   if (ctx->Version < 30) {

I think this is wrong.  The old check accepted GL 1.x, 2.x, and 3.0, but
not later.  Your new check doesn't accept 3.0.  I believe <= 30 would work.

Otherwise, this looks good.  With that change, this patch (only) is:
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

>        GLenum base_format = _mesa_get_format_base_format(format);
>  
>        if (base_format == GL_R || base_format == GL_RG)
> diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c
> index 1376219..56372e8 100644
> --- a/src/mesa/main/texparam.c
> +++ b/src/mesa/main/texparam.c
> @@ -1016,7 +1016,7 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
>           *params = _mesa_get_format_bits(texFormat, pname);
>           break;
>        case GL_TEXTURE_SHARED_SIZE:
> -         if (ctx->VersionMajor < 3 &&
> +         if (ctx->Version < 30 &&
>               !ctx->Extensions.EXT_texture_shared_exponent)
>              goto invalid_pname;
>           *params = texFormat == MESA_FORMAT_RGB9_E5_FLOAT ? 5 : 0;
> diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c
> index 7ec7cfe..327fabb 100644
> --- a/src/mesa/main/varray.c
> +++ b/src/mesa/main/varray.c
> @@ -568,7 +568,7 @@ get_vertex_array_attrib(struct gl_context *ctx, GLuint index, GLenum pname,
>     case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB:
>        return array->BufferObj->Name;
>     case GL_VERTEX_ATTRIB_ARRAY_INTEGER:
> -      if (ctx->VersionMajor >= 3 || ctx->Extensions.EXT_gpu_shader4) {
> +      if (ctx->Version >= 30 || ctx->Extensions.EXT_gpu_shader4) {
>           return array->Integer;
>        }
>        goto error;
> @@ -1092,8 +1092,7 @@ _mesa_PrimitiveRestartIndex(GLuint index)
>  {
>     GET_CURRENT_CONTEXT(ctx);
>  
> -   if (!ctx->Extensions.NV_primitive_restart &&
> -       ctx->VersionMajor * 10 + ctx->VersionMinor < 31) {
> +   if (!ctx->Extensions.NV_primitive_restart && ctx->Version < 31) {
>        _mesa_error(ctx, GL_INVALID_OPERATION, "glPrimitiveRestartIndexNV()");
>        return;
>     }
> diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
> index 91ef2df..7283194 100644
> --- a/src/mesa/main/version.c
> +++ b/src/mesa/main/version.c
> @@ -33,22 +33,25 @@
>   * are point-separated version numbers, such as "3.0".
>   */
>  static void
> -override_version(struct gl_context *ctx, GLuint *major, GLuint *minor)
> +override_version(struct gl_context *ctx)
>  {
>     const char *env_var = "MESA_GL_VERSION_OVERRIDE";
>     const char *version;
>     int n;
> +   int major, minor;
>  
>     version = getenv(env_var);
>     if (!version) {
>        return;
>     }
>  
> -   n = sscanf(version, "%u.%u", major, minor);
> +   n = sscanf(version, "%u.%u", &major, &minor);
>     if (n != 2) {
>        fprintf(stderr, "error: invalid value for %s: %s\n", env_var, version);
>        return;
>     }
> +
> +   ctx->Version = major * 10 + minor;
>  }
>  
>  /**
> @@ -218,10 +221,9 @@ compute_version(struct gl_context *ctx)
>        minor = 2;
>     }
>  
> -   ctx->VersionMajor = major;
> -   ctx->VersionMinor = minor;
> +   ctx->Version = major * 10 + minor;
>  
> -   override_version(ctx, &ctx->VersionMajor, &ctx->VersionMinor);
> +   override_version(ctx);
>  
>     ctx->VersionString = (char *) malloc(max);
>     if (ctx->VersionString) {
> @@ -231,7 +233,7 @@ compute_version(struct gl_context *ctx)
>  		     " (" MESA_GIT_SHA1 ")"
>  #endif
>  		     ,
> -		     ctx->VersionMajor, ctx->VersionMinor);
> +		     ctx->Version / 10, ctx->Version % 10);
>     }
>  }
>  
> @@ -248,11 +250,9 @@ compute_version_es1(struct gl_context *ctx)
>                                ctx->Extensions.EXT_point_parameters);
>  
>     if (ver_1_1) {
> -      ctx->VersionMajor = 1;
> -      ctx->VersionMinor = 1;
> +      ctx->Version = 11;
>     } else if (ver_1_0) {
> -      ctx->VersionMajor = 1;
> -      ctx->VersionMinor = 0;
> +      ctx->Version = 10;
>     } else {
>        _mesa_problem(ctx, "Incomplete OpenGL ES 1.0 support.");
>     }
> @@ -265,7 +265,7 @@ compute_version_es1(struct gl_context *ctx)
>  		     " (" MESA_GIT_SHA1 ")"
>  #endif
>  		     ,
> -		     ctx->VersionMinor);
> +		     ctx->Version % 10);
>     }
>  }
>  
> @@ -285,8 +285,7 @@ compute_version_es2(struct gl_context *ctx)
>                                ctx->Extensions.ARB_texture_non_power_of_two &&
>                                ctx->Extensions.EXT_blend_equation_separate);
>     if (ver_2_0) {
> -      ctx->VersionMajor = 2;
> -      ctx->VersionMinor = 0;
> +      ctx->Version = 20;
>     } else {
>        _mesa_problem(ctx, "Incomplete OpenGL ES 2.0 support.");
>     }
> @@ -303,14 +302,14 @@ compute_version_es2(struct gl_context *ctx)
>  }
>  
>  /**
> - * Set the context's VersionMajor, VersionMinor, VersionString fields.
> + * Set the context's Version and VersionString fields.
>   * This should only be called once as part of context initialization
>   * or to perform version check for GLX_ARB_create_context_profile.
>   */
>  void
>  _mesa_compute_version(struct gl_context *ctx)
>  {
> -   if (ctx->VersionMajor)
> +   if (ctx->Version)
>        return;
>  
>     switch (ctx->API) {
> diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
> index 875e0c4..5142eb2 100644
> --- a/src/mesa/state_tracker/st_manager.c
> +++ b/src/mesa/state_tracker/st_manager.c
> @@ -652,8 +652,7 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi,
>         * yet enforce the added restrictions of a forward-looking context, so
>         * fail that too.
>         */
> -      if (st->ctx->VersionMajor * 10 + st->ctx->VersionMinor <
> -          attribs->major * 10 + attribs->minor
> +      if (st->ctx->Version < attribs->major * 10 + attribs->minor
>  	  || (attribs->flags & ~ST_CONTEXT_FLAG_DEBUG) != 0) {
>  	 *error = ST_CONTEXT_ERROR_BAD_VERSION;
>           st_destroy_context(st);
> 



More information about the mesa-dev mailing list