vbo: move attribute type assignment
authorBrian Paul <brianp@vmware.com>
Thu, 13 Oct 2016 20:43:36 +0000 (14:43 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 20 Oct 2016 15:47:21 +0000 (09:47 -0600)
If the attribute type is changing, we would have found that earlier in
the ATTR_UNION() macro and would have called vbo_exec_fixup_vertex().
So move the assignment into that function so we don't do it every time.

No Piglit regressions.

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
src/mesa/vbo/vbo_exec_api.c

index c0a5bc01f4fbdeeee55f1cd4225565cdda59aeed..b191a94c8c39e61db2f3ad3d356de8987e3e03ce 100644 (file)
@@ -423,6 +423,7 @@ vbo_exec_fixup_vertex(struct gl_context *ctx, GLuint attr,
    }
 
    exec->vtx.active_sz[attr] = newSize;
+   exec->vtx.attrtype[attr] = newType;
 
    /* Does setting NeedFlush belong here?  Necessitates resetting
     * vtxfmt on each flush (otherwise flags won't get reset
@@ -479,7 +480,7 @@ do {                                                                        \
       if (N>1) dest[1] = V1;                                           \
       if (N>2) dest[2] = V2;                                           \
       if (N>3) dest[3] = V3;                                           \
-      exec->vtx.attrtype[A] = T;                                       \
+      assert(exec->vtx.attrtype[A] == T);                               \
    }                                                                   \
                                                                        \
    if ((A) == 0) {                                                     \