changed vertex attribute precisions to be actual types

Bug: skia:
Change-Id: Ic5555d9f1be7f24655bdea9f2a3677bfb128ef70
Reviewed-on: https://skia-review.googlesource.com/50221
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
diff --git a/include/gpu/GrShaderCaps.h b/include/gpu/GrShaderCaps.h
index d40e935..667433c 100644
--- a/include/gpu/GrShaderCaps.h
+++ b/include/gpu/GrShaderCaps.h
@@ -81,7 +81,7 @@
     int imageLoadStoreSupport() const { return fImageLoadStoreSupport; }
 
     /**
-    * Get the precision info for a variable of type kFloat_GrSLType, kVec2f_GrSLType, etc in a
+    * Get the precision info for a variable of type kFloat_GrSLType, kFloat2_GrSLType, etc in a
     * given shader type. If the shader type is not supported or the precision level is not
     * supported in that shader type then the returned struct will report false when supported() is
     * called.
diff --git a/include/private/GrTypesPriv.h b/include/private/GrTypesPriv.h
index 0b4703f..04a0111 100644
--- a/include/private/GrTypesPriv.h
+++ b/include/private/GrTypesPriv.h
@@ -449,19 +449,24 @@
  */
 enum GrVertexAttribType {
     kFloat_GrVertexAttribType = 0,
-    kVec2f_GrVertexAttribType,
-    kVec3f_GrVertexAttribType,
-    kVec4f_GrVertexAttribType,
+    kFloat2_GrVertexAttribType,
+    kFloat3_GrVertexAttribType,
+    kFloat4_GrVertexAttribType,
+    kHalf_GrVertexAttribType,
+    kHalf2_GrVertexAttribType,
+    kHalf3_GrVertexAttribType,
+    kHalf4_GrVertexAttribType,
 
-    kVec2i_GrVertexAttribType,   // vector of 2 32-bit ints
-    kVec3i_GrVertexAttribType,   // vector of 3 32-bit ints
-    kVec4i_GrVertexAttribType,   // vector of 4 32-bit ints
+    kInt2_GrVertexAttribType,   // vector of 2 32-bit ints
+    kInt3_GrVertexAttribType,   // vector of 3 32-bit ints
+    kInt4_GrVertexAttribType,   // vector of 4 32-bit ints
 
-    kUByte_GrVertexAttribType,   // unsigned byte, e.g. coverage
-    kVec4ub_GrVertexAttribType,  // vector of 4 unsigned bytes, e.g. colors
+    kUByte_norm_GrVertexAttribType,  // unsigned byte, e.g. coverage, 0 -> 0.0f, 255 -> 1.0f.
+    kUByte4_norm_GrVertexAttribType, // vector of 4 unsigned bytes, e.g. colors, 0 -> 0.0f,
+                                     // 255 -> 1.0f.
 
-    kVec2us_norm_GrVertexAttribType, // vector of 2 shorts. 0 -> 0.0f, 65535 -> 1.0f.
-    kVec2us_uint_GrVertexAttribType, // vector of 2 shorts. 0 -> 0, 65535 -> 65535.
+    kUShort2_GrVertexAttribType,      // vector of 2 shorts. 0 -> 0, 65535 -> 65535.
+    kUShort2_norm_GrVertexAttribType, // vector of 2 shorts. 0 -> 0.0f, 65535 -> 1.0f.
 
     kInt_GrVertexAttribType,
     kUint_GrVertexAttribType,
@@ -477,24 +482,32 @@
     switch (type) {
         case kFloat_GrVertexAttribType:
             return sizeof(float);
-        case kVec2f_GrVertexAttribType:
+        case kFloat2_GrVertexAttribType:
             return 2 * sizeof(float);
-        case kVec3f_GrVertexAttribType:
+        case kFloat3_GrVertexAttribType:
             return 3 * sizeof(float);
-        case kVec4f_GrVertexAttribType:
+        case kFloat4_GrVertexAttribType:
             return 4 * sizeof(float);
-        case kVec2i_GrVertexAttribType:
+        case kHalf_GrVertexAttribType:
+            return sizeof(float);
+        case kHalf2_GrVertexAttribType:
+            return 2 * sizeof(float);
+        case kHalf3_GrVertexAttribType:
+            return 3 * sizeof(float);
+        case kHalf4_GrVertexAttribType:
+            return 4 * sizeof(float);
+        case kInt2_GrVertexAttribType:
             return 2 * sizeof(int32_t);
-        case kVec3i_GrVertexAttribType:
+        case kInt3_GrVertexAttribType:
             return 3 * sizeof(int32_t);
-        case kVec4i_GrVertexAttribType:
+        case kInt4_GrVertexAttribType:
             return 4 * sizeof(int32_t);
-        case kUByte_GrVertexAttribType:
+        case kUByte_norm_GrVertexAttribType:
             return 1 * sizeof(char);
-        case kVec4ub_GrVertexAttribType:
+        case kUByte4_norm_GrVertexAttribType:
             return 4 * sizeof(char);
-        case kVec2us_norm_GrVertexAttribType: // fall through
-        case kVec2us_uint_GrVertexAttribType:
+        case kUShort2_norm_GrVertexAttribType: // fall through
+        case kUShort2_GrVertexAttribType:
             return 2 * sizeof(int16_t);
         case kInt_GrVertexAttribType:
             return sizeof(int32_t);
@@ -510,25 +523,33 @@
  */
 static inline GrSLType GrVertexAttribTypeToSLType(GrVertexAttribType type) {
     switch (type) {
-        case kVec2us_norm_GrVertexAttribType: // fall through
+        case kUShort2_norm_GrVertexAttribType: // fall through
             return kFloat2_GrSLType;
-        case kVec2us_uint_GrVertexAttribType:
+        case kUShort2_GrVertexAttribType:
             return kUint2_GrSLType;
-        case kUByte_GrVertexAttribType:       // fall through
+        case kUByte_norm_GrVertexAttribType:   // fall through
         case kFloat_GrVertexAttribType:
             return kFloat_GrSLType;
-        case kVec2f_GrVertexAttribType:
+        case kFloat2_GrVertexAttribType:
             return kFloat2_GrSLType;
-        case kVec3f_GrVertexAttribType:
+        case kFloat3_GrVertexAttribType:
             return kFloat3_GrSLType;
-        case kVec4ub_GrVertexAttribType:
-        case kVec4f_GrVertexAttribType:
+        case kFloat4_GrVertexAttribType:
             return kFloat4_GrSLType;
-        case kVec2i_GrVertexAttribType:
+        case kHalf_GrVertexAttribType:
+            return kHalf_GrSLType;
+        case kHalf2_GrVertexAttribType:
+            return kHalf2_GrSLType;
+        case kHalf3_GrVertexAttribType:
+            return kHalf3_GrSLType;
+        case kHalf4_GrVertexAttribType:
+        case kUByte4_norm_GrVertexAttribType:
+            return kHalf4_GrSLType;
+        case kInt2_GrVertexAttribType:
             return kInt2_GrSLType;
-        case kVec3i_GrVertexAttribType:
+        case kInt3_GrVertexAttribType:
             return kInt3_GrSLType;
-        case kVec4i_GrVertexAttribType:
+        case kInt4_GrVertexAttribType:
             return kInt4_GrSLType;
         case kInt_GrVertexAttribType:
             return kInt_GrSLType;
diff --git a/src/gpu/GrDefaultGeoProcFactory.cpp b/src/gpu/GrDefaultGeoProcFactory.cpp
index 58ae2a9..32d16ff 100644
--- a/src/gpu/GrDefaultGeoProcFactory.cpp
+++ b/src/gpu/GrDefaultGeoProcFactory.cpp
@@ -256,18 +256,16 @@
             , fLocalCoordsWillBeRead(localCoordsWillBeRead)
             , fColorSpaceXform(std::move(colorSpaceXform)) {
         this->initClassID<DefaultGeoProc>();
-        fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType,
-                                             kHigh_GrSLPrecision);
+        fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
         if (fFlags & kColorAttribute_GPFlag) {
-            fInColor = &this->addVertexAttrib("inColor", kVec4ub_GrVertexAttribType);
+            fInColor = &this->addVertexAttrib("inColor", kUByte4_norm_GrVertexAttribType);
         }
         if (fFlags & kLocalCoordAttribute_GPFlag) {
-            fInLocalCoords = &this->addVertexAttrib("inLocalCoord", kVec2f_GrVertexAttribType,
-                                                    kHigh_GrSLPrecision);
+            fInLocalCoords = &this->addVertexAttrib("inLocalCoord", kFloat2_GrVertexAttribType);
             this->setHasExplicitLocalCoords();
         }
         if (fFlags & kCoverageAttribute_GPFlag) {
-            fInCoverage = &this->addVertexAttrib("inCoverage", kFloat_GrVertexAttribType);
+            fInCoverage = &this->addVertexAttrib("inCoverage", kHalf_GrVertexAttribType);
         }
     }
 
diff --git a/src/gpu/GrPrimitiveProcessor.h b/src/gpu/GrPrimitiveProcessor.h
index 3b90689..eb59d98 100644
--- a/src/gpu/GrPrimitiveProcessor.h
+++ b/src/gpu/GrPrimitiveProcessor.h
@@ -49,7 +49,6 @@
         const char*          fName;
         GrVertexAttribType   fType;
         int                  fOffsetInRecord;
-        GrSLPrecision        fPrecision;
         InputRate            fInputRate;
     };
 
@@ -118,19 +117,13 @@
     /**
      * Subclasses call these from their constructor to register vertex and instance attributes.
      */
-    const Attribute& addVertexAttrib(const char* name, GrVertexAttribType type,
-                                     GrSLPrecision precision = kDefault_GrSLPrecision) {
-        precision = (kDefault_GrSLPrecision == precision) ? kMedium_GrSLPrecision : precision;
-        fAttribs.push_back() = {name, type, fVertexStride, precision,
-                                Attribute::InputRate::kPerVertex};
+    const Attribute& addVertexAttrib(const char* name, GrVertexAttribType type) {
+        fAttribs.push_back() = {name, type, fVertexStride, Attribute::InputRate::kPerVertex};
         fVertexStride += static_cast<int>(SkAlign4(GrVertexAttribTypeSize(type)));
         return fAttribs.back();
     }
-    const Attribute& addInstanceAttrib(const char* name, GrVertexAttribType type,
-                                       GrSLPrecision precision = kDefault_GrSLPrecision) {
-        precision = (kDefault_GrSLPrecision == precision) ? kMedium_GrSLPrecision : precision;
-        fAttribs.push_back() = {name, type, fInstanceStride, precision,
-                                Attribute::InputRate::kPerInstance};
+    const Attribute& addInstanceAttrib(const char* name, GrVertexAttribType type) {
+        fAttribs.push_back() = {name, type, fInstanceStride, Attribute::InputRate::kPerInstance};
         fInstanceStride += static_cast<int>(SkAlign4(GrVertexAttribTypeSize(type)));
         return fAttribs.back();
     }
diff --git a/src/gpu/ccpr/GrCCPRCoverageProcessor.cpp b/src/gpu/ccpr/GrCCPRCoverageProcessor.cpp
index 4a0dd26..7354c03 100644
--- a/src/gpu/ccpr/GrCCPRCoverageProcessor.cpp
+++ b/src/gpu/ccpr/GrCCPRCoverageProcessor.cpp
@@ -43,8 +43,7 @@
 
 GrCCPRCoverageProcessor::GrCCPRCoverageProcessor(Mode mode, GrBuffer* pointsBuffer)
         : fMode(mode)
-        , fInstanceAttrib(this->addInstanceAttrib("instance", InstanceArrayFormat(mode),
-                                                  kHigh_GrSLPrecision)) {
+        , fInstanceAttrib(this->addInstanceAttrib("instance", InstanceArrayFormat(mode))) {
     fPointsBufferAccess.reset(kRG_float_GrPixelConfig, pointsBuffer, kVertex_GrShaderFlag);
     this->addBufferAccess(&fPointsBufferAccess);
 
diff --git a/src/gpu/ccpr/GrCCPRCoverageProcessor.h b/src/gpu/ccpr/GrCCPRCoverageProcessor.h
index 879f724..f02b742 100644
--- a/src/gpu/ccpr/GrCCPRCoverageProcessor.h
+++ b/src/gpu/ccpr/GrCCPRCoverageProcessor.h
@@ -73,7 +73,7 @@
         kLoopCorners
     };
     static constexpr GrVertexAttribType InstanceArrayFormat(Mode mode) {
-        return mode < Mode::kQuadraticHulls ? kVec4i_GrVertexAttribType : kVec2i_GrVertexAttribType;
+        return mode < Mode::kQuadraticHulls ? kInt4_GrVertexAttribType : kInt2_GrVertexAttribType;
     }
     static const char* GetProcessorName(Mode);
 
@@ -81,7 +81,7 @@
 
     const char* instanceAttrib() const { return fInstanceAttrib.fName; }
     int atlasOffsetIdx() const {
-        return kVec4i_GrVertexAttribType == InstanceArrayFormat(fMode) ? 3 : 1;
+        return kInt4_GrVertexAttribType == InstanceArrayFormat(fMode) ? 3 : 1;
     }
     const char* name() const override { return GetProcessorName(fMode); }
     SkString dumpInfo() const override {
diff --git a/src/gpu/ccpr/GrCCPRPathProcessor.cpp b/src/gpu/ccpr/GrCCPRPathProcessor.cpp
index 78baa36..bac52ce 100644
--- a/src/gpu/ccpr/GrCCPRPathProcessor.cpp
+++ b/src/gpu/ccpr/GrCCPRPathProcessor.cpp
@@ -51,14 +51,14 @@
 GrCCPRPathProcessor::GrCCPRPathProcessor(GrResourceProvider* rp, sk_sp<GrTextureProxy> atlas,
                                          SkPath::FillType fillType, const GrShaderCaps& shaderCaps)
         : fFillType(fillType) {
-    this->addInstanceAttrib("devbounds", kVec4f_GrVertexAttribType, kHigh_GrSLPrecision);
-    this->addInstanceAttrib("devbounds45", kVec4f_GrVertexAttribType, kHigh_GrSLPrecision);
-    this->addInstanceAttrib("view_matrix", kVec4f_GrVertexAttribType, kHigh_GrSLPrecision);
-    this->addInstanceAttrib("view_translate", kVec2f_GrVertexAttribType, kHigh_GrSLPrecision);
+    this->addInstanceAttrib("devbounds", kFloat4_GrVertexAttribType);
+    this->addInstanceAttrib("devbounds45", kFloat4_GrVertexAttribType);
+    this->addInstanceAttrib("view_matrix", kFloat4_GrVertexAttribType);
+    this->addInstanceAttrib("view_translate", kFloat2_GrVertexAttribType);
     // FIXME: this could be a vector of two shorts if it were supported by Ganesh.
-    // Note: this should be doable now with kVec2us_uint_GrVertexAttribType
-    this->addInstanceAttrib("atlas_offset", kVec2i_GrVertexAttribType, kHigh_GrSLPrecision);
-    this->addInstanceAttrib("color", kVec4ub_GrVertexAttribType, kLow_GrSLPrecision);
+    // Note: this should be doable now with kUShort2_GrVertexAttribType
+    this->addInstanceAttrib("atlas_offset", kInt2_GrVertexAttribType);
+    this->addInstanceAttrib("color", kUByte4_norm_GrVertexAttribType);
 
     SkASSERT(offsetof(Instance, fDevBounds) ==
              this->getInstanceAttrib(InstanceAttribs::kDevBounds).fOffsetInRecord);
@@ -76,7 +76,7 @@
 
     GR_STATIC_ASSERT(6 == kNumInstanceAttribs);
 
-    this->addVertexAttrib("edge_norms", kVec4f_GrVertexAttribType, kHigh_GrSLPrecision);
+    this->addVertexAttrib("edge_norms", kFloat4_GrVertexAttribType);
 
     fAtlasAccess.reset(std::move(atlas), GrSamplerState::Filter::kNearest,
                        GrSamplerState::WrapMode::kClamp, kFragment_GrShaderFlag);
diff --git a/src/gpu/effects/GrBezierEffect.cpp b/src/gpu/effects/GrBezierEffect.cpp
index 9f5c8ca..354bc67 100644
--- a/src/gpu/effects/GrBezierEffect.cpp
+++ b/src/gpu/effects/GrBezierEffect.cpp
@@ -241,9 +241,8 @@
     , fCoverageScale(coverage)
     , fEdgeType(edgeType) {
     this->initClassID<GrConicEffect>();
-    fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType,
-                                         kHigh_GrSLPrecision);
-    fInConicCoeffs = &this->addVertexAttrib("inConicCoeffs", kVec4f_GrVertexAttribType);
+    fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
+    fInConicCoeffs = &this->addVertexAttrib("inConicCoeffs", kHalf4_GrVertexAttribType);
 }
 
 //////////////////////////////////////////////////////////////////////////////
@@ -444,9 +443,8 @@
     , fCoverageScale(coverage)
     , fEdgeType(edgeType) {
     this->initClassID<GrQuadEffect>();
-    fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType,
-                                                   kHigh_GrSLPrecision);
-    fInHairQuadEdge = &this->addVertexAttrib("inHairQuadEdge", kVec4f_GrVertexAttribType);
+    fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
+    fInHairQuadEdge = &this->addVertexAttrib("inHairQuadEdge", kHalf4_GrVertexAttribType);
 }
 
 //////////////////////////////////////////////////////////////////////////////
@@ -670,8 +668,7 @@
     , fDevKLMMatrix(devKLMMatrix)
     , fEdgeType(edgeType) {
     this->initClassID<GrCubicEffect>();
-    fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType,
-                                         kHigh_GrSLPrecision);
+    fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
 }
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/effects/GrBitmapTextGeoProc.cpp b/src/gpu/effects/GrBitmapTextGeoProc.cpp
index 0997b9e..4370219 100644
--- a/src/gpu/effects/GrBitmapTextGeoProc.cpp
+++ b/src/gpu/effects/GrBitmapTextGeoProc.cpp
@@ -130,17 +130,15 @@
         , fInColor(nullptr)
         , fMaskFormat(format) {
     this->initClassID<GrBitmapTextGeoProc>();
-    fInPosition =
-            &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType, kHigh_GrSLPrecision);
+    fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
 
     bool hasVertexColor = kA8_GrMaskFormat == fMaskFormat ||
                           kA565_GrMaskFormat == fMaskFormat;
     if (hasVertexColor) {
-        fInColor = &this->addVertexAttrib("inColor", kVec4ub_GrVertexAttribType);
+        fInColor = &this->addVertexAttrib("inColor", kUByte4_norm_GrVertexAttribType);
     }
 
-    fInTextureCoords = &this->addVertexAttrib("inTextureCoords", kVec2us_uint_GrVertexAttribType,
-                                              kHigh_GrSLPrecision);
+    fInTextureCoords = &this->addVertexAttrib("inTextureCoords", kUShort2_GrVertexAttribType);
     for (int i = 0; i < kMaxTextures; ++i) {
         if (proxies[i]) {
             fTextureSamplers[i].reset(std::move(proxies[i]), params);
diff --git a/src/gpu/effects/GrDistanceFieldGeoProc.cpp b/src/gpu/effects/GrDistanceFieldGeoProc.cpp
index 44e5273..dcbb5d5 100644
--- a/src/gpu/effects/GrDistanceFieldGeoProc.cpp
+++ b/src/gpu/effects/GrDistanceFieldGeoProc.cpp
@@ -247,11 +247,9 @@
         , fUsesLocalCoords(usesLocalCoords) {
     SkASSERT(!(flags & ~kNonLCD_DistanceFieldEffectMask));
     this->initClassID<GrDistanceFieldA8TextGeoProc>();
-    fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType,
-                                         kHigh_GrSLPrecision);
-    fInColor = &this->addVertexAttrib("inColor", kVec4ub_GrVertexAttribType);
-    fInTextureCoords = &this->addVertexAttrib("inTextureCoords", kVec2us_uint_GrVertexAttribType,
-                                              kHigh_GrSLPrecision);
+    fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
+    fInColor = &this->addVertexAttrib("inColor", kUByte4_norm_GrVertexAttribType);
+    fInTextureCoords = &this->addVertexAttrib("inTextureCoords", kUShort2_GrVertexAttribType);
     for (int i = 0; i < kMaxTextures; ++i) {
         if (proxies[i]) {
             fTextureSamplers[i].reset(std::move(proxies[i]), params);
@@ -507,11 +505,9 @@
         , fUsesLocalCoords(usesLocalCoords) {
     SkASSERT(!(flags & ~kNonLCD_DistanceFieldEffectMask));
     this->initClassID<GrDistanceFieldPathGeoProc>();
-    fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType,
-                                         kHigh_GrSLPrecision);
-    fInColor = &this->addVertexAttrib("inColor", kVec4ub_GrVertexAttribType);
-    fInTextureCoords = &this->addVertexAttrib("inTextureCoords", kVec2us_uint_GrVertexAttribType,
-                                              kHigh_GrSLPrecision);
+    fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
+    fInColor = &this->addVertexAttrib("inColor", kUByte4_norm_GrVertexAttribType);
+    fInTextureCoords = &this->addVertexAttrib("inTextureCoords", kUShort2_GrVertexAttribType);
     for (int i = 0; i < kMaxTextures; ++i) {
         if (proxies[i]) {
             fTextureSamplers[i].reset(std::move(proxies[i]), params);
@@ -828,11 +824,9 @@
         , fUsesLocalCoords(usesLocalCoords) {
     SkASSERT(!(flags & ~kLCD_DistanceFieldEffectMask) && (flags & kUseLCD_DistanceFieldEffectFlag));
     this->initClassID<GrDistanceFieldLCDTextGeoProc>();
-    fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType,
-                                         kHigh_GrSLPrecision);
-    fInColor = &this->addVertexAttrib("inColor", kVec4ub_GrVertexAttribType);
-    fInTextureCoords = &this->addVertexAttrib("inTextureCoords", kVec2us_uint_GrVertexAttribType,
-                                              kHigh_GrSLPrecision);
+    fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
+    fInColor = &this->addVertexAttrib("inColor", kUByte4_norm_GrVertexAttribType);
+    fInTextureCoords = &this->addVertexAttrib("inTextureCoords", kUShort2_GrVertexAttribType);
     for (int i = 0; i < kMaxTextures; ++i) {
         if (proxies[i]) {
             fTextureSamplers[i].reset(std::move(proxies[i]), params);
diff --git a/src/gpu/effects/GrShadowGeoProc.cpp b/src/gpu/effects/GrShadowGeoProc.cpp
index ca4c5db..3217f46 100644
--- a/src/gpu/effects/GrShadowGeoProc.cpp
+++ b/src/gpu/effects/GrShadowGeoProc.cpp
@@ -65,10 +65,9 @@
 
 GrRRectShadowGeoProc::GrRRectShadowGeoProc() {
     this->initClassID<GrRRectShadowGeoProc>();
-    fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType,
-                                         kHigh_GrSLPrecision);
-    fInColor = &this->addVertexAttrib("inColor", kVec4ub_GrVertexAttribType);
-    fInShadowParams = &this->addVertexAttrib("inShadowParams", kVec4f_GrVertexAttribType);
+    fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
+    fInColor = &this->addVertexAttrib("inColor", kUByte4_norm_GrVertexAttribType);
+    fInShadowParams = &this->addVertexAttrib("inShadowParams", kHalf4_GrVertexAttribType);
 }
 
 GrGLSLPrimitiveProcessor* GrRRectShadowGeoProc::createGLSLInstance(const GrShaderCaps&) const {
diff --git a/src/gpu/gl/GrGLGpu.cpp b/src/gpu/gl/GrGLGpu.cpp
index 92eb86d..ff19bb6 100644
--- a/src/gpu/gl/GrGLGpu.cpp
+++ b/src/gpu/gl/GrGLGpu.cpp
@@ -3811,7 +3811,7 @@
 
     GrGLAttribArrayState* attribs = fHWVertexArrayState.bindInternalVertexArray(this);
     attribs->enableVertexArrays(this, 1);
-    attribs->set(this, 0, fStencilClipClearArrayBuffer.get(), kVec2f_GrVertexAttribType,
+    attribs->set(this, 0, fStencilClipClearArrayBuffer.get(), kHalf2_GrVertexAttribType,
                  2 * sizeof(GrGLfloat), 0);
 
     GrXferProcessor::BlendInfo blendInfo;
@@ -3864,7 +3864,7 @@
 
     GrGLAttribArrayState* attribs = fHWVertexArrayState.bindInternalVertexArray(this);
     attribs->enableVertexArrays(this, 1);
-    attribs->set(this, 0, fCopyProgramArrayBuffer.get(), kVec2f_GrVertexAttribType,
+    attribs->set(this, 0, fCopyProgramArrayBuffer.get(), kHalf2_GrVertexAttribType,
                  2 * sizeof(GrGLfloat), 0);
 
     // dst rect edges in NDC (-1 to 1)
@@ -4095,7 +4095,7 @@
 
     GrGLAttribArrayState* attribs = fHWVertexArrayState.bindInternalVertexArray(this);
     attribs->enableVertexArrays(this, 1);
-    attribs->set(this, 0, fMipmapProgramArrayBuffer.get(), kVec2f_GrVertexAttribType,
+    attribs->set(this, 0, fMipmapProgramArrayBuffer.get(), kHalf2_GrVertexAttribType,
                  2 * sizeof(GrGLfloat), 0);
 
     // Set "simple" state once:
diff --git a/src/gpu/gl/GrGLVertexArray.cpp b/src/gpu/gl/GrGLVertexArray.cpp
index 991de96..a903e7d 100644
--- a/src/gpu/gl/GrGLVertexArray.cpp
+++ b/src/gpu/gl/GrGLVertexArray.cpp
@@ -21,25 +21,33 @@
     switch (type) {
         case kFloat_GrVertexAttribType:
             return {false, 1, GR_GL_FLOAT};
-        case kVec2f_GrVertexAttribType:
+        case kFloat2_GrVertexAttribType:
             return {false, 2, GR_GL_FLOAT};
-        case kVec3f_GrVertexAttribType:
+        case kFloat3_GrVertexAttribType:
             return {false, 3, GR_GL_FLOAT};
-        case kVec4f_GrVertexAttribType:
+        case kFloat4_GrVertexAttribType:
             return {false, 4, GR_GL_FLOAT};
-        case kVec2i_GrVertexAttribType:
+        case kHalf_GrVertexAttribType:
+            return {false, 1, GR_GL_FLOAT};
+        case kHalf2_GrVertexAttribType:
+            return {false, 2, GR_GL_FLOAT};
+        case kHalf3_GrVertexAttribType:
+            return {false, 3, GR_GL_FLOAT};
+        case kHalf4_GrVertexAttribType:
+            return {false, 4, GR_GL_FLOAT};
+        case kInt2_GrVertexAttribType:
             return {false, 2, GR_GL_INT};
-        case kVec3i_GrVertexAttribType:
+        case kInt3_GrVertexAttribType:
             return {false, 3, GR_GL_INT};
-        case kVec4i_GrVertexAttribType:
+        case kInt4_GrVertexAttribType:
             return {false, 4, GR_GL_INT};
-        case kUByte_GrVertexAttribType:
+        case kUByte_norm_GrVertexAttribType:
             return {true, 1, GR_GL_UNSIGNED_BYTE};
-        case kVec4ub_GrVertexAttribType:
+        case kUByte4_norm_GrVertexAttribType:
             return {true, 4, GR_GL_UNSIGNED_BYTE};
-        case kVec2us_norm_GrVertexAttribType:
+        case kUShort2_norm_GrVertexAttribType:
             return {true, 2, GR_GL_UNSIGNED_SHORT};
-        case kVec2us_uint_GrVertexAttribType:
+        case kUShort2_GrVertexAttribType:
             return {false, 2, GR_GL_UNSIGNED_SHORT};
         case kInt_GrVertexAttribType:
             return {false, 1, GR_GL_INT};
@@ -55,25 +63,33 @@
     switch (type) {
         case kFloat_GrVertexAttribType:
             return false;
-        case kVec2f_GrVertexAttribType:
+        case kFloat2_GrVertexAttribType:
             return false;
-        case kVec3f_GrVertexAttribType:
+        case kFloat3_GrVertexAttribType:
             return false;
-        case kVec4f_GrVertexAttribType:
+        case kFloat4_GrVertexAttribType:
             return false;
-        case kVec2i_GrVertexAttribType:
+        case kHalf_GrVertexAttribType:
+            return false;
+        case kHalf2_GrVertexAttribType:
+            return false;
+        case kHalf3_GrVertexAttribType:
+            return false;
+        case kHalf4_GrVertexAttribType:
+            return false;
+        case kInt2_GrVertexAttribType:
             return true;
-        case kVec3i_GrVertexAttribType:
+        case kInt3_GrVertexAttribType:
             return true;
-        case kVec4i_GrVertexAttribType:
+        case kInt4_GrVertexAttribType:
             return true;
-        case kUByte_GrVertexAttribType:
+        case kUByte_norm_GrVertexAttribType:
             return false;
-        case kVec4ub_GrVertexAttribType:
+        case kUByte4_norm_GrVertexAttribType:
             return false;
-        case kVec2us_norm_GrVertexAttribType:
+        case kUShort2_norm_GrVertexAttribType:
             return false;
-        case kVec2us_uint_GrVertexAttribType:
+        case kUShort2_GrVertexAttribType:
             return shaderCaps->integerSupport();
         case kInt_GrVertexAttribType:
             return true;
diff --git a/src/gpu/glsl/GrGLSLVarying.cpp b/src/gpu/glsl/GrGLSLVarying.cpp
index ef3fe8a..1f8ddbd 100644
--- a/src/gpu/glsl/GrGLSLVarying.cpp
+++ b/src/gpu/glsl/GrGLSLVarying.cpp
@@ -69,8 +69,7 @@
         this->addAttribute(GrShaderVar(attr.fName,
                                        GrVertexAttribTypeToSLType(attr.fType),
                                        GrShaderVar::kIn_TypeModifier,
-                                       GrShaderVar::kNonArray,
-                                       attr.fPrecision));
+                                       GrShaderVar::kNonArray));
     }
 }
 
diff --git a/src/gpu/instanced/InstanceProcessor.cpp b/src/gpu/instanced/InstanceProcessor.cpp
index 3dcc3ca..5890028 100644
--- a/src/gpu/instanced/InstanceProcessor.cpp
+++ b/src/gpu/instanced/InstanceProcessor.cpp
@@ -43,13 +43,13 @@
 InstanceProcessor::InstanceProcessor(OpInfo opInfo, GrBuffer* paramsBuffer) : fOpInfo(opInfo) {
     this->initClassID<InstanceProcessor>();
 
-    this->addVertexAttrib("shapeCoords", kVec2f_GrVertexAttribType, kHigh_GrSLPrecision);
+    this->addVertexAttrib("shapeCoords", kFloat2_GrVertexAttribType);
     this->addVertexAttrib("vertexAttrs", kInt_GrVertexAttribType);
     this->addVertexAttrib("instanceInfo", kUint_GrVertexAttribType);
-    this->addVertexAttrib("shapeMatrixX", kVec3f_GrVertexAttribType, kHigh_GrSLPrecision);
-    this->addVertexAttrib("shapeMatrixY", kVec3f_GrVertexAttribType, kHigh_GrSLPrecision);
-    this->addVertexAttrib("color", kVec4f_GrVertexAttribType, kLow_GrSLPrecision);
-    this->addVertexAttrib("localRect", kVec4f_GrVertexAttribType, kHigh_GrSLPrecision);
+    this->addVertexAttrib("shapeMatrixX", kFloat3_GrVertexAttribType);
+    this->addVertexAttrib("shapeMatrixY", kFloat3_GrVertexAttribType);
+    this->addVertexAttrib("color", kHalf4_GrVertexAttribType);
+    this->addVertexAttrib("localRect", kFloat4_GrVertexAttribType);
 
     GR_STATIC_ASSERT(0 == (int)Attrib::kShapeCoords);
     GR_STATIC_ASSERT(1 == (int)Attrib::kVertexAttrs);
diff --git a/src/gpu/ops/GrAAConvexPathRenderer.cpp b/src/gpu/ops/GrAAConvexPathRenderer.cpp
index 03dabe3..292f594 100644
--- a/src/gpu/ops/GrAAConvexPathRenderer.cpp
+++ b/src/gpu/ops/GrAAConvexPathRenderer.cpp
@@ -636,9 +636,9 @@
     QuadEdgeEffect(const SkMatrix& localMatrix, bool usesLocalCoords)
             : fLocalMatrix(localMatrix), fUsesLocalCoords(usesLocalCoords) {
         this->initClassID<QuadEdgeEffect>();
-        fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType);
-        fInColor = &this->addVertexAttrib("inColor", kVec4ub_GrVertexAttribType);
-        fInQuadEdge = &this->addVertexAttrib("inQuadEdge", kVec4f_GrVertexAttribType);
+        fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
+        fInColor = &this->addVertexAttrib("inColor", kUByte4_norm_GrVertexAttribType);
+        fInQuadEdge = &this->addVertexAttrib("inQuadEdge", kHalf4_GrVertexAttribType);
     }
 
     const Attribute* fInPosition;
diff --git a/src/gpu/ops/GrDashOp.cpp b/src/gpu/ops/GrDashOp.cpp
index 0d8ef94..8090f43 100644
--- a/src/gpu/ops/GrDashOp.cpp
+++ b/src/gpu/ops/GrDashOp.cpp
@@ -983,9 +983,9 @@
     , fUsesLocalCoords(usesLocalCoords)
     , fAAMode(aaMode) {
     this->initClassID<DashingCircleEffect>();
-    fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType);
-    fInDashParams = &this->addVertexAttrib("inDashParams", kVec3f_GrVertexAttribType);
-    fInCircleParams = &this->addVertexAttrib("inCircleParams", kVec2f_GrVertexAttribType);
+    fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
+    fInDashParams = &this->addVertexAttrib("inDashParams", kHalf3_GrVertexAttribType);
+    fInCircleParams = &this->addVertexAttrib("inCircleParams", kHalf2_GrVertexAttribType);
 }
 
 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(DashingCircleEffect);
@@ -1205,9 +1205,9 @@
     , fUsesLocalCoords(usesLocalCoords)
     , fAAMode(aaMode) {
     this->initClassID<DashingLineEffect>();
-    fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType);
-    fInDashParams = &this->addVertexAttrib("inDashParams", kVec3f_GrVertexAttribType);
-    fInRectParams = &this->addVertexAttrib("inRect", kVec4f_GrVertexAttribType);
+    fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
+    fInDashParams = &this->addVertexAttrib("inDashParams", kHalf3_GrVertexAttribType);
+    fInRectParams = &this->addVertexAttrib("inRect", kHalf4_GrVertexAttribType);
 }
 
 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(DashingLineEffect);
diff --git a/src/gpu/ops/GrMSAAPathRenderer.cpp b/src/gpu/ops/GrMSAAPathRenderer.cpp
index c29fe12..5c46563 100644
--- a/src/gpu/ops/GrMSAAPathRenderer.cpp
+++ b/src/gpu/ops/GrMSAAPathRenderer.cpp
@@ -199,10 +199,9 @@
     MSAAQuadProcessor(const SkMatrix& viewMatrix)
         : fViewMatrix(viewMatrix) {
         this->initClassID<MSAAQuadProcessor>();
-        fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType,
-                                             kHigh_GrSLPrecision);
-        fInUV = &this->addVertexAttrib("inUV", kVec2f_GrVertexAttribType, kHigh_GrSLPrecision);
-        fInColor = &this->addVertexAttrib("inColor", kVec4ub_GrVertexAttribType);
+        fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
+        fInUV = &this->addVertexAttrib("inUV", kFloat2_GrVertexAttribType);
+        fInColor = &this->addVertexAttrib("inColor", kUByte4_norm_GrVertexAttribType);
         this->setSampleShading(1.0f);
     }
 
diff --git a/src/gpu/ops/GrOvalOpFactory.cpp b/src/gpu/ops/GrOvalOpFactory.cpp
index 89e3afb..b29ecf7 100644
--- a/src/gpu/ops/GrOvalOpFactory.cpp
+++ b/src/gpu/ops/GrOvalOpFactory.cpp
@@ -70,23 +70,21 @@
                             const SkMatrix& localMatrix)
             : fLocalMatrix(localMatrix) {
         this->initClassID<CircleGeometryProcessor>();
-        fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType,
-                                             kHigh_GrSLPrecision);
-        fInColor = &this->addVertexAttrib("inColor", kVec4ub_GrVertexAttribType);
-        fInCircleEdge = &this->addVertexAttrib("inCircleEdge", kVec4f_GrVertexAttribType,
-                                               kHigh_GrSLPrecision);
+        fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
+        fInColor = &this->addVertexAttrib("inColor", kUByte4_norm_GrVertexAttribType);
+        fInCircleEdge = &this->addVertexAttrib("inCircleEdge", kFloat4_GrVertexAttribType);
         if (clipPlane) {
-            fInClipPlane = &this->addVertexAttrib("inClipPlane", kVec3f_GrVertexAttribType);
+            fInClipPlane = &this->addVertexAttrib("inClipPlane", kHalf3_GrVertexAttribType);
         } else {
             fInClipPlane = nullptr;
         }
         if (isectPlane) {
-            fInIsectPlane = &this->addVertexAttrib("inIsectPlane", kVec3f_GrVertexAttribType);
+            fInIsectPlane = &this->addVertexAttrib("inIsectPlane", kHalf3_GrVertexAttribType);
         } else {
             fInIsectPlane = nullptr;
         }
         if (unionPlane) {
-            fInUnionPlane = &this->addVertexAttrib("inUnionPlane", kVec3f_GrVertexAttribType);
+            fInUnionPlane = &this->addVertexAttrib("inUnionPlane", kHalf3_GrVertexAttribType);
         } else {
             fInUnionPlane = nullptr;
         }
@@ -242,10 +240,10 @@
 public:
     EllipseGeometryProcessor(bool stroke, const SkMatrix& localMatrix) : fLocalMatrix(localMatrix) {
         this->initClassID<EllipseGeometryProcessor>();
-        fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType);
-        fInColor = &this->addVertexAttrib("inColor", kVec4ub_GrVertexAttribType);
-        fInEllipseOffset = &this->addVertexAttrib("inEllipseOffset", kVec2f_GrVertexAttribType);
-        fInEllipseRadii = &this->addVertexAttrib("inEllipseRadii", kVec4f_GrVertexAttribType);
+        fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
+        fInColor = &this->addVertexAttrib("inColor", kUByte4_norm_GrVertexAttribType);
+        fInEllipseOffset = &this->addVertexAttrib("inEllipseOffset", kHalf2_GrVertexAttribType);
+        fInEllipseRadii = &this->addVertexAttrib("inEllipseRadii", kHalf4_GrVertexAttribType);
         fStroke = stroke;
     }
 
@@ -383,11 +381,10 @@
     DIEllipseGeometryProcessor(const SkMatrix& viewMatrix, DIEllipseStyle style)
             : fViewMatrix(viewMatrix) {
         this->initClassID<DIEllipseGeometryProcessor>();
-        fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttribType,
-                                             kHigh_GrSLPrecision);
-        fInColor = &this->addVertexAttrib("inColor", kVec4ub_GrVertexAttribType);
-        fInEllipseOffsets0 = &this->addVertexAttrib("inEllipseOffsets0", kVec2f_GrVertexAttribType);
-        fInEllipseOffsets1 = &this->addVertexAttrib("inEllipseOffsets1", kVec2f_GrVertexAttribType);
+        fInPosition = &this->addVertexAttrib("inPosition", kFloat2_GrVertexAttribType);
+        fInColor = &this->addVertexAttrib("inColor", kUByte4_norm_GrVertexAttribType);
+        fInEllipseOffsets0 = &this->addVertexAttrib("inEllipseOffsets0", kHalf2_GrVertexAttribType);
+        fInEllipseOffsets1 = &this->addVertexAttrib("inEllipseOffsets1", kHalf2_GrVertexAttribType);
         fStyle = style;
     }
 
diff --git a/src/gpu/ops/GrTextureOp.cpp b/src/gpu/ops/GrTextureOp.cpp
index 724d26b..7ef7757 100644
--- a/src/gpu/ops/GrTextureOp.cpp
+++ b/src/gpu/ops/GrTextureOp.cpp
@@ -177,8 +177,7 @@
             : fColorSpaceXform(std::move(csxf)) {
         SkASSERT(proxyCnt > 0 && samplerCnt >= proxyCnt);
         this->initClassID<TextureGeometryProcessor>();
-        fPositions =
-                this->addVertexAttrib("position", kVec2f_GrVertexAttribType, kHigh_GrSLPrecision);
+        fPositions = this->addVertexAttrib("position", kFloat2_GrVertexAttribType);
         fSamplers[0].reset(std::move(proxies[0]), filters[0]);
         this->addTextureSampler(&fSamplers[0]);
         for (int i = 1; i < proxyCnt; ++i) {
@@ -199,9 +198,8 @@
             fTextureIdx = this->addVertexAttrib("textureIdx", kInt_GrVertexAttribType);
         }
 
-        fTextureCoords = this->addVertexAttrib("textureCoords", kVec2f_GrVertexAttribType,
-                                               kHigh_GrSLPrecision);
-        fColors = this->addVertexAttrib("color", kVec4ub_GrVertexAttribType);
+        fTextureCoords = this->addVertexAttrib("textureCoords", kFloat2_GrVertexAttribType);
+        fColors = this->addVertexAttrib("color", kUByte4_norm_GrVertexAttribType);
     }
 
     Attribute fPositions;
diff --git a/src/gpu/vk/GrVkPipeline.cpp b/src/gpu/vk/GrVkPipeline.cpp
index 11dd982..ba64532 100644
--- a/src/gpu/vk/GrVkPipeline.cpp
+++ b/src/gpu/vk/GrVkPipeline.cpp
@@ -17,26 +17,30 @@
 static inline VkFormat attrib_type_to_vkformat(GrVertexAttribType type) {
     switch (type) {
         case kFloat_GrVertexAttribType:
+        case kHalf_GrVertexAttribType:
             return VK_FORMAT_R32_SFLOAT;
-        case kVec2f_GrVertexAttribType:
+        case kFloat2_GrVertexAttribType:
+        case kHalf2_GrVertexAttribType:
             return VK_FORMAT_R32G32_SFLOAT;
-        case kVec3f_GrVertexAttribType:
+        case kFloat3_GrVertexAttribType:
+        case kHalf3_GrVertexAttribType:
             return VK_FORMAT_R32G32B32_SFLOAT;
-        case kVec4f_GrVertexAttribType:
+        case kFloat4_GrVertexAttribType:
+        case kHalf4_GrVertexAttribType:
             return VK_FORMAT_R32G32B32A32_SFLOAT;
-        case kVec2i_GrVertexAttribType:
+        case kInt2_GrVertexAttribType:
             return VK_FORMAT_R32G32_SINT;
-        case kVec3i_GrVertexAttribType:
+        case kInt3_GrVertexAttribType:
             return VK_FORMAT_R32G32B32_SINT;
-        case kVec4i_GrVertexAttribType:
+        case kInt4_GrVertexAttribType:
             return VK_FORMAT_R32G32B32A32_SINT;
-        case kUByte_GrVertexAttribType:
+        case kUByte_norm_GrVertexAttribType:
             return VK_FORMAT_R8_UNORM;
-        case kVec4ub_GrVertexAttribType:
+        case kUByte4_norm_GrVertexAttribType:
             return VK_FORMAT_R8G8B8A8_UNORM;
-        case kVec2us_norm_GrVertexAttribType:
+        case kUShort2_norm_GrVertexAttribType:
             return VK_FORMAT_R16G16_UNORM;
-        case kVec2us_uint_GrVertexAttribType:
+        case kUShort2_GrVertexAttribType:
             return VK_FORMAT_R16G16_UINT;
         case kInt_GrVertexAttribType:
             return VK_FORMAT_R32_SINT;
diff --git a/tests/GrMeshTest.cpp b/tests/GrMeshTest.cpp
index 223138b..1ae3926 100644
--- a/tests/GrMeshTest.cpp
+++ b/tests/GrMeshTest.cpp
@@ -285,14 +285,14 @@
         , fVertex(nullptr)
         , fColor(nullptr) {
         if (instanced) {
-            fInstanceLocation = &this->addInstanceAttrib("location", kVec2f_GrVertexAttribType);
+            fInstanceLocation = &this->addInstanceAttrib("location", kHalf2_GrVertexAttribType);
             if (hasVertexBuffer) {
-                fVertex = &this->addVertexAttrib("vertex", kVec2f_GrVertexAttribType);
+                fVertex = &this->addVertexAttrib("vertex", kHalf2_GrVertexAttribType);
             }
-            fColor = &this->addInstanceAttrib("color", kVec4ub_GrVertexAttribType);
+            fColor = &this->addInstanceAttrib("color", kUByte4_norm_GrVertexAttribType);
         } else {
-            fVertex = &this->addVertexAttrib("vertex", kVec2f_GrVertexAttribType);
-            fColor = &this->addVertexAttrib("color", kVec4ub_GrVertexAttribType);
+            fVertex = &this->addVertexAttrib("vertex", kHalf2_GrVertexAttribType);
+            fColor = &this->addVertexAttrib("color", kUByte4_norm_GrVertexAttribType);
         }
         this->initClassID<GrMeshTestProcessor>();
     }
diff --git a/tests/GrPipelineDynamicStateTest.cpp b/tests/GrPipelineDynamicStateTest.cpp
index 475f8f3..4b8621d 100644
--- a/tests/GrPipelineDynamicStateTest.cpp
+++ b/tests/GrPipelineDynamicStateTest.cpp
@@ -59,8 +59,8 @@
 class GrPipelineDynamicStateTestProcessor : public GrGeometryProcessor {
 public:
     GrPipelineDynamicStateTestProcessor()
-        : fVertex(this->addVertexAttrib("vertex", kVec2f_GrVertexAttribType))
-        , fColor(this->addVertexAttrib("color", kVec4ub_GrVertexAttribType)) {
+        : fVertex(this->addVertexAttrib("vertex", kHalf2_GrVertexAttribType))
+        , fColor(this->addVertexAttrib("color", kUByte4_norm_GrVertexAttribType)) {
         this->initClassID<GrPipelineDynamicStateTestProcessor>();
     }
 
diff --git a/tests/PrimitiveProcessorTest.cpp b/tests/PrimitiveProcessorTest.cpp
index 6402020..8898e35 100644
--- a/tests/PrimitiveProcessorTest.cpp
+++ b/tests/PrimitiveProcessorTest.cpp
@@ -60,7 +60,7 @@
                     fAttribNames.push_back().printf("attr%d", i);
                 }
                 for (auto i = 0; i < numAttribs; ++i) {
-                    this->addVertexAttrib(fAttribNames[i].c_str(), kVec2f_GrVertexAttribType);
+                    this->addVertexAttrib(fAttribNames[i].c_str(), kFloat2_GrVertexAttribType);
                 }
             }
             const char* name() const override { return "Dummy GP"; }