[Mesa-dev] [PATCH 20/21] mesa: GL_ARB_texture_storage_multisample is not optional with GL_ARB_texture_multisample

Kenneth Graunke kenneth at whitecape.org
Thu Jun 27 21:54:30 PDT 2013


On 06/27/2013 06:20 PM, Ian Romanick wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
>
> In Mesa, this extension is implemented purely in software.  Drivers may
> *optionally* provide optimized paths.  If a driver enables,
> GL_ARB_texture_multisample, it gets GL_ARB_texture_storage_multisample
> for free.
>
> NOTE: This has the side effect of enabling the extension in Gallium
> drivers that enable GL_ARB_texture_multisample.
>
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> ---
>   src/mesa/drivers/dri/i965/intel_extensions.c |  1 -
>   src/mesa/main/extensions.c                   |  2 +-
>   src/mesa/main/mtypes.h                       |  1 -
>   src/mesa/main/texparam.c                     | 10 ++--------
>   4 files changed, 3 insertions(+), 11 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c b/src/mesa/drivers/dri/i965/intel_extensions.c
> index 5064018..980fd72 100644
> --- a/src/mesa/drivers/dri/i965/intel_extensions.c
> +++ b/src/mesa/drivers/dri/i965/intel_extensions.c
> @@ -146,7 +146,6 @@ intelInitExtensions(struct gl_context *ctx)
>         ctx->Extensions.OES_depth_texture_cube_map = true;
>         ctx->Extensions.ARB_shading_language_packing = true;
>         ctx->Extensions.ARB_texture_multisample = true;
> -      ctx->Extensions.ARB_texture_storage_multisample = true;
>
>         /* Test if the kernel has the ioctl. */
>         if (drm_intel_reg_read(intel->bufmgr, TIMESTAMP, &dummy) == 0)
> diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
> index f914981..3fbdf3f 100644
> --- a/src/mesa/main/extensions.c
> +++ b/src/mesa/main/extensions.c
> @@ -150,7 +150,7 @@ static const struct extension extension_table[] = {
>      { "GL_ARB_texture_rgb10_a2ui",                  o(ARB_texture_rgb10_a2ui),                  GL,             2009 },
>      { "GL_ARB_texture_rg",                          o(ARB_texture_rg),                          GL,             2008 },
>      { "GL_ARB_texture_storage",                     o(dummy_true),                              GL,             2011 },
> -   { "GL_ARB_texture_storage_multisample",         o(ARB_texture_storage_multisample),         GL,             2012 },
> +   { "GL_ARB_texture_storage_multisample",         o(ARB_texture_multisample),                 GL,             2012 },
>      { "GL_ARB_texture_swizzle",                     o(EXT_texture_swizzle),                     GL,             2008 },
>      { "GL_ARB_timer_query",                         o(ARB_timer_query),                         GL,             2010 },
>      { "GL_ARB_transform_feedback2",                 o(ARB_transform_feedback2),                 GL,             2010 },
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index a19ecd6..d405ac8 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -3036,7 +3036,6 @@ struct gl_extensions
>      GLboolean ARB_texture_query_lod;
>      GLboolean ARB_texture_rg;
>      GLboolean ARB_texture_rgb10_a2ui;
> -   GLboolean ARB_texture_storage_multisample;
>      GLboolean ARB_timer_query;
>      GLboolean ARB_transform_feedback2;
>      GLboolean ARB_transform_feedback3;
> diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c
> index 8ed8fe0..1b76fba 100644
> --- a/src/mesa/main/texparam.c
> +++ b/src/mesa/main/texparam.c
> @@ -176,15 +176,9 @@ get_texobj(struct gl_context *ctx, GLenum target, GLboolean get)
>         }
>         break;
>      case GL_TEXTURE_2D_MULTISAMPLE:
> -      if (ctx->Extensions.ARB_texture_storage_multisample) {
> -         return texUnit->CurrentTex[TEXTURE_2D_MULTISAMPLE_INDEX];
> -      }
> -      break;
> +      return texUnit->CurrentTex[TEXTURE_2D_MULTISAMPLE_INDEX];
>      case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
> -      if (ctx->Extensions.ARB_texture_storage_multisample) {
> -         return texUnit->CurrentTex[TEXTURE_2D_MULTISAMPLE_ARRAY_INDEX];
> -      }
> -      break;
> +      return texUnit->CurrentTex[TEXTURE_2D_MULTISAMPLE_ARRAY_INDEX];
>      default:
>         ;
>      }
>

This looks like it'll make TexParameter accept GL_TEXTURE_2D_MULTISAMPLE 
and GL_TEXTURE_2D_MULTISAMPLE_ARRAY even on drivers that don't support 
multisampling at all, which seems wrong.

I believe you simply want to change these to:

       if (ctx->Extensions.ARB_texture_multisample)




More information about the mesa-dev mailing list