Viewperf uses some unusual vertex arrays where the stride is less
than the element size. In this case, the stride was 4 while the
element size was 12. The difference of 8 bytes causes us to miss
uploading the tail bit of the array data.
Typically the stride is >= the element size so there was no problem
with other apps.
#include "svga_cmd.h"
+#include "util/u_format.h"
#include "util/u_inlines.h"
#include "util/u_prim.h"
#include "util/u_time.h"
size = vb->stride *
(instance_count + instance_div - 1) / instance_div;
} else if (vb->stride) {
+ uint elemSize = util_format_get_blocksize(ve->src_format);
first = vb->stride * start;
- size = vb->stride * count;
+ size = vb->stride * (count - 1) + elemSize;
} else {
/* Only a single vertex!
* Upload with the largest vertex size the hw supports,