i915: texture object's lod bias. fix bug #15192
This commit is contained in:
parent
d9367842e5
commit
d30d9e42b7
|
@ -96,5 +96,7 @@ i830TexEnv(GLcontext * ctx, GLenum target,
|
||||||
void
|
void
|
||||||
i830InitTextureFuncs(struct dd_function_table *functions)
|
i830InitTextureFuncs(struct dd_function_table *functions)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
functions->TexEnv = i830TexEnv;
|
functions->TexEnv = i830TexEnv;
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,10 +114,12 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
|
||||||
{
|
{
|
||||||
GLcontext *ctx = &intel->ctx;
|
GLcontext *ctx = &intel->ctx;
|
||||||
struct i830_context *i830 = i830_context(ctx);
|
struct i830_context *i830 = i830_context(ctx);
|
||||||
struct gl_texture_object *tObj = ctx->Texture.Unit[unit]._Current;
|
struct gl_texture_unit *tUnit = &ctx->Texture.Unit[unit];
|
||||||
|
struct gl_texture_object *tObj = tUnit->_Current;
|
||||||
struct intel_texture_object *intelObj = intel_texture_object(tObj);
|
struct intel_texture_object *intelObj = intel_texture_object(tObj);
|
||||||
struct gl_texture_image *firstImage;
|
struct gl_texture_image *firstImage;
|
||||||
GLuint *state = i830->state.Tex[unit], format, pitch;
|
GLuint *state = i830->state.Tex[unit], format, pitch;
|
||||||
|
GLint lodbias;
|
||||||
|
|
||||||
memset(state, 0, sizeof(state));
|
memset(state, 0, sizeof(state));
|
||||||
|
|
||||||
|
@ -243,8 +245,14 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
state[I830_TEXREG_TM0S3] = i830->lodbias_tm0s3[unit];
|
lodbias = (int) ((tUnit->LodBias + tObj->LodBias) * 16.0);
|
||||||
|
if (lodbias < -64)
|
||||||
|
lodbias = -64;
|
||||||
|
if (lodbias > 63)
|
||||||
|
lodbias = 63;
|
||||||
|
|
||||||
|
state[I830_TEXREG_TM0S3] = ((lodbias << TM0S3_LOD_BIAS_SHIFT) &
|
||||||
|
TM0S3_LOD_BIAS_MASK);
|
||||||
#if 0
|
#if 0
|
||||||
/* YUV conversion:
|
/* YUV conversion:
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -74,5 +74,7 @@ i915TexEnv(GLcontext * ctx, GLenum target,
|
||||||
void
|
void
|
||||||
i915InitTextureFuncs(struct dd_function_table *functions)
|
i915InitTextureFuncs(struct dd_function_table *functions)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
functions->TexEnv = i915TexEnv;
|
functions->TexEnv = i915TexEnv;
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,10 +119,12 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
|
||||||
{
|
{
|
||||||
GLcontext *ctx = &intel->ctx;
|
GLcontext *ctx = &intel->ctx;
|
||||||
struct i915_context *i915 = i915_context(ctx);
|
struct i915_context *i915 = i915_context(ctx);
|
||||||
struct gl_texture_object *tObj = ctx->Texture.Unit[unit]._Current;
|
struct gl_texture_unit *tUnit = &ctx->Texture.Unit[unit];
|
||||||
|
struct gl_texture_object *tObj = tUnit->_Current;
|
||||||
struct intel_texture_object *intelObj = intel_texture_object(tObj);
|
struct intel_texture_object *intelObj = intel_texture_object(tObj);
|
||||||
struct gl_texture_image *firstImage;
|
struct gl_texture_image *firstImage;
|
||||||
GLuint *state = i915->state.Tex[unit], format, pitch;
|
GLuint *state = i915->state.Tex[unit], format, pitch;
|
||||||
|
GLint lodbias;
|
||||||
|
|
||||||
memset(state, 0, sizeof(state));
|
memset(state, 0, sizeof(state));
|
||||||
|
|
||||||
|
@ -232,7 +234,13 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
state[I915_TEXREG_SS2] = i915->lodbias_ss2[unit];
|
lodbias = (int) ((tUnit->LodBias + tObj->LodBias) * 16.0);
|
||||||
|
if (lodbias < -256)
|
||||||
|
lodbias = -256;
|
||||||
|
if (lodbias > 255)
|
||||||
|
lodbias = 255;
|
||||||
|
state[I915_TEXREG_SS2] = ((lodbias << SS2_LOD_BIAS_SHIFT) &
|
||||||
|
SS2_LOD_BIAS_MASK);
|
||||||
|
|
||||||
/* YUV conversion:
|
/* YUV conversion:
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue