| Index: src/gpu/gl/GrGLVertexArray.h
|
| diff --git a/src/gpu/gl/GrGLVertexArray.h b/src/gpu/gl/GrGLVertexArray.h
|
| index f5a97672f3b05b5c6053a819740b3744616467ac..0a5dea6a1ebf22830b3d4e7bcf0fab090ad08947 100644
|
| --- a/src/gpu/gl/GrGLVertexArray.h
|
| +++ b/src/gpu/gl/GrGLVertexArray.h
|
| @@ -16,6 +16,35 @@
|
| class GrGLVertexBuffer;
|
| class GrGLIndexBuffer;
|
| class GrGLGpu;
|
| +
|
| +struct GrGLAttribLayout {
|
| + GrGLint fCount;
|
| + GrGLenum fType;
|
| + GrGLboolean fNormalized;
|
| +};
|
| +
|
| +static inline const GrGLAttribLayout& GrGLAttribTypeToLayout(GrVertexAttribType type) {
|
| + static const GrGLAttribLayout kLayouts[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
|
| + {4, GR_GL_INT, false}, // kInt_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(SK_ARRAY_COUNT(kLayouts) == kGrVertexAttribTypeCount);
|
| + return kLayouts[type];
|
| +}
|
|
|
| /**
|
| * This sets and tracks the vertex attribute array state. It is used internally by GrGLVertexArray
|
| @@ -42,7 +71,9 @@
|
| void set(GrGLGpu*,
|
| int attribIndex,
|
| GrGLuint vertexBufferID,
|
| - GrVertexAttribType type,
|
| + GrGLint size,
|
| + GrGLenum type,
|
| + GrGLboolean normalized,
|
| GrGLsizei stride,
|
| GrGLvoid* offset);
|
|
|
| @@ -84,13 +115,15 @@
|
| fAttribPointerIsValid = false;
|
| }
|
|
|
| - bool fEnableIsValid;
|
| - bool fAttribPointerIsValid;
|
| - bool fEnabled;
|
| - GrGLuint fVertexBufferID;
|
| - GrVertexAttribType fType;
|
| - GrGLsizei fStride;
|
| - GrGLvoid* fOffset;
|
| + bool fEnableIsValid;
|
| + bool fAttribPointerIsValid;
|
| + bool fEnabled;
|
| + GrGLuint fVertexBufferID;
|
| + GrGLint fSize;
|
| + GrGLenum fType;
|
| + GrGLboolean fNormalized;
|
| + GrGLsizei fStride;
|
| + GrGLvoid* fOffset;
|
| };
|
|
|
| SkSTArray<16, AttribArrayState, true> fAttribArrayStates;
|
|
|