Add a base class for GrIODB that handles geometry data

Review URL: https://codereview.chromium.org/773433002
diff --git a/src/gpu/GrDrawTarget.cpp b/src/gpu/GrDrawTarget.cpp
index 9ac2d6a..c385f27 100644
--- a/src/gpu/GrDrawTarget.cpp
+++ b/src/gpu/GrDrawTarget.cpp
@@ -472,7 +472,7 @@
         if (!this->setupDstReadIfNecessary(ds, &dstCopy, devBounds)) {
             return;
         }
-        this->setDrawBuffers(&info);
+        this->setDrawBuffers(&info, ds->getVertexStride());
 
         this->onDraw(*ds, info, scissorState, dstCopy.texture() ? &dstCopy : NULL);
     }
@@ -515,7 +515,7 @@
             return;
         }
 
-        this->setDrawBuffers(&info);
+        this->setDrawBuffers(&info, ds->getVertexStride());
 
         this->onDraw(*ds, info, scissorState, dstCopy.texture() ? &dstCopy : NULL);
     }
@@ -773,14 +773,13 @@
         info.fVertexCount = info.fInstanceCount * verticesPerInstance;
         info.fIndexCount = info.fInstanceCount * indicesPerInstance;
 
-        this->setDrawBuffers(&info);
-
         if (this->checkDraw(*ds,
                             type,
                             info.fStartVertex,
                             info.fStartIndex,
                             info.fVertexCount,
                             info.fIndexCount)) {
+            this->setDrawBuffers(&info, ds->getVertexStride());
             this->onDraw(*ds, info, scissorState, dstCopy.texture() ? &dstCopy : NULL);
         }
         info.fStartVertex += info.fVertexCount;