aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/ops/GrAAFillRectOp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/ops/GrAAFillRectOp.cpp')
-rw-r--r--src/gpu/ops/GrAAFillRectOp.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/gpu/ops/GrAAFillRectOp.cpp b/src/gpu/ops/GrAAFillRectOp.cpp
index 5472f11f71..76bc8128cf 100644
--- a/src/gpu/ops/GrAAFillRectOp.cpp
+++ b/src/gpu/ops/GrAAFillRectOp.cpp
@@ -242,12 +242,19 @@ private:
void onPrepareDraws(Target* target) override {
using namespace GrDefaultGeoProcFactory;
+ size_t vertexStride = sizeof(SkPoint) + sizeof(GrColor);
Color color(Color::kPremulGrColorAttribute_Type);
- Coverage::Type coverageType = fHelper.compatibleWithAlphaAsCoverage()
- ? Coverage::kSolid_Type
- : Coverage::kAttribute_Type;
- LocalCoords lc = fHelper.usesLocalCoords() ? LocalCoords::kHasExplicit_Type
- : LocalCoords::kUnused_Type;
+ Coverage::Type coverageType = Coverage::kSolid_Type;
+ if (!fHelper.compatibleWithAlphaAsCoverage()) {
+ coverageType = Coverage::kAttribute_Type;
+ vertexStride += sizeof(float);
+ }
+ LocalCoords lc = LocalCoords::kUnused_Type;
+ if (fHelper.usesLocalCoords()) {
+ lc = LocalCoords::kHasExplicit_Type;
+ vertexStride += sizeof(SkPoint);
+ }
+
sk_sp<GrGeometryProcessor> gp =
GrDefaultGeoProcFactory::Make(color, coverageType, lc, SkMatrix::I());
if (!gp) {
@@ -255,7 +262,7 @@ private:
return;
}
- size_t vertexStride = gp->getVertexStride();
+ SkASSERT(vertexStride == gp->debugOnly_vertexStride());
sk_sp<const GrBuffer> indexBuffer = get_index_buffer(target->resourceProvider());
PatternHelper helper(GrPrimitiveType::kTriangles);