| Index: src/gpu/gl/GrGLVertexArray.cpp
 | 
| diff --git a/src/gpu/gl/GrGLVertexArray.cpp b/src/gpu/gl/GrGLVertexArray.cpp
 | 
| index fdb395d37a33c47a75b7687b939fd988c39e6a34..8cfa8d655050fa5b69e453970c035e6af7d534fe 100644
 | 
| --- a/src/gpu/gl/GrGLVertexArray.cpp
 | 
| +++ b/src/gpu/gl/GrGLVertexArray.cpp
 | 
| @@ -8,38 +8,14 @@
 | 
|  #include "GrGLVertexArray.h"
 | 
|  #include "GrGLGpu.h"
 | 
|  
 | 
| -struct AttribLayout {
 | 
| -    GrGLint     fCount;
 | 
| -    GrGLenum    fType;
 | 
| -    GrGLboolean fNormalized;  // Only used by floating point types.
 | 
| -};
 | 
|  
 | 
| -static const AttribLayout gLayouts[kGrVertexAttribTypeCount] = {
 | 
| -    {1, GR_GL_FLOAT, false},         // kFloat_GrVertexAttribType
 | 
| -    {2, GR_GL_FLOAT, false},         // kVec2f_GrVertexAttribType
 | 
| -    {3, GR_GL_FLOAT, false},         // kVec3f_GrVertexAttribType
 | 
| -    {4, GR_GL_FLOAT, false},         // kVec4f_GrVertexAttribType
 | 
| -    {1, GR_GL_UNSIGNED_BYTE, true},  // kUByte_GrVertexAttribType
 | 
| -    {4, GR_GL_UNSIGNED_BYTE, true},  // kVec4ub_GrVertexAttribType
 | 
| -    {2, GR_GL_SHORT, false},         // kVec2s_GrVertexAttribType
 | 
| -    {1, GR_GL_INT, false},           // kInt_GrVertexAttribType
 | 
| -    {1, GR_GL_UNSIGNED_INT, false},  // kUint_GrVertexAttribType
 | 
| -};
 | 
| -
 | 
| -GR_STATIC_ASSERT(0 == kFloat_GrVertexAttribType);
 | 
| -GR_STATIC_ASSERT(1 == kVec2f_GrVertexAttribType);
 | 
| -GR_STATIC_ASSERT(2 == kVec3f_GrVertexAttribType);
 | 
| -GR_STATIC_ASSERT(3 == kVec4f_GrVertexAttribType);
 | 
| -GR_STATIC_ASSERT(4 == kUByte_GrVertexAttribType);
 | 
| -GR_STATIC_ASSERT(5 == kVec4ub_GrVertexAttribType);
 | 
| -GR_STATIC_ASSERT(6 == kVec2s_GrVertexAttribType);
 | 
| -GR_STATIC_ASSERT(7 == kInt_GrVertexAttribType);
 | 
| -GR_STATIC_ASSERT(8 == kUint_GrVertexAttribType);
 | 
|  
 | 
|  void GrGLAttribArrayState::set(GrGLGpu* gpu,
 | 
|                                 int index,
 | 
|                                 GrGLuint vertexBufferID,
 | 
| -                               GrVertexAttribType type,
 | 
| +                               GrGLint size,
 | 
| +                               GrGLenum type,
 | 
| +                               GrGLboolean normalized,
 | 
|                                 GrGLsizei stride,
 | 
|                                 GrGLvoid* offset) {
 | 
|      SkASSERT(index >= 0 && index < fAttribArrayStates.count());
 | 
| @@ -51,31 +27,23 @@
 | 
|      }
 | 
|      if (!array->fAttribPointerIsValid ||
 | 
|          array->fVertexBufferID != vertexBufferID ||
 | 
| -        array->fType != type ||
 | 
| +        array->fSize != size ||
 | 
| +        array->fNormalized != normalized ||
 | 
|          array->fStride != stride ||
 | 
|          array->fOffset != offset) {
 | 
|  
 | 
|          gpu->bindVertexBuffer(vertexBufferID);
 | 
| -        const AttribLayout& layout = gLayouts[type];
 | 
| -        if (!GrVertexAttribTypeIsIntType(type)) {
 | 
| -            GR_GL_CALL(gpu->glInterface(), VertexAttribPointer(index,
 | 
| -                                                               layout.fCount,
 | 
| -                                                               layout.fType,
 | 
| -                                                               layout.fNormalized,
 | 
| -                                                               stride,
 | 
| -                                                               offset));
 | 
| -        } else {
 | 
| -            SkASSERT(gpu->caps()->shaderCaps()->integerSupport());
 | 
| -            SkASSERT(!layout.fNormalized);
 | 
| -            GR_GL_CALL(gpu->glInterface(), VertexAttribIPointer(index,
 | 
| -                                                                layout.fCount,
 | 
| -                                                                layout.fType,
 | 
| -                                                                stride,
 | 
| -                                                                offset));
 | 
| -        }
 | 
| +        GR_GL_CALL(gpu->glInterface(), VertexAttribPointer(index,
 | 
| +                                                           size,
 | 
| +                                                           type,
 | 
| +                                                           normalized,
 | 
| +                                                           stride,
 | 
| +                                                           offset));
 | 
|          array->fAttribPointerIsValid = true;
 | 
|          array->fVertexBufferID = vertexBufferID;
 | 
| -        array->fType = type;
 | 
| +        array->fSize = size;
 | 
| +        array->fNormalized = normalized;
 | 
| +        array->fStride = stride;
 | 
|          array->fOffset = offset;
 | 
|      }
 | 
|  }
 | 
| 
 |