From 3a2caf8ecf38124f4ad21a0f6c4dabfcfa17911a Mon Sep 17 00:00:00 2001 From: cdalton Date: Fri, 5 Feb 2016 16:26:32 -0800 Subject: Improve GLSL integer support - Adds shader types for uint. - Adds a cap for integer support. - Uses glVertexAttribIPointer for integer attribs. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1669853002 Review URL: https://codereview.chromium.org/1669853002 --- src/gpu/gl/GrGLVertexArray.h | 49 ++++++++------------------------------------ 1 file changed, 8 insertions(+), 41 deletions(-) (limited to 'src/gpu/gl/GrGLVertexArray.h') diff --git a/src/gpu/gl/GrGLVertexArray.h b/src/gpu/gl/GrGLVertexArray.h index 0a5dea6a1e..f5a97672f3 100644 --- a/src/gpu/gl/GrGLVertexArray.h +++ b/src/gpu/gl/GrGLVertexArray.h @@ -17,35 +17,6 @@ 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 * (below) but is separate because it is also used to track the state of vertex array object 0. @@ -71,9 +42,7 @@ public: void set(GrGLGpu*, int attribIndex, GrGLuint vertexBufferID, - GrGLint size, - GrGLenum type, - GrGLboolean normalized, + GrVertexAttribType type, GrGLsizei stride, GrGLvoid* offset); @@ -115,15 +84,13 @@ private: fAttribPointerIsValid = false; } - bool fEnableIsValid; - bool fAttribPointerIsValid; - bool fEnabled; - GrGLuint fVertexBufferID; - GrGLint fSize; - GrGLenum fType; - GrGLboolean fNormalized; - GrGLsizei fStride; - GrGLvoid* fOffset; + bool fEnableIsValid; + bool fAttribPointerIsValid; + bool fEnabled; + GrGLuint fVertexBufferID; + GrVertexAttribType fType; + GrGLsizei fStride; + GrGLvoid* fOffset; }; SkSTArray<16, AttribArrayState, true> fAttribArrayStates; -- cgit v1.2.3