diff options
| author | Brian Paul <brianp@vmware.com> | 2010-01-04 20:00:00 -0700 | 
|---|---|---|
| committer | Brian Paul <brianp@vmware.com> | 2010-01-04 20:00:09 -0700 | 
| commit | 7836a96657eeb1b1a924d582bbf9db5b1692fadc (patch) | |
| tree | 2eb9b3d30cce7a1ad3c7464bca41817ec1d5f084 /src/mesa | |
| parent | f6c2d1f94ffa8f87b22ed1ff5c465d0e9aa1489e (diff) | |
mesa: added _mesa_[Get]TexParameterI[u]iv() functions
New in GL 3.0.  Primarily meant for setting int/uint-valued texture
border color.  Not plugged into dispatch table yet.
Diffstat (limited to 'src/mesa')
| -rw-r--r-- | src/mesa/main/texparam.c | 117 | ||||
| -rw-r--r-- | src/mesa/main/texparam.h | 12 | 
2 files changed, 128 insertions, 1 deletions
| diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index 474b950def..d917e21e74 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -511,7 +511,10 @@ set_tex_parameterf(GLcontext *ctx,     case GL_TEXTURE_BORDER_COLOR:        flush(ctx, texObj); -      COPY_4V(texObj->BorderColor.f, params); +      texObj->BorderColor.f[RCOMP] = params[0]; +      texObj->BorderColor.f[GCOMP] = params[1]; +      texObj->BorderColor.f[BCOMP] = params[2]; +      texObj->BorderColor.f[ACOMP] = params[3];        return GL_TRUE;     default: @@ -728,6 +731,68 @@ _mesa_TexParameteriv(GLenum target, GLenum pname, const GLint *params)  } +/** + * Set tex parameter to integer value(s).  Primarily intended to set + * integer-valued texture border color (for integer-valued textures). + * New in GL 3.0. + */ +void GLAPIENTRY +_mesa_TexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ +   struct gl_texture_object *texObj; +   GET_CURRENT_CONTEXT(ctx); +   ASSERT_OUTSIDE_BEGIN_END(ctx); + +   texObj = get_texobj(ctx, target, GL_FALSE); +   if (!texObj) +      return; + +   switch (pname) { +   case GL_TEXTURE_BORDER_COLOR: +      FLUSH_VERTICES(ctx, _NEW_TEXTURE); +      /* set the integer-valued border color */ +      COPY_4V(texObj->BorderColor.i, params); +      break; +   default: +      _mesa_TexParameteriv(target, pname, params); +      break; +   } +   /* XXX no driver hook for TexParameterIiv() yet */ +} + + +/** + * Set tex parameter to unsigned integer value(s).  Primarily intended to set + * uint-valued texture border color (for integer-valued textures). + * New in GL 3.0 + */ +void GLAPIENTRY +_mesa_TexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ +   struct gl_texture_object *texObj; +   GET_CURRENT_CONTEXT(ctx); +   ASSERT_OUTSIDE_BEGIN_END(ctx); + +   texObj = get_texobj(ctx, target, GL_FALSE); +   if (!texObj) +      return; + +   switch (pname) { +   case GL_TEXTURE_BORDER_COLOR: +      FLUSH_VERTICES(ctx, _NEW_TEXTURE); +      /* set the unsigned integer-valued border color */ +      COPY_4V(texObj->BorderColor.ui, params); +      break; +   default: +      _mesa_TexParameteriv(target, pname, (const GLint *) params); +      break; +   } +   /* XXX no driver hook for TexParameterIuiv() yet */ +} + + + +  void GLAPIENTRY  _mesa_GetTexLevelParameterfv( GLenum target, GLint level,                                GLenum pname, GLfloat *params ) @@ -1294,3 +1359,53 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params )     _mesa_unlock_texture(ctx, obj);  } + + +/** New in GL 3.0 */ +void GLAPIENTRY +_mesa_GetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ +   struct gl_texture_object *texObj; +   GET_CURRENT_CONTEXT(ctx); +   ASSERT_OUTSIDE_BEGIN_END(ctx); + +   texObj = get_texobj(ctx, target, GL_TRUE); +    +   switch (pname) { +   case GL_TEXTURE_BORDER_COLOR: +      COPY_4V(params, texObj->BorderColor.i); +      break; +   default: +      _mesa_GetTexParameteriv(target, pname, params); +   } +} + + +/** New in GL 3.0 */ +void GLAPIENTRY +_mesa_GetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ +   struct gl_texture_object *texObj; +   GET_CURRENT_CONTEXT(ctx); +   ASSERT_OUTSIDE_BEGIN_END(ctx); + +   texObj = get_texobj(ctx, target, GL_TRUE); +    +   switch (pname) { +   case GL_TEXTURE_BORDER_COLOR: +      COPY_4V(params, texObj->BorderColor.i); +      break; +   default: +      { +         GLint ip[4]; +         _mesa_GetTexParameteriv(target, pname, ip); +         params[0] = ip[0]; +         if (pname == GL_TEXTURE_SWIZZLE_RGBA_EXT ||  +             pname == GL_TEXTURE_CROP_RECT_OES) { +            params[1] = ip[1]; +            params[2] = ip[2]; +            params[3] = ip[3]; +         } +      } +   } +} diff --git a/src/mesa/main/texparam.h b/src/mesa/main/texparam.h index 454b96350e..19b4116c0b 100644 --- a/src/mesa/main/texparam.h +++ b/src/mesa/main/texparam.h @@ -44,6 +44,11 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params );  extern void GLAPIENTRY  _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ); +extern void GLAPIENTRY +_mesa_GetTexParameterIiv(GLenum target, GLenum pname, GLint *params); + +extern void GLAPIENTRY +_mesa_GetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params);  extern void GLAPIENTRY @@ -60,4 +65,11 @@ extern void GLAPIENTRY  _mesa_TexParameteriv( GLenum target, GLenum pname, const GLint *params ); +extern void GLAPIENTRY +_mesa_TexParameterIiv(GLenum target, GLenum pname, const GLint *params); + +extern void GLAPIENTRY +_mesa_TexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); + +  #endif /* TEXPARAM_H */ | 
