From c344f27539a93e885ddcb8ceb066d481a6cd60cf Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu Date: Tue, 14 Sep 2010 04:29:52 +0200 Subject: dri/nv04: Enable eng3dm for A8/L8 textures. Signed-off-by: Francisco Jerez --- src/mesa/drivers/dri/nouveau/nv04_context.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/nouveau/nv04_context.c b/src/mesa/drivers/dri/nouveau/nv04_context.c index 1d34c86350..9c32b480b0 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_context.c +++ b/src/mesa/drivers/dri/nouveau/nv04_context.c @@ -31,6 +31,20 @@ #include "nouveau_class.h" #include "nv04_driver.h" +static GLboolean +texunit_needs_combiners(struct gl_texture_unit *u) +{ + struct gl_texture_object *t = u->_Current; + struct gl_texture_image *ti = t->Image[0][t->BaseLevel]; + + return ti->TexFormat == MESA_FORMAT_A8 || + ti->TexFormat == MESA_FORMAT_L8 || + u->EnvMode == GL_COMBINE || + u->EnvMode == GL_COMBINE4_NV || + u->EnvMode == GL_BLEND || + u->EnvMode == GL_ADD; +} + struct nouveau_grobj * nv04_context_engine(GLcontext *ctx) { @@ -38,10 +52,8 @@ nv04_context_engine(GLcontext *ctx) struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw; struct nouveau_grobj *fahrenheit; - if (ctx->Texture.Unit[0].EnvMode == GL_COMBINE || - ctx->Texture.Unit[0].EnvMode == GL_COMBINE4_NV || - ctx->Texture.Unit[0].EnvMode == GL_BLEND || - ctx->Texture.Unit[0].EnvMode == GL_ADD || + if ((ctx->Texture.Unit[0]._ReallyEnabled && + texunit_needs_combiners(&ctx->Texture.Unit[0])) || ctx->Texture.Unit[1]._ReallyEnabled || ctx->Stencil.Enabled) fahrenheit = hw->eng3dm; -- cgit v1.2.3