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 :
>From eb2cf312a7c7ba70f22f8eb8d66aab8a1d78b6d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maxence=20Le=20Dor=C3=A9?= <maxence.led...@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 }, -- 1.7.9.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev