diff options
author | Andrew Randrianasulu <[email protected]> | 2010-09-14 04:29:52 +0200 |
---|---|---|
committer | Francisco Jerez <[email protected]> | 2010-09-16 19:44:20 +0200 |
commit | c344f27539a93e885ddcb8ceb066d481a6cd60cf (patch) | |
tree | 73eeff90e31731ba394003391365c57f70d0c9fd | |
parent | a27bfb991c7fa8995be4814425c0ad4992447a4b (diff) |
dri/nv04: Enable eng3dm for A8/L8 textures.
Signed-off-by: Francisco Jerez <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/nouveau/nv04_context.c | 20 |
1 files changed, 16 insertions, 4 deletions
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; |