Mesa (master): mesa: update state setup/ validation for GL_NV_texture_env_combine4

Brian Paul brianp at kemper.freedesktop.org
Sat Jan 24 00:44:21 UTC 2009


Module: Mesa
Branch: master
Commit: e082314cab42f43b0438603a282f01920004e6f0
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e082314cab42f43b0438603a282f01920004e6f0

Author: Brian Paul <brianp at vmware.com>
Date:   Fri Jan 23 17:30:33 2009 -0700

mesa: update state setup/validation for GL_NV_texture_env_combine4

---

 src/mesa/main/texstate.c |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c
index 9bfb7e0..7cddec0 100644
--- a/src/mesa/main/texstate.c
+++ b/src/mesa/main/texstate.c
@@ -53,10 +53,10 @@
  */
 static const struct gl_tex_env_combine_state default_combine_state = {
    GL_MODULATE, GL_MODULATE,
-   { GL_TEXTURE, GL_PREVIOUS, GL_CONSTANT },
-   { GL_TEXTURE, GL_PREVIOUS, GL_CONSTANT },
-   { GL_SRC_COLOR, GL_SRC_COLOR, GL_SRC_ALPHA },
-   { GL_SRC_ALPHA, GL_SRC_ALPHA, GL_SRC_ALPHA },
+   { GL_TEXTURE, GL_PREVIOUS, GL_CONSTANT, GL_CONSTANT },
+   { GL_TEXTURE, GL_PREVIOUS, GL_CONSTANT, GL_CONSTANT },
+   { GL_SRC_COLOR, GL_SRC_COLOR, GL_SRC_ALPHA, GL_SRC_ALPHA },
+   { GL_SRC_ALPHA, GL_SRC_ALPHA, GL_SRC_ALPHA, GL_SRC_ALPHA },
    0, 0,
    2, 2
 };
@@ -551,7 +551,8 @@ update_texture_state( GLcontext *ctx )
       if (texUnit->_ReallyEnabled)
          ctx->Texture._EnabledUnits |= (1 << unit);
 
-      if (texUnit->EnvMode == GL_COMBINE) {
+      if (texUnit->EnvMode == GL_COMBINE ||
+          texUnit->EnvMode == GL_COMBINE4_NV) {
 	 texUnit->_CurrentCombine = & texUnit->Combine;
       }
       else {
@@ -572,9 +573,14 @@ update_texture_state( GLcontext *ctx )
       case GL_REPLACE:
 	 texUnit->_CurrentCombine->_NumArgsRGB = 1;
 	 break;
-      case GL_MODULATE:
       case GL_ADD:
       case GL_ADD_SIGNED:
+         if (texUnit->EnvMode == GL_COMBINE4_NV)
+            texUnit->_CurrentCombine->_NumArgsRGB = 4;
+         else
+            texUnit->_CurrentCombine->_NumArgsRGB = 2;
+         break;
+      case GL_MODULATE:
       case GL_SUBTRACT:
       case GL_DOT3_RGB:
       case GL_DOT3_RGBA:
@@ -598,9 +604,14 @@ update_texture_state( GLcontext *ctx )
       case GL_REPLACE:
 	 texUnit->_CurrentCombine->_NumArgsA = 1;
 	 break;
-      case GL_MODULATE:
       case GL_ADD:
       case GL_ADD_SIGNED:
+         if (texUnit->EnvMode == GL_COMBINE4_NV)
+            texUnit->_CurrentCombine->_NumArgsA = 4;
+         else
+            texUnit->_CurrentCombine->_NumArgsA = 2;
+         break;
+      case GL_MODULATE:
       case GL_SUBTRACT:
 	 texUnit->_CurrentCombine->_NumArgsA = 2;
 	 break;




More information about the mesa-commit mailing list