Index: src/gpu/effects/GrDashingEffect.cpp |
diff --git a/src/gpu/effects/GrDashingEffect.cpp b/src/gpu/effects/GrDashingEffect.cpp |
index af96ef63185acb9ee23426458f3bc8ee6f13abfb..71d92cbb843e22455ad9ba41806c49cfba56e211 100644 |
--- a/src/gpu/effects/GrDashingEffect.cpp |
+++ b/src/gpu/effects/GrDashingEffect.cpp |
@@ -29,8 +29,9 @@ |
// Returns whether or not the gpu can fast path the dash line effect. |
static bool can_fast_path_dash(const SkPoint pts[2], const GrStrokeInfo& strokeInfo, |
- const GrDrawTarget& target, const SkMatrix& viewMatrix) { |
- if (target.getDrawState().getRenderTarget()->isMultisampled()) { |
+ const GrDrawTarget& target, const GrDrawState& ds, |
+ const SkMatrix& viewMatrix) { |
+ if (ds.getRenderTarget()->isMultisampled()) { |
return false; |
} |
@@ -170,11 +171,11 @@ static void setup_dashed_rect_pos(const SkRect& rect, int idx, const SkMatrix& m |
matrix.mapPoints(&verts[idx], 4); |
} |
-bool GrDashingEffect::DrawDashLine(const SkPoint pts[2], const GrPaint& paint, |
- const GrStrokeInfo& strokeInfo, GrGpu* gpu, |
- GrDrawTarget* target, const SkMatrix& vm) { |
+bool GrDashingEffect::DrawDashLine(GrGpu* gpu, GrDrawTarget* target, GrDrawState* drawState, |
+ const SkPoint pts[2], const GrPaint& paint, |
+ const GrStrokeInfo& strokeInfo, const SkMatrix& vm) { |
- if (!can_fast_path_dash(pts, strokeInfo, *target, vm)) { |
+ if (!can_fast_path_dash(pts, strokeInfo, *target, *drawState, vm)) { |
return false; |
} |
@@ -319,7 +320,6 @@ bool GrDashingEffect::DrawDashLine(const SkPoint pts[2], const GrPaint& paint, |
SkScalar devBloat = useAA ? 0.5f : 0.f; |
- GrDrawState* drawState = target->drawState(); |
if (devIntervals[1] <= 0.f && useAA) { |
// Case when we end up drawing a solid AA rect |
// Reset the start rect to draw this single solid rect |
@@ -372,7 +372,9 @@ bool GrDashingEffect::DrawDashLine(const SkPoint pts[2], const GrPaint& paint, |
totalRectCnt += hasStartRect ? 1 : 0; |
totalRectCnt += hasEndRect ? 1 : 0; |
- GrDrawTarget::AutoReleaseGeometry geo(target, totalRectCnt * 4, 0); |
+ GrDrawTarget::AutoReleaseGeometry geo(target, |
+ totalRectCnt * 4, |
+ drawState->getVertexStride(), 0); |
if (!geo.succeeded()) { |
SkDebugf("Failed to get space for vertices!\n"); |
return false; |
@@ -438,7 +440,7 @@ bool GrDashingEffect::DrawDashLine(const SkPoint pts[2], const GrPaint& paint, |
} |
target->setIndexSourceToBuffer(gpu->getContext()->getQuadIndexBuffer()); |
- target->drawIndexedInstances(kTriangles_GrPrimitiveType, totalRectCnt, 4, 6); |
+ target->drawIndexedInstances(drawState, kTriangles_GrPrimitiveType, totalRectCnt, 4, 6); |
target->resetIndexSource(); |
return true; |
} |