On 05/03/2011 07:55 AM, Marek Olšák wrote:
---
  src/mesa/main/extensions.c |    1 +
  src/mesa/main/mtypes.h     |    2 ++
  src/mesa/main/texobj.c     |    2 ++
  src/mesa/main/texparam.c   |   32 ++++++++++++++++++++++++++++++++
  4 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index 1062cde..a9ef8fa 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -260,6 +260,7 @@ static const struct extension extension_table[] = {
     { "GL_3DFX_texture_compression_FXT1",           
o(TDFX_texture_compression_FXT1),           GL,             1999 },
     { "GL_AMD_conservative_depth",                  o(AMD_conservative_depth), 
                 GL,             2009 },
     { "GL_AMD_draw_buffers_blend",                  o(ARB_draw_buffers_blend), 
                 GL,             2009 },
+   { "GL_AMD_seamless_cubemap_per_texture",        
o(AMD_seamless_cubemap_per_texture),        GL,             2009 },
     { "GL_AMD_shader_stencil_export",               
o(ARB_shader_stencil_export),               GL,             2009 },
     { "GL_APPLE_client_storage",                    o(APPLE_client_storage),   
                 GL,             2002 },
     { "GL_APPLE_object_purgeable",                  o(APPLE_object_purgeable), 
                 GL,             2006 },
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index fba65e8..ad65b55 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -1370,6 +1370,7 @@ struct gl_texture_object
     GLint CropRect[4];           /**<  GL_OES_draw_texture */
     GLenum Swizzle[4];           /**<  GL_EXT_texture_swizzle */
     GLuint _Swizzle;             /**<  same as Swizzle, but SWIZZLE_* format */
+   GLboolean CubeMapSeamless;   /**<  GL_AMD_seamless_cubemap_per_texture */

I'm wondering if this field should be per-texture object or per-sampler object. I've sent an email to someone at AMD to find out. I'll let you know.


     GLboolean GenerateMipmap;    /**<  GL_SGIS_generate_mipmap */
     GLboolean _Complete;               /**<  Is texture object complete? */
     GLboolean _RenderToTexture;  /**<  Any rendering to this texture? */
@@ -2885,6 +2886,7 @@ struct gl_extensions
     GLboolean OES_standard_derivatives;
     /* vendor extensions */
     GLboolean AMD_conservative_depth;
+   GLboolean AMD_seamless_cubemap_per_texture;
     GLboolean APPLE_client_storage;
     GLboolean APPLE_packed_pixels;
     GLboolean APPLE_vertex_array_object;
diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
index 43d6e52..2272110 100644
--- a/src/mesa/main/texobj.c
+++ b/src/mesa/main/texobj.c
@@ -146,6 +146,7 @@ _mesa_initialize_texture_object( struct gl_texture_object 
*obj,
     obj->Swizzle[2] = GL_BLUE;
     obj->Swizzle[3] = GL_ALPHA;
     obj->_Swizzle = SWIZZLE_NOOP;
+   obj->CubeMapSeamless = GL_FALSE;
     obj->Sampler.sRGBDecode = GL_DECODE_EXT;
  }

@@ -259,6 +260,7 @@ _mesa_copy_texture_object( struct gl_texture_object *dest,
     dest->_Complete = src->_Complete;
     COPY_4V(dest->Swizzle, src->Swizzle);
     dest->_Swizzle = src->_Swizzle;
+   dest->CubeMapSeamless = src->CubeMapSeamless;
  }


diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c
index f86a8cf..05f77b3 100644
--- a/src/mesa/main/texparam.c
+++ b/src/mesa/main/texparam.c
@@ -439,6 +439,20 @@ set_tex_parameteri(struct gl_context *ctx,
        }
        goto invalid_pname;

+   case GL_TEXTURE_CUBE_MAP_SEAMLESS:
+      if (ctx->Extensions.AMD_seamless_cubemap_per_texture) {
+         GLenum param = params[0];
+         if (param != GL_TRUE&&  param != GL_FALSE) {
+            goto invalid_param;
+         }
+         if (param != texObj->CubeMapSeamless) {
+            flush(ctx);
+            texObj->CubeMapSeamless = param;
+         }
+         return GL_TRUE;
+      }
+      goto invalid_pname;
+
     default:
        goto invalid_pname;
     }
@@ -580,6 +594,7 @@ _mesa_TexParameterf(GLenum target, GLenum pname, GLfloat 
param)
     case GL_TEXTURE_COMPARE_FUNC_ARB:
     case GL_DEPTH_TEXTURE_MODE_ARB:
     case GL_TEXTURE_SRGB_DECODE_EXT:
+   case GL_TEXTURE_CUBE_MAP_SEAMLESS:
        {
           /* convert float param to int */
           GLint p[4];
@@ -629,6 +644,7 @@ _mesa_TexParameterfv(GLenum target, GLenum pname, const 
GLfloat *params)
     case GL_TEXTURE_COMPARE_FUNC_ARB:
     case GL_DEPTH_TEXTURE_MODE_ARB:
     case GL_TEXTURE_SRGB_DECODE_EXT:
+   case GL_TEXTURE_CUBE_MAP_SEAMLESS:
        {
           /* convert float param to int */
           GLint p[4];
@@ -1235,6 +1251,14 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, 
GLfloat *params )
           }
           break;

+      case GL_TEXTURE_CUBE_MAP_SEAMLESS:
+      if (ctx->Extensions.AMD_seamless_cubemap_per_texture) {
+         *params = (GLfloat) obj->CubeMapSeamless;
+      }
+      else {
+         error = GL_TRUE;
+      }
+
        default:
         error = GL_TRUE;
         break;
@@ -1396,6 +1420,14 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, 
GLint *params )
           }
           break;

+      case GL_TEXTURE_CUBE_MAP_SEAMLESS:
+         if (ctx->Extensions.AMD_seamless_cubemap_per_texture) {
+            *params = (GLint) obj->CubeMapSeamless;
+         }
+         else {
+            error = GL_TRUE;
+         }
+
        default:
           ; /* silence warnings */
     }

Other than the above issue, Reviewed-by: Brian Paul <bri...@vmware.com>

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to