[Mesa-dev] (no subject)

Ian Romanick idr at freedesktop.org
Wed Aug 21 21:17:20 PDT 2013


On 08/21/2013 08:46 PM, Maxence Le Doré wrote:
> As ARB_seamless_cubemap_per_texture is word-to-word same as
> AMD_seamless_cubemap_per_texture and this last already implemented we
> can enable the ARB extension. This patch is a candidate for it :

Since the extensions are identical, we should expose both strings from a 
single flag.  This should be a one-line change to extensions.c.  There 
are a few other extensions that behave this way (e.g., 
GL_NV_texture_rectangle).

>  From eb2cf312a7c7ba70f22f8eb8d66aab8a1d78b6d9 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Maxence=20Le=20Dor=C3=A9?= <maxence.ledore at gmail.com>
> Date: Thu, 22 Aug 2013 05:38:15 +0200
> Subject: [PATCH] enable ARB_seamless_cubemap_per_texture
>
> ---
>   src/gallium/docs/source/resources.rst  |    3 ++-
>   src/mesa/main/extensions.c             |    1 +
>   src/mesa/main/mtypes.h                 |    3 ++-
>   src/mesa/main/samplerobj.c             |   15 ++++++++++-----
>   src/mesa/main/texparam.c               |    5 ++++-
>   src/mesa/state_tracker/st_extensions.c |    1 +
>   6 files changed, 20 insertions(+), 8 deletions(-)
>
> diff --git a/src/gallium/docs/source/resources.rst
> b/src/gallium/docs/source/resources.rst
> index 56a86d6..a7f45a3 100644
> --- a/src/gallium/docs/source/resources.rst
> +++ b/src/gallium/docs/source/resources.rst
> @@ -174,7 +174,8 @@ resulting in filtering taking samples from
> multiple surfaces near to the edge.
>   OpenGL: GL_TEXTURE_CUBE_MAP in GL 1.3 or EXT_texture_cube_map
>
>   - PIPE_CAP_NPOT_TEXTURES is equivalent to GL 2.0 or
> GL_ARB_texture_non_power_of_two
> -- Seamless cube maps require GL 3.2 or GL_ARB_seamless_cube_map or
> GL_AMD_seamless_cubemap_per_texture
> +- Seamless cube maps require GL 3.2 or GL_ARB_seamless_cube_map or
> GL_ARB_seamless_cubemap_per_texture
> +  or GL_AMD_seamless_cubemap_per_texture
>   - Cube map arrays require GL 4.0 or GL_ARB_texture_cube_map_array
>
>   D3D11: 2D array textures with the D3D11_RESOURCE_MISC_TEXTURECUBE flag
> diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
> index 1a040ee..6b02b9b 100644
> --- a/src/mesa/main/extensions.c
> +++ b/src/mesa/main/extensions.c
> @@ -120,6 +120,7 @@ static const struct extension extension_table[] = {
>      { "GL_ARB_robustness",                          o(dummy_true),
>                           GL,             2010 },
>      { "GL_ARB_sampler_objects",                     o(dummy_true),
>                           GL,             2009 },
>      { "GL_ARB_seamless_cube_map",
> o(ARB_seamless_cube_map),                   GL,             2009 },
> +   { "GL_ARB_seamless_cubemap_per_texture",
> o(ARB_seamless_cubemap_per_texture),        GL,             2013 },
>      { "GL_ARB_shader_bit_encoding",
> o(ARB_shader_bit_encoding),                 GL,             2010 },
>      { "GL_ARB_shader_objects",                      o(dummy_true),
>                           GL,             2002 },
>      { "GL_ARB_shader_stencil_export",
> o(ARB_shader_stencil_export),               GL,             2009 },
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index 5f9b7f9..641e5a9 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -1142,7 +1142,7 @@ struct gl_sampler_object
>      GLenum CompareMode; /**< GL_ARB_shadow */
>      GLenum CompareFunc; /**< GL_ARB_shadow */
>      GLenum sRGBDecode;           /**< GL_DECODE_EXT or GL_SKIP_DECODE_EXT */
> -   GLboolean CubeMapSeamless;   /**< GL_AMD_seamless_cubemap_per_texture */
> +   GLboolean CubeMapSeamless;   /**<
> GL_{ARB,AMD}_seamless_cubemap_per_texture */
>   };
>
>
> @@ -3056,6 +3056,7 @@ struct gl_extensions
>      GLboolean ARB_occlusion_query2;
>      GLboolean ARB_point_sprite;
>      GLboolean ARB_seamless_cube_map;
> +   GLboolean ARB_seamless_cubemap_per_texture;
>      GLboolean ARB_shader_bit_encoding;
>      GLboolean ARB_shader_stencil_export;
>      GLboolean ARB_shader_texture_lod;
> diff --git a/src/mesa/main/samplerobj.c b/src/mesa/main/samplerobj.c
> index 3857eda..0182531 100644
> --- a/src/mesa/main/samplerobj.c
> +++ b/src/mesa/main/samplerobj.c
> @@ -568,7 +568,8 @@ static GLuint
>   set_sampler_cube_map_seamless(struct gl_context *ctx,
>                                 struct gl_sampler_object *samp, GLboolean param)
>   {
> -   if (!ctx->Extensions.AMD_seamless_cubemap_per_texture)
> +   if (!ctx->Extensions.AMD_seamless_cubemap_per_texture ||
> +       !ctx->Extensions.ARB_seamless_cubemap_per_texture)
>         return INVALID_PNAME;
>
>      if (samp->CubeMapSeamless == param)
> @@ -1176,7 +1177,8 @@ _mesa_GetSamplerParameteriv(GLuint sampler,
> GLenum pname, GLint *params)
>         params[3] = FLOAT_TO_INT(sampObj->BorderColor.f[3]);
>         break;
>      case GL_TEXTURE_CUBE_MAP_SEAMLESS:
> -      if (!ctx->Extensions.AMD_seamless_cubemap_per_texture)
> +      if (!ctx->Extensions.AMD_seamless_cubemap_per_texture ||
> +          !ctx->Extensions.ARB_seamless_cubemap_per_texture)
>            goto invalid_pname;
>         *params = sampObj->CubeMapSeamless;
>         break;
> @@ -1254,7 +1256,8 @@ _mesa_GetSamplerParameterfv(GLuint sampler,
> GLenum pname, GLfloat *params)
>         params[3] = sampObj->BorderColor.f[3];
>         break;
>      case GL_TEXTURE_CUBE_MAP_SEAMLESS:
> -      if (!ctx->Extensions.AMD_seamless_cubemap_per_texture)
> +      if (!ctx->Extensions.AMD_seamless_cubemap_per_texture ||
> +          !ctx->Extensions.ARB_seamless_cubemap_per_texture)
>            goto invalid_pname;
>         *params = (GLfloat) sampObj->CubeMapSeamless;
>         break;
> @@ -1333,7 +1336,8 @@ _mesa_GetSamplerParameterIiv(GLuint sampler,
> GLenum pname, GLint *params)
>         params[3] = sampObj->BorderColor.i[3];
>         break;
>      case GL_TEXTURE_CUBE_MAP_SEAMLESS:
> -      if (!ctx->Extensions.AMD_seamless_cubemap_per_texture)
> +      if (!ctx->Extensions.AMD_seamless_cubemap_per_texture ||
> +          !ctx->Extensions.ARB_seamless_cubemap_per_texture)
>            goto invalid_pname;
>         *params = sampObj->CubeMapSeamless;
>         break;
> @@ -1412,7 +1416,8 @@ _mesa_GetSamplerParameterIuiv(GLuint sampler,
> GLenum pname, GLuint *params)
>         params[3] = sampObj->BorderColor.ui[3];
>         break;
>      case GL_TEXTURE_CUBE_MAP_SEAMLESS:
> -      if (!ctx->Extensions.AMD_seamless_cubemap_per_texture)
> +      if (!ctx->Extensions.AMD_seamless_cubemap_per_texture ||
> +          !ctx->Extensions.ARB_seamless_cubemap_per_texture)
>            goto invalid_pname;
>         *params = sampObj->CubeMapSeamless;
>         break;
> diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c
> index 757ae80..98fd325 100644
> --- a/src/mesa/main/texparam.c
> +++ b/src/mesa/main/texparam.c
> @@ -571,7 +571,8 @@ set_tex_parameteri(struct gl_context *ctx,
>
>      case GL_TEXTURE_CUBE_MAP_SEAMLESS:
>         if (_mesa_is_desktop_gl(ctx)
> -          && ctx->Extensions.AMD_seamless_cubemap_per_texture) {
> +          && (ctx->Extensions.AMD_seamless_cubemap_per_texture ||
> +              ctx->Extensions.ARB_seamless_cubemap_per_texture)) {
>            GLenum param = params[0];
>
>            if (!target_allows_setting_sampler_parameters(texObj->Target))
> @@ -1549,6 +1550,7 @@ _mesa_GetTexParameterfv( GLenum target, GLenum
> pname, GLfloat *params )
>
>         case GL_TEXTURE_CUBE_MAP_SEAMLESS:
>            if (!_mesa_is_desktop_gl(ctx)
> +             || !ctx->Extensions.ARB_seamless_cubemap_per_texture
>                || !ctx->Extensions.AMD_seamless_cubemap_per_texture)
>               goto invalid_pname;
>            *params = (GLfloat) obj->Sampler.CubeMapSeamless;
> @@ -1730,6 +1732,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum
> pname, GLint *params )
>
>         case GL_TEXTURE_CUBE_MAP_SEAMLESS:
>            if (!_mesa_is_desktop_gl(ctx)
> +             || !ctx->Extensions.ARB_seamless_cubemap_per_texture
>                || !ctx->Extensions.AMD_seamless_cubemap_per_texture)
>               goto invalid_pname;
>            *params = (GLint) obj->Sampler.CubeMapSeamless;
> diff --git a/src/mesa/state_tracker/st_extensions.c
> b/src/mesa/state_tracker/st_extensions.c
> index 0b7001b..fa73e35 100644
> --- a/src/mesa/state_tracker/st_extensions.c
> +++ b/src/mesa/state_tracker/st_extensions.c
> @@ -378,6 +378,7 @@ void st_init_extensions(struct st_context *st)
>         { o(ARB_occlusion_query2),             PIPE_CAP_OCCLUSION_QUERY
>                   },
>         { o(ARB_point_sprite),                 PIPE_CAP_POINT_SPRITE
>                   },
>         { o(ARB_seamless_cube_map),
> PIPE_CAP_SEAMLESS_CUBE_MAP                },
> +      { o(ARB_seamless_cubemap_per_texture),
> PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE    },
>         { o(ARB_shader_stencil_export),
> PIPE_CAP_SHADER_STENCIL_EXPORT            },
>         { o(ARB_shader_texture_lod),           PIPE_CAP_SM3
>                   },
>         { o(ARB_shadow),
> PIPE_CAP_TEXTURE_SHADOW_MAP               },
>



More information about the mesa-dev mailing list