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; |