Mesa (ext-provoking-vertex): mesa: fix first provoking vertex mode for unfilled tri strips

Brian Paul brianp at kemper.freedesktop.org
Fri Jun 19 04:52:24 UTC 2009


Module: Mesa
Branch: ext-provoking-vertex
Commit: 601065f15389b52c084cdc46c339e15fd3b5eb25
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=601065f15389b52c084cdc46c339e15fd3b5eb25

Author: Brian Paul <brianp at vmware.com>
Date:   Thu Jun 18 22:45:57 2009 -0600

mesa: fix first provoking vertex mode for unfilled tri strips

---

 src/mesa/tnl/t_vb_rendertmp.h |   26 ++++++++++++++++----------
 1 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/src/mesa/tnl/t_vb_rendertmp.h b/src/mesa/tnl/t_vb_rendertmp.h
index 29d2fa8..75f6f55 100644
--- a/src/mesa/tnl/t_vb_rendertmp.h
+++ b/src/mesa/tnl/t_vb_rendertmp.h
@@ -201,22 +201,28 @@ static void TAG(render_tri_strip)( GLcontext *ctx,
    INIT(GL_TRIANGLE_STRIP);
    if (NEED_EDGEFLAG_SETUP) {
       for (j=start+2;j<count;j++,parity^=1) {
-	 GLuint ej2 = ELT(j-2+parity);
-	 GLuint ej1 = ELT(j-1-parity);
-	 GLuint ej = ELT(j);
-	 GLboolean ef2 = EDGEFLAG_GET( ej2 );
-	 GLboolean ef1 = EDGEFLAG_GET( ej1 );
-	 GLboolean ef = EDGEFLAG_GET( ej );
+         GLuint ej2, ej1, ej;
+         GLboolean ef2, ef1, ef;
+         if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT) {
+            ej2 = ELT(j-2+parity);
+            ej1 = ELT(j-1-parity);
+            ej = ELT(j);
+         }
+         else {
+            ej2 = ELT(j-1+parity);
+            ej1 = ELT(j-parity);
+            ej = ELT(j-2);
+         }
+	 ef2 = EDGEFLAG_GET( ej2 );
+	 ef1 = EDGEFLAG_GET( ej1 );
+	 ef = EDGEFLAG_GET( ej );
 	 if (TEST_PRIM_BEGIN(flags)) {
 	    RESET_STIPPLE;
 	 }
 	 EDGEFLAG_SET( ej2, GL_TRUE );
 	 EDGEFLAG_SET( ej1, GL_TRUE );
 	 EDGEFLAG_SET( ej, GL_TRUE );
-         if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
-            RENDER_TRI( ej2, ej1, ej );
-         else
-            RENDER_TRI( ej, ej2, ej1 );
+         RENDER_TRI( ej2, ej1, ej );
 	 EDGEFLAG_SET( ej2, ef2 );
 	 EDGEFLAG_SET( ej1, ef1 );
 	 EDGEFLAG_SET( ej, ef );




More information about the mesa-commit mailing list