mesa: texture crop rect state
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 12 Aug 2008 23:41:57 +0000 (17:41 -0600)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 12 Aug 2008 23:41:57 +0000 (17:41 -0600)
src/mesa/main/glheader.h
src/mesa/main/mtypes.h
src/mesa/main/texparam.c

index 3131a356b86f2fca6d3da226f1c4bd190469fe09..f0f97c218c2266255953dee5edc17e35bddd87bd 100644 (file)
 #endif
 
 
+#ifndef GL_OES_draw_texture
+#define GL_TEXTURE_CROP_RECT_OES  0x8B9D
+#endif
+
 
 #if !defined(CAPI) && defined(WIN32) && !defined(BUILD_FOR_SNAP)
 #define CAPI _cdecl
index a95f02b889b9b2aba7dddef3f9ff8a25b165c0f3..71a4ca55bc44785fd4fd3663e72a9f70a936cad6 100644 (file)
@@ -1434,6 +1434,7 @@ struct gl_texture_object
    GLenum DepthMode;           /**< GL_ARB_depth_texture */
    GLint _MaxLevel;            /**< actual max mipmap level (q in the spec) */
    GLfloat _MaxLambda;         /**< = _MaxLevel - BaseLevel (q - b in spec) */
+   GLint CropRect[4];           /**< GL_OES_draw_texture */
    GLboolean GenerateMipmap;    /**< GL_SGIS_generate_mipmap */
    GLboolean _Complete;                /**< Is texture object complete? */
 
@@ -1443,7 +1444,6 @@ struct gl_texture_object
    /** GL_EXT_paletted_texture */
    struct gl_color_table Palette;
 
-
    /**
     * \name For device driver.
     * Note: instead of attaching driver data to this pointer, it's preferable
index af288c4e18cc13a6235a443bdd0116df09b0ff2f..3f3b448dbc649c5cd66aefecb5869723b015f30e 100644 (file)
@@ -409,6 +409,14 @@ _mesa_TexParameterfv( GLenum target, GLenum pname, const GLfloat *params )
             }
          }
          break;
+#ifdef FEATURE_OES_draw_texture
+      case GL_TEXTURE_CROP_RECT_OES:
+         texObj->CropRect[0] = (GLint) params[0];
+         texObj->CropRect[1] = (GLint) params[1];
+         texObj->CropRect[2] = (GLint) params[2];
+         texObj->CropRect[3] = (GLint) params[3];
+         break;
+#endif
 
       default:
          _mesa_error(ctx, GL_INVALID_ENUM,
@@ -447,6 +455,12 @@ _mesa_TexParameteriv( GLenum target, GLenum pname, const GLint *params )
       fparam[2] = INT_TO_FLOAT(params[2]);
       fparam[3] = INT_TO_FLOAT(params[3]);
    }
+   else if (pname == GL_TEXTURE_CROP_RECT_OES) {
+      fparam[0] = (GLfloat) params[0];
+      fparam[1] = (GLfloat) params[1];
+      fparam[2] = (GLfloat) params[2];
+      fparam[3] = (GLfloat) params[3];
+   }
    else {
       if (pname == GL_TEXTURE_PRIORITY)
          fparam[0] = INT_TO_FLOAT(params[0]);
@@ -885,6 +899,14 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params )
         else 
            error = 1;
          break;
+#ifdef FEATURE_OES_draw_texture
+      case GL_TEXTURE_CROP_RECT_OES:
+         params[0] = obj->CropRect[0];
+         params[0] = obj->CropRect[1];
+         params[0] = obj->CropRect[2];
+         params[0] = obj->CropRect[3];
+         break;
+#endif
       default:
         error = 1;
         break;
@@ -1027,6 +1049,14 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params )
             return;
          }
          break;
+#ifdef FEATURE_OES_draw_texture
+      case GL_TEXTURE_CROP_RECT_OES:
+         params[0] = obj->CropRect[0];
+         params[0] = obj->CropRect[1];
+         params[0] = obj->CropRect[2];
+         params[0] = obj->CropRect[3];
+         break;
+#endif
       default:
          ; /* silence warnings */
    }