From: Andrew Randrianasulu Date: Tue, 14 Sep 2010 02:29:52 +0000 (+0200) Subject: dri/nv04: Enable eng3dm for A8/L8 textures. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c344f27539a93e885ddcb8ceb066d481a6cd60cf;p=mesa.git dri/nv04: Enable eng3dm for A8/L8 textures. Signed-off-by: Francisco Jerez --- diff --git a/src/mesa/drivers/dri/nouveau/nv04_context.c b/src/mesa/drivers/dri/nouveau/nv04_context.c index 1d34c863509..9c32b480b0f 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;