added support for NV_vertex_program evaluators
authorBrian Paul <brian.paul@tungstengraphics.com>
Sun, 23 Jun 2002 02:36:27 +0000 (02:36 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Sun, 23 Jun 2002 02:36:27 +0000 (02:36 +0000)
src/mesa/tnl/t_eval_api.c

index aa068032e16a350bf1ed9edbbf503ee7104e9ebc..91592c982353b941ae04320f9e99779e39120fe5 100644 (file)
@@ -1,10 +1,10 @@
-/* $Id: t_eval_api.c,v 1.10 2002/04/19 12:32:14 brianp Exp $ */
+/* $Id: t_eval_api.c,v 1.11 2002/06/23 02:36:27 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
- * Version:  3.5
+ * Version:  4.1
  *
- * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
  * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Keith Whitwell - original code
+ *    Brian Paul - vertex program updates
  */
 
 
@@ -40,9 +44,6 @@
 #include "t_imm_exec.h"
 
 
-
-
-
 /* KW: If are compiling, we don't know whether eval will produce a
  *     vertex when it is run in the future.  If this is pure immediate
  *     mode, eval is a noop if neither vertex map is enabled.
@@ -61,7 +62,8 @@ _tnl_exec_EvalMesh1( GLenum mode, GLint i1, GLint i2 )
    GLenum prim;
    ASSERT_OUTSIDE_BEGIN_END(ctx);
 
-/*     fprintf(stderr, "%s\n", __FUNCTION__); */
+   if (MESA_VERBOSE & VERBOSE_API)
+      _mesa_debug(ctx, "glEvalMesh1()");
 
    switch (mode) {
       case GL_POINT:
@@ -77,7 +79,8 @@ _tnl_exec_EvalMesh1( GLenum mode, GLint i1, GLint i2 )
 
    /* No effect if vertex maps disabled.
     */
-   if (!ctx->Eval.Map1Vertex4 && !ctx->Eval.Map1Vertex3)
+   if (!ctx->Eval.Map1Vertex4 && !ctx->Eval.Map1Vertex3 &&
+       (!ctx->VertexProgram.Enabled || !ctx->Eval.Map1Attrib[VERT_ATTRIB_POS]))
       return;
 
    du = ctx->Eval.MapGrid1du;
@@ -146,14 +149,15 @@ _tnl_exec_EvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 )
    GLfloat u, du, v, dv, v1, u1;
    ASSERT_OUTSIDE_BEGIN_END(ctx);
 
-/*     fprintf(stderr, "%s\n", __FUNCTION__); */
+   if (MESA_VERBOSE & VERBOSE_API)
+      _mesa_debug(ctx, "glEvalMesh2()");
 
    /* No effect if vertex maps disabled.
     */
-   if (!ctx->Eval.Map2Vertex4 && !ctx->Eval.Map2Vertex3)
+   if (!ctx->Eval.Map2Vertex4 && !ctx->Eval.Map2Vertex3 &&
+       (!ctx->VertexProgram.Enabled || !ctx->Eval.Map2Attrib[VERT_ATTRIB_POS]))
       return;
 
-
    du = ctx->Eval.MapGrid2du;
    dv = ctx->Eval.MapGrid2dv;
    v1 = ctx->Eval.MapGrid2v1 + j1 * dv;
@@ -236,7 +240,6 @@ _tnl_exec_EvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 )
 }
 
 
-
 void _tnl_eval_init( GLcontext *ctx )
 {
    GLvertexformat *vfmt = &(TNL_CONTEXT(ctx)->vtxfmt);