VertexArrayGL: fix the streaming of offset non-packed strides

When the packed stride and source stride were different, the streaming
code path used a loop that added two times the offset for the start of
the index range.

BUG=angleproject:1135

Change-Id: I6d314a1a28abec4df22f7c798c1af87a18d8b7ec
Reviewed-on: https://chromium-review.googlesource.com/295225
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/libANGLE/renderer/gl/VertexArrayGL.cpp b/src/libANGLE/renderer/gl/VertexArrayGL.cpp
index 0da7375..3da883e 100644
--- a/src/libANGLE/renderer/gl/VertexArrayGL.cpp
+++ b/src/libANGLE/renderer/gl/VertexArrayGL.cpp
@@ -308,10 +308,12 @@
             else
             {
                 // Copy each vertex individually
-                for (size_t vertexIdx = indexRange.start; vertexIdx <= indexRange.end; vertexIdx++)
+                for (size_t vertexIdx = 0; vertexIdx <= streamedVertexCount; vertexIdx++)
                 {
-                    memcpy(bufferPointer + curBufferOffset + (destStride * vertexIdx),
-                           inputPointer + (sourceStride * vertexIdx), destStride);
+                    uint8_t *out = bufferPointer + curBufferOffset + (destStride * vertexIdx);
+                    const uint8_t *in =
+                        inputPointer + sourceStride * (vertexIdx + indexRange.start);
+                    memcpy(out, in, destStride);
                 }
             }