Fixed an issue with Streaming Vertex data overflowing it's buffer.

Bug=angle:689
Change-Id: Ia0ee6f951822901560888ea300a3889601fa1d89
Reviewed-on: https://chromium-review.googlesource.com/207010
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Brandon Jones <bajones@chromium.org>
diff --git a/src/libGLESv2/renderer/d3d/VertexDataManager.cpp b/src/libGLESv2/renderer/d3d/VertexDataManager.cpp
index 9ba12d1..fc2b8ff 100644
--- a/src/libGLESv2/renderer/d3d/VertexDataManager.cpp
+++ b/src/libGLESv2/renderer/d3d/VertexDataManager.cpp
@@ -124,42 +124,39 @@
         if (translated[i].active && attribs[i].enabled)
         {
             gl::Buffer *buffer = attribs[i].buffer.get();
-            if (buffer)
+            BufferD3D *bufferImpl = buffer ? BufferD3D::makeBufferD3D(buffer->getImplementation()) : NULL;
+            StaticVertexBufferInterface *staticBuffer = bufferImpl ? bufferImpl->getStaticVertexBuffer() : NULL;
+            VertexBufferInterface *vertexBuffer = staticBuffer ? staticBuffer : static_cast<VertexBufferInterface*>(mStreamingBuffer);
+
+            if (!vertexBuffer->directStoragePossible(attribs[i], currentValues[i]))
             {
-                BufferD3D *bufferImpl = BufferD3D::makeBufferD3D(buffer->getImplementation());
-                StaticVertexBufferInterface *staticBuffer = bufferImpl->getStaticVertexBuffer();
-                VertexBufferInterface *vertexBuffer = staticBuffer ? staticBuffer : static_cast<VertexBufferInterface*>(mStreamingBuffer);
-
-                if (!vertexBuffer->directStoragePossible(attribs[i], currentValues[i]))
+                if (staticBuffer)
                 {
-                    if (staticBuffer)
+                    if (staticBuffer->getBufferSize() == 0)
                     {
-                        if (staticBuffer->getBufferSize() == 0)
-                        {
-                            int totalCount = ElementsInBuffer(attribs[i], bufferImpl->getSize());
-                            if (!staticBuffer->reserveVertexSpace(attribs[i], totalCount, 0))
-                            {
-                                return GL_OUT_OF_MEMORY;
-                            }
-                        }
-                    }
-                    else
-                    {
-                        int totalCount = StreamingBufferElementCount(attribs[i], count, instances);
-
-                        // [OpenGL ES 3.0.2] section 2.9.4 page 40:
-                        // We can return INVALID_OPERATION if our vertex attribute does not have enough backing data.
-                        if (bufferImpl && ElementsInBuffer(attribs[i], bufferImpl->getSize()) < totalCount)
-                        {
-                            return GL_INVALID_OPERATION;
-                        }
-
-                        if (!mStreamingBuffer->reserveVertexSpace(attribs[i], totalCount, instances))
+                        int totalCount = ElementsInBuffer(attribs[i], bufferImpl->getSize());
+                        if (!staticBuffer->reserveVertexSpace(attribs[i], totalCount, 0))
                         {
                             return GL_OUT_OF_MEMORY;
                         }
                     }
                 }
+                else
+                {
+                    int totalCount = StreamingBufferElementCount(attribs[i], count, instances);
+
+                    // [OpenGL ES 3.0.2] section 2.9.4 page 40:
+                    // We can return INVALID_OPERATION if our vertex attribute does not have enough backing data.
+                    if (bufferImpl && ElementsInBuffer(attribs[i], bufferImpl->getSize()) < totalCount)
+                    {
+                        return GL_INVALID_OPERATION;
+                    }
+
+                    if (!mStreamingBuffer->reserveVertexSpace(attribs[i], totalCount, instances))
+                    {
+                        return GL_OUT_OF_MEMORY;
+                    }
+                }
             }
         }
     }