dri: use BorderColor instead of _BorderChan
This commit is contained in:
@@ -107,9 +107,14 @@ static void gammaSetTexFilter(gammaContextPtr gmesa,
|
||||
|
||||
static void gammaSetTexBorderColor(gammaContextPtr gmesa,
|
||||
gammaTextureObjectPtr t,
|
||||
GLubyte color[4])
|
||||
const GLfloat color[4])
|
||||
{
|
||||
t->TextureBorderColor = PACK_COLOR_8888(color[0], color[1], color[2], color[3]);
|
||||
GLubyte c[4];
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[0], color[0]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[1], color[1]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[2], color[2]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[3], color[3]);
|
||||
t->TextureBorderColor = PACK_COLOR_8888(c[0], c[1], c[2], c[3]);
|
||||
}
|
||||
|
||||
|
||||
@@ -143,7 +148,7 @@ static void gammaTexParameter( GLcontext *ctx, GLenum target,
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BORDER_COLOR:
|
||||
gammaSetTexBorderColor( gmesa, t, tObj->_BorderChan );
|
||||
gammaSetTexBorderColor( gmesa, t, tObj->BorderColor );
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BASE_LEVEL:
|
||||
@@ -347,7 +352,7 @@ static void gammaBindTexture( GLcontext *ctx, GLenum target,
|
||||
|
||||
gammaSetTexWrapping( t, tObj->WrapS, tObj->WrapT );
|
||||
gammaSetTexFilter( gmesa, t, tObj->MinFilter, tObj->MagFilter, bias );
|
||||
gammaSetTexBorderColor( gmesa, t, tObj->_BorderChan );
|
||||
gammaSetTexBorderColor( gmesa, t, tObj->BorderColor );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ static void i810SetTexFilter(i810ContextPtr imesa,
|
||||
|
||||
|
||||
static void
|
||||
i810SetTexBorderColor( i810TextureObjectPtr t, GLubyte color[4] )
|
||||
i810SetTexBorderColor( i810TextureObjectPtr t, const GLfloat color[4] )
|
||||
{
|
||||
/* Need a fallback.
|
||||
*/
|
||||
@@ -211,7 +211,7 @@ i810AllocTexObj( GLcontext *ctx, struct gl_texture_object *texObj )
|
||||
i810SetTexWrapping( t, texObj->WrapS, texObj->WrapT );
|
||||
/*i830SetTexMaxAnisotropy( t, texObj->MaxAnisotropy );*/
|
||||
i810SetTexFilter( imesa, t, texObj->MinFilter, texObj->MagFilter, bias );
|
||||
i810SetTexBorderColor( t, texObj->_BorderChan );
|
||||
i810SetTexBorderColor( t, texObj->BorderColor );
|
||||
}
|
||||
|
||||
return t;
|
||||
@@ -252,7 +252,7 @@ static void i810TexParameter( GLcontext *ctx, GLenum target,
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BORDER_COLOR:
|
||||
i810SetTexBorderColor( t, tObj->_BorderChan );
|
||||
i810SetTexBorderColor( t, tObj->BorderColor );
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BASE_LEVEL:
|
||||
|
||||
@@ -122,6 +122,7 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
|
||||
struct gl_texture_image *firstImage;
|
||||
GLuint *state = i830->state.Tex[unit], format, pitch;
|
||||
GLint lodbias;
|
||||
GLubyte border[4];
|
||||
|
||||
memset(state, 0, sizeof(state));
|
||||
|
||||
@@ -294,11 +295,16 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
|
||||
(ws)));
|
||||
}
|
||||
|
||||
/* convert border color from float to ubyte */
|
||||
CLAMPED_FLOAT_TO_UBYTE(border[0], tObj->BorderColor[0]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(border[1], tObj->BorderColor[1]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(border[2], tObj->BorderColor[2]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(border[3], tObj->BorderColor[3]);
|
||||
|
||||
state[I830_TEXREG_TM0S4] = INTEL_PACKCOLOR8888(tObj->_BorderChan[0],
|
||||
tObj->_BorderChan[1],
|
||||
tObj->_BorderChan[2],
|
||||
tObj->_BorderChan[3]);
|
||||
state[I830_TEXREG_TM0S4] = INTEL_PACKCOLOR8888(border[0],
|
||||
border[1],
|
||||
border[2],
|
||||
border[3]);
|
||||
|
||||
|
||||
I830_ACTIVESTATE(i830, I830_UPLOAD_TEX(unit), GL_TRUE);
|
||||
|
||||
@@ -133,6 +133,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
|
||||
struct gl_texture_image *firstImage;
|
||||
GLuint *state = i915->state.Tex[unit], format, pitch;
|
||||
GLint lodbias;
|
||||
GLubyte border[4];
|
||||
|
||||
memset(state, 0, sizeof(state));
|
||||
|
||||
@@ -318,21 +319,26 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
|
||||
state[I915_TEXREG_SS3] |= (unit << SS3_TEXTUREMAP_INDEX_SHIFT);
|
||||
}
|
||||
|
||||
/* convert border color from float to ubyte */
|
||||
CLAMPED_FLOAT_TO_UBYTE(border[0], tObj->BorderColor[0]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(border[1], tObj->BorderColor[1]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(border[2], tObj->BorderColor[2]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(border[3], tObj->BorderColor[3]);
|
||||
|
||||
if (firstImage->_BaseFormat == GL_DEPTH_COMPONENT) {
|
||||
/* GL specs that border color for depth textures is taken from the
|
||||
* R channel, while the hardware uses A. Spam R into all the channels
|
||||
* for safety.
|
||||
*/
|
||||
state[I915_TEXREG_SS4] = INTEL_PACKCOLOR8888(tObj->_BorderChan[0],
|
||||
tObj->_BorderChan[0],
|
||||
tObj->_BorderChan[0],
|
||||
tObj->_BorderChan[0]);
|
||||
state[I915_TEXREG_SS4] = INTEL_PACKCOLOR8888(border[0],
|
||||
border[0],
|
||||
border[0],
|
||||
border[0]);
|
||||
} else {
|
||||
state[I915_TEXREG_SS4] = INTEL_PACKCOLOR8888(tObj->_BorderChan[0],
|
||||
tObj->_BorderChan[1],
|
||||
tObj->_BorderChan[2],
|
||||
tObj->_BorderChan[3]);
|
||||
state[I915_TEXREG_SS4] = INTEL_PACKCOLOR8888(border[0],
|
||||
border[1],
|
||||
border[2],
|
||||
border[3]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ static void mach64SetTexFilter( mach64TexObjPtr t,
|
||||
}
|
||||
}
|
||||
|
||||
static void mach64SetTexBorderColor( mach64TexObjPtr t, GLubyte c[4] )
|
||||
static void mach64SetTexBorderColor( mach64TexObjPtr t, const GLfloat c[4] )
|
||||
{
|
||||
#if 0
|
||||
GLuint border = mach64PackColor( 4, c[0], c[1], c[2], c[3] );
|
||||
@@ -131,7 +131,7 @@ mach64AllocTexObj( struct gl_texture_object *texObj )
|
||||
|
||||
mach64SetTexWrap( t, texObj->WrapS, texObj->WrapT );
|
||||
mach64SetTexFilter( t, texObj->MinFilter, texObj->MagFilter );
|
||||
mach64SetTexBorderColor( t, texObj->_BorderChan );
|
||||
mach64SetTexBorderColor( t, texObj->BorderColor );
|
||||
|
||||
return t;
|
||||
}
|
||||
@@ -471,7 +471,7 @@ static void mach64DDTexParameter( GLcontext *ctx, GLenum target,
|
||||
|
||||
case GL_TEXTURE_BORDER_COLOR:
|
||||
if ( t->base.bound ) FLUSH_BATCH( mmesa );
|
||||
mach64SetTexBorderColor( t, tObj->_BorderChan );
|
||||
mach64SetTexBorderColor( t, tObj->BorderColor );
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BASE_LEVEL:
|
||||
|
||||
@@ -153,10 +153,14 @@ mgaSetTexFilter( mgaTextureObjectPtr t, GLenum minf, GLenum magf )
|
||||
t->setup.texfilter |= val;
|
||||
}
|
||||
|
||||
static void mgaSetTexBorderColor(mgaTextureObjectPtr t, GLubyte color[4])
|
||||
static void mgaSetTexBorderColor(mgaTextureObjectPtr t, const GLfloat color[4])
|
||||
{
|
||||
t->setup.texbordercol = PACK_COLOR_8888(color[3], color[0],
|
||||
color[1], color[2] );
|
||||
GLubyte c[4];
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[0], color[0]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[1], color[1]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[2], color[2]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[3], color[3]);
|
||||
t->setup.texbordercol = PACK_COLOR_8888(c[3], c[0], c[1], c[2] );
|
||||
}
|
||||
|
||||
|
||||
@@ -329,7 +333,7 @@ mgaAllocTexObj( struct gl_texture_object *tObj )
|
||||
|
||||
mgaSetTexWrapping( t, tObj->WrapS, tObj->WrapT );
|
||||
mgaSetTexFilter( t, tObj->MinFilter, tObj->MagFilter );
|
||||
mgaSetTexBorderColor( t, tObj->_BorderChan );
|
||||
mgaSetTexBorderColor( t, tObj->BorderColor );
|
||||
}
|
||||
|
||||
return( t );
|
||||
@@ -458,7 +462,7 @@ mgaTexParameter( GLcontext *ctx, GLenum target,
|
||||
|
||||
case GL_TEXTURE_BORDER_COLOR:
|
||||
FLUSH_BATCH(mmesa);
|
||||
mgaSetTexBorderColor(t, tObj->_BorderChan);
|
||||
mgaSetTexBorderColor(t, tObj->BorderColor);
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BASE_LEVEL:
|
||||
|
||||
@@ -135,8 +135,13 @@ static void r128SetTexFilter( r128TexObjPtr t, GLenum minf, GLenum magf )
|
||||
}
|
||||
}
|
||||
|
||||
static void r128SetTexBorderColor( r128TexObjPtr t, GLubyte c[4] )
|
||||
static void r128SetTexBorderColor( r128TexObjPtr t, const GLfloat color[4] )
|
||||
{
|
||||
GLubyte c[4];
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[0], color[0]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[1], color[1]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[2], color[2]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[3], color[3]);
|
||||
t->setup.tex_border_color = r128PackColor( 4, c[0], c[1], c[2], c[3] );
|
||||
}
|
||||
|
||||
@@ -165,7 +170,7 @@ static r128TexObjPtr r128AllocTexObj( struct gl_texture_object *texObj )
|
||||
|
||||
r128SetTexWrap( t, texObj->WrapS, texObj->WrapT );
|
||||
r128SetTexFilter( t, texObj->MinFilter, texObj->MagFilter );
|
||||
r128SetTexBorderColor( t, texObj->_BorderChan );
|
||||
r128SetTexBorderColor( t, texObj->BorderColor );
|
||||
}
|
||||
|
||||
return t;
|
||||
@@ -531,7 +536,7 @@ static void r128TexParameter( GLcontext *ctx, GLenum target,
|
||||
|
||||
case GL_TEXTURE_BORDER_COLOR:
|
||||
if ( t->base.bound ) FLUSH_BATCH( rmesa );
|
||||
r128SetTexBorderColor( t, tObj->_BorderChan );
|
||||
r128SetTexBorderColor( t, tObj->BorderColor );
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BASE_LEVEL:
|
||||
|
||||
@@ -267,8 +267,13 @@ static void r200SetTexFilter( r200TexObjPtr t, GLenum minf, GLenum magf )
|
||||
}
|
||||
}
|
||||
|
||||
static void r200SetTexBorderColor( r200TexObjPtr t, GLubyte c[4] )
|
||||
static void r200SetTexBorderColor( r200TexObjPtr t, const GLfloat color[4] )
|
||||
{
|
||||
GLubyte c[4];
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[0], color[0]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[1], color[1]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[2], color[2]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[3], color[3]);
|
||||
t->pp_border_color = r200PackColor( 4, c[0], c[1], c[2], c[3] );
|
||||
}
|
||||
|
||||
@@ -301,7 +306,7 @@ static r200TexObjPtr r200AllocTexObj( struct gl_texture_object *texObj )
|
||||
r200SetTexWrap( t, texObj->WrapS, texObj->WrapT, texObj->WrapR );
|
||||
r200SetTexMaxAnisotropy( t, texObj->MaxAnisotropy );
|
||||
r200SetTexFilter( t, texObj->MinFilter, texObj->MagFilter );
|
||||
r200SetTexBorderColor( t, texObj->_BorderChan );
|
||||
r200SetTexBorderColor( t, texObj->BorderColor );
|
||||
}
|
||||
|
||||
return t;
|
||||
@@ -1056,7 +1061,7 @@ static void r200TexParameter( GLcontext *ctx, GLenum target,
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BORDER_COLOR:
|
||||
r200SetTexBorderColor( t, texObj->_BorderChan );
|
||||
r200SetTexBorderColor( t, texObj->BorderColor );
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BASE_LEVEL:
|
||||
|
||||
@@ -171,8 +171,13 @@ static void r300SetTexFilter(r300TexObjPtr t, GLenum minf, GLenum magf, GLfloat
|
||||
}
|
||||
}
|
||||
|
||||
static void r300SetTexBorderColor(r300TexObjPtr t, GLubyte c[4])
|
||||
static void r300SetTexBorderColor(r300TexObjPtr t, const GLfloat color[4])
|
||||
{
|
||||
GLubyte c[4];
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[0], color[0]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[1], color[1]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[2], color[2]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[3], color[3]);
|
||||
t->pp_border_color = PACK_COLOR_8888(c[3], c[0], c[1], c[2]);
|
||||
}
|
||||
|
||||
@@ -203,7 +208,7 @@ static r300TexObjPtr r300AllocTexObj(struct gl_texture_object *texObj)
|
||||
|
||||
r300UpdateTexWrap(t);
|
||||
r300SetTexFilter(t, texObj->MinFilter, texObj->MagFilter, texObj->MaxAnisotropy);
|
||||
r300SetTexBorderColor(t, texObj->_BorderChan);
|
||||
r300SetTexBorderColor(t, texObj->BorderColor);
|
||||
}
|
||||
|
||||
return t;
|
||||
@@ -929,7 +934,7 @@ static void r300TexParameter(GLcontext * ctx, GLenum target,
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BORDER_COLOR:
|
||||
r300SetTexBorderColor(t, texObj->_BorderChan);
|
||||
r300SetTexBorderColor(t, texObj->BorderColor);
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BASE_LEVEL:
|
||||
|
||||
@@ -239,8 +239,13 @@ static void radeonSetTexFilter( radeonTexObjPtr t, GLenum minf, GLenum magf )
|
||||
}
|
||||
}
|
||||
|
||||
static void radeonSetTexBorderColor( radeonTexObjPtr t, GLubyte c[4] )
|
||||
static void radeonSetTexBorderColor( radeonTexObjPtr t, const GLfloat color[4] )
|
||||
{
|
||||
GLubyte c[4];
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[0], color[0]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[1], color[1]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[2], color[2]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[3], color[3]);
|
||||
t->pp_border_color = radeonPackColor( 4, c[0], c[1], c[2], c[3] );
|
||||
}
|
||||
|
||||
@@ -276,7 +281,7 @@ static radeonTexObjPtr radeonAllocTexObj( struct gl_texture_object *texObj )
|
||||
radeonSetTexWrap( t, texObj->WrapS, texObj->WrapT );
|
||||
radeonSetTexMaxAnisotropy( t, texObj->MaxAnisotropy );
|
||||
radeonSetTexFilter( t, texObj->MinFilter, texObj->MagFilter );
|
||||
radeonSetTexBorderColor( t, texObj->_BorderChan );
|
||||
radeonSetTexBorderColor( t, texObj->BorderColor );
|
||||
}
|
||||
|
||||
return t;
|
||||
@@ -755,7 +760,7 @@ static void radeonTexParameter( GLcontext *ctx, GLenum target,
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BORDER_COLOR:
|
||||
radeonSetTexBorderColor( t, texObj->_BorderChan );
|
||||
radeonSetTexBorderColor( t, texObj->BorderColor );
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BASE_LEVEL:
|
||||
|
||||
@@ -132,8 +132,14 @@ static void s3vSetTexFilter(s3vContextPtr vmesa,
|
||||
|
||||
static void s3vSetTexBorderColor(s3vContextPtr vmesa,
|
||||
s3vTextureObjectPtr t,
|
||||
GLubyte color[4])
|
||||
const GLfloat color[4])
|
||||
{
|
||||
GLubyte c[4];
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[0], color[0]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[1], color[1]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[2], color[2]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[3], color[3]);
|
||||
|
||||
#if TEX_DEBUG_ON
|
||||
static unsigned int times=0;
|
||||
DEBUG_TEX(("*** s3vSetTexBorderColor: #%i ***\n", ++times));
|
||||
@@ -143,8 +149,7 @@ static void s3vSetTexBorderColor(s3vContextPtr vmesa,
|
||||
/* switch(t0 ... t->TextureColorMode) */
|
||||
|
||||
/* case TEX_COL_ARGB1555: */
|
||||
t->TextureBorderColor =
|
||||
S3VIRGEPACKCOLOR555(color[0], color[1], color[2], color[3]);
|
||||
t->TextureBorderColor = S3VIRGEPACKCOLOR555(c[0], c[1], c[2], c[3]);
|
||||
|
||||
DEBUG(("TextureBorderColor = 0x%x\n", t->TextureBorderColor));
|
||||
|
||||
@@ -182,7 +187,7 @@ static void s3vTexParameter( GLcontext *ctx, GLenum target,
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BORDER_COLOR:
|
||||
s3vSetTexBorderColor( vmesa, t, tObj->_BorderChan );
|
||||
s3vSetTexBorderColor( vmesa, t, tObj->BorderColor );
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BASE_LEVEL:
|
||||
|
||||
@@ -474,7 +474,7 @@ static void savageSetTexFilter(savageTexObjPtr t, GLenum minf, GLenum magf)
|
||||
|
||||
/* Need a fallback ?
|
||||
*/
|
||||
static void savageSetTexBorderColor(savageTexObjPtr t, GLubyte color[4])
|
||||
static void savageSetTexBorderColor(savageTexObjPtr t, const GLfloat color[4])
|
||||
{
|
||||
/* t->Setup[SAVAGE_TEXREG_TEXBORDERCOL] = */
|
||||
/*t->setup.borderColor = SAVAGEPACKCOLOR8888(color[0],color[1],color[2],color[3]); */
|
||||
@@ -512,7 +512,7 @@ savageAllocTexObj( struct gl_texture_object *texObj )
|
||||
|
||||
savageSetTexWrapping(t,texObj->WrapS,texObj->WrapT);
|
||||
savageSetTexFilter(t,texObj->MinFilter,texObj->MagFilter);
|
||||
savageSetTexBorderColor(t,texObj->_BorderChan);
|
||||
savageSetTexBorderColor(t,texObj->BorderColor);
|
||||
}
|
||||
|
||||
return t;
|
||||
@@ -2018,7 +2018,7 @@ static void savageTexParameter( GLcontext *ctx, GLenum target,
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BORDER_COLOR:
|
||||
savageSetTexBorderColor(t,tObj->_BorderChan);
|
||||
savageSetTexBorderColor(t,tObj->BorderColor);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -456,11 +456,16 @@ sis_set_texobj_parm( GLcontext *ctx, struct gl_texture_object *texObj,
|
||||
break;
|
||||
}
|
||||
|
||||
current->texture[hw_unit].hwTextureBorderColor =
|
||||
((GLuint) texObj->_BorderChan[3] << 24) +
|
||||
((GLuint) texObj->_BorderChan[0] << 16) +
|
||||
((GLuint) texObj->_BorderChan[1] << 8) +
|
||||
((GLuint) texObj->_BorderChan[2]);
|
||||
{
|
||||
GLubyte c[4];
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[0], texObj->BorderColor[0]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[1], texObj->BorderColor[1]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[2], texObj->BorderColor[2]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(c[3], texObj->BorderColor[3]);
|
||||
|
||||
current->texture[hw_unit].hwTextureBorderColor =
|
||||
PACK_COLOR_8888(c[3], c[0], c[1], c[2]);
|
||||
}
|
||||
|
||||
if (current->texture[hw_unit].hwTextureBorderColor !=
|
||||
prev->texture[hw_unit].hwTextureBorderColor)
|
||||
|
||||
Reference in New Issue
Block a user