From 2bb04cad14f5edd9e2657a1122ceeb1fb468f4a9 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Mon, 26 Mar 2001 19:42:40 +0000 Subject: added GL_ARB_texture_border_clamp --- src/mesa/main/enums.c | 4 +++- src/mesa/main/extensions.c | 6 +++++- src/mesa/main/mtypes.h | 13 +++++++------ src/mesa/main/texstate.c | 27 ++++++++++++++++++++------- 4 files changed, 35 insertions(+), 15 deletions(-) (limited to 'src/mesa/main') diff --git a/src/mesa/main/enums.c b/src/mesa/main/enums.c index 310b80f532..1801a4e499 100644 --- a/src/mesa/main/enums.c +++ b/src/mesa/main/enums.c @@ -1,4 +1,4 @@ -/* $Id: enums.c,v 1.15 2001/03/22 04:57:09 brianp Exp $ */ +/* $Id: enums.c,v 1.16 2001/03/26 19:42:40 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -841,6 +841,8 @@ enum_elt all_enums[] = { "GL_DOT3_RGB_EXT", 0x86ae }, { "GL_DOT3_RGBA_EXT", 0x86af }, + /* GL_ARB_texture_border_clamp */ + { "GL_CLAMP_TO_BORDER_ARB", 0x812D }, }; #define Elements(x) sizeof(x)/sizeof(*x) diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c index 395005681a..372b2bb687 100644 --- a/src/mesa/main/extensions.c +++ b/src/mesa/main/extensions.c @@ -1,4 +1,4 @@ -/* $Id: extensions.c,v 1.55 2001/03/22 14:42:24 brianp Exp $ */ +/* $Id: extensions.c,v 1.56 2001/03/26 19:42:40 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -58,6 +58,7 @@ static struct { } default_extensions[] = { { OFF, "GL_ARB_imaging", F(ARB_imaging) }, { OFF, "GL_ARB_multitexture", F(ARB_multitexture) }, + { OFF, "GL_ARB_texture_border_clamp", F(ARB_texture_border_clamp) }, { OFF, "GL_ARB_texture_compression", F(ARB_texture_compression) }, { OFF, "GL_ARB_texture_cube_map", F(ARB_texture_cube_map) }, { OFF, "GL_ARB_texture_env_add", F(EXT_texture_env_add) }, @@ -106,6 +107,7 @@ static struct { { OFF, "GL_SGI_color_matrix", F(SGI_color_matrix) }, { OFF, "GL_SGI_color_table", F(SGI_color_table) }, { OFF, "GL_SGIS_pixel_texture", F(SGIS_pixel_texture) }, + { OFF, "GL_SGIS_texture_border_clamp", F(ARB_texture_border_clamp) }, { OFF, "GL_SGIS_texture_edge_clamp", F(SGIS_texture_edge_clamp) }, { OFF, "GL_SGIX_depth_texture", F(SGIX_depth_texture) }, { OFF, "GL_SGIX_pixel_texture", F(SGIX_pixel_texture) }, @@ -127,6 +129,7 @@ _mesa_enable_sw_extensions(GLcontext *ctx) const char *extensions[] = { "GL_ARB_imaging", "GL_ARB_multitexture", + "GL_ARB_texture_border_clamp", "GL_ARB_texture_cube_map", "GL_ARB_texture_env_add", "GL_ARB_texture_env_combine", @@ -157,6 +160,7 @@ _mesa_enable_sw_extensions(GLcontext *ctx) "GL_SGI_color_table", "GL_SGIS_pixel_texture", "GL_SGIS_texture_edge_clamp", + "GL_SGIS_texture_border_clamp", "GL_SGIX_depth_texture", "GL_SGIX_pixel_texture", "GL_SGIX_shadow", diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 2c7f2e1da8..c261756b5b 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -1,4 +1,4 @@ -/* $Id: mtypes.h,v 1.31 2001/03/24 06:01:27 gareth Exp $ */ +/* $Id: mtypes.h,v 1.32 2001/03/26 19:42:40 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -798,8 +798,8 @@ struct gl_texture_format { /* Texture image record */ struct gl_texture_image { GLenum Format; /* GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, - * GL_INTENSITY, GL_RGB, GL_RGBA, or - * GL_COLOR_INDEX only + * GL_INTENSITY, GL_RGB, GL_RGBA, + * GL_COLOR_INDEX or GL_DEPTH_COMPONENT only. */ GLenum Type; /* Texel type: GL_UNSIGNED_BYTE, etc. */ GLenum IntFormat; /* Internal format as given by the user */ @@ -836,9 +836,9 @@ struct gl_texture_object { GLuint Dimensions; /* 1 or 2 or 3 or 6 (cube map) */ GLfloat Priority; /* in [0,1] */ GLchan BorderColor[4]; - GLenum WrapS; /* GL_CLAMP, REPEAT or CLAMP_TO_EDGE */ - GLenum WrapT; /* GL_CLAMP, REPEAT or CLAMP_TO_EDGE */ - GLenum WrapR; /* GL_CLAMP, REPEAT or CLAMP_TO_EDGE */ + GLenum WrapS; /* Wrap modes are: GL_CLAMP, REPEAT */ + GLenum WrapT; /* GL_CLAMP_TO_EDGE, and */ + GLenum WrapR; /* GL_CLAMP_TO_BORDER_ARB */ GLenum MinFilter; /* minification filter */ GLenum MagFilter; /* magnification filter */ GLfloat MinLod; /* min lambda, OpenGL 1.2 */ @@ -1203,6 +1203,7 @@ struct gl_extensions { */ GLboolean ARB_imaging; GLboolean ARB_multitexture; + GLboolean ARB_texture_border_clamp; GLboolean ARB_texture_compression; GLboolean ARB_texture_cube_map; GLboolean EXT_blend_color; diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c index 438ba6f142..93d12e7191 100644 --- a/src/mesa/main/texstate.c +++ b/src/mesa/main/texstate.c @@ -1,4 +1,4 @@ -/* $Id: texstate.c,v 1.38 2001/03/22 04:54:58 brianp Exp $ */ +/* $Id: texstate.c,v 1.39 2001/03/26 19:42:40 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -63,6 +63,10 @@ #define GL_DOT3_RGBA_ARB 0x86AF #endif +/* XXX this is temporary, until GL/glext.h is updated. */ +#ifndef GL_CLAMP_TO_BORDER_ARB +#define GL_CLAMP_TO_BORDER_ARB 0x812D +#endif /**********************************************************************/ @@ -722,8 +726,11 @@ _mesa_TexParameterfv( GLenum target, GLenum pname, const GLfloat *params ) case GL_TEXTURE_WRAP_S: if (texObj->WrapS == eparam) return; - - if (eparam==GL_CLAMP || eparam==GL_REPEAT || eparam==GL_CLAMP_TO_EDGE) { + if (eparam==GL_CLAMP || + eparam==GL_REPEAT || + eparam==GL_CLAMP_TO_EDGE || + (eparam == GL_CLAMP_TO_BORDER_ARB && + ctx->Extensions.ARB_texture_border_clamp)) { texObj->WrapS = eparam; } else { @@ -734,8 +741,11 @@ _mesa_TexParameterfv( GLenum target, GLenum pname, const GLfloat *params ) case GL_TEXTURE_WRAP_T: if (texObj->WrapT == eparam) return; - - if (eparam==GL_CLAMP || eparam==GL_REPEAT || eparam==GL_CLAMP_TO_EDGE) { + if (eparam==GL_CLAMP || + eparam==GL_REPEAT || + eparam==GL_CLAMP_TO_EDGE || + (eparam == GL_CLAMP_TO_BORDER_ARB && + ctx->Extensions.ARB_texture_border_clamp)) { texObj->WrapT = eparam; } else { @@ -746,8 +756,11 @@ _mesa_TexParameterfv( GLenum target, GLenum pname, const GLfloat *params ) case GL_TEXTURE_WRAP_R_EXT: if (texObj->WrapR == eparam) return; - - if (eparam==GL_CLAMP || eparam==GL_REPEAT || eparam==GL_CLAMP_TO_EDGE) { + if (eparam==GL_CLAMP || + eparam==GL_REPEAT || + eparam==GL_CLAMP_TO_EDGE || + (eparam == GL_CLAMP_TO_BORDER_ARB && + ctx->Extensions.ARB_texture_border_clamp)) { texObj->WrapR = eparam; } else { -- cgit v1.2.3