Index: src/gpu/GrAARectRenderer.cpp |
diff --git a/src/gpu/GrAARectRenderer.cpp b/src/gpu/GrAARectRenderer.cpp |
index b4790bb99d9d309f640a9ca0ce0dd217afc5cfb9..a7ddfde7ccb7c6867ac45e199ef9a224a164d4d1 100644 |
--- a/src/gpu/GrAARectRenderer.cpp |
+++ b/src/gpu/GrAARectRenderer.cpp |
@@ -276,10 +276,10 @@ enum CoverageAttribType { |
static CoverageAttribType set_rect_attribs(GrDrawState* drawState) { |
if (drawState->canTweakAlphaForCoverage()) { |
- drawState->setVertexAttribs<gAARectAttribs>(2); |
+ drawState->setVertexAttribs<gAARectAttribs>(2, sizeof(SkPoint) + sizeof(SkColor)); |
return kUseColor_CoverageAttribType; |
} else { |
- drawState->setVertexAttribs<gAARectAttribs>(3); |
+ drawState->setVertexAttribs<gAARectAttribs>(3, sizeof(SkPoint) + 2 * sizeof(SkColor)); |
return kUseCoverage_CoverageAttribType; |
} |
} |
@@ -482,10 +482,10 @@ void GrAARectRenderer::geometryFillAARect(GrGpu* gpu, |
} |
intptr_t verts = reinterpret_cast<intptr_t>(geo.vertices()); |
- size_t vsize = drawState->getVertexSize(); |
+ size_t vstride = drawState->getVertexStride(); |
SkPoint* fan0Pos = reinterpret_cast<SkPoint*>(verts); |
- SkPoint* fan1Pos = reinterpret_cast<SkPoint*>(verts + 4 * vsize); |
+ SkPoint* fan1Pos = reinterpret_cast<SkPoint*>(verts + 4 * vstride); |
SkScalar inset = SkMinScalar(devRect.width(), SK_Scalar1); |
inset = SK_ScalarHalf * SkMinScalar(inset, devRect.height()); |
@@ -499,8 +499,8 @@ void GrAARectRenderer::geometryFillAARect(GrGpu* gpu, |
combinedMatrix.mapRect(&devRect, rect); |
#endif |
- set_inset_fan(fan0Pos, vsize, devRect, -SK_ScalarHalf, -SK_ScalarHalf); |
- set_inset_fan(fan1Pos, vsize, devRect, inset, inset); |
+ set_inset_fan(fan0Pos, vstride, devRect, -SK_ScalarHalf, -SK_ScalarHalf); |
+ set_inset_fan(fan1Pos, vstride, devRect, inset, inset); |
} else { |
// compute transformed (1, 0) and (0, 1) vectors |
SkVector vec[2] = { |
@@ -515,38 +515,38 @@ void GrAARectRenderer::geometryFillAARect(GrGpu* gpu, |
// create the rotated rect |
fan0Pos->setRectFan(rect.fLeft, rect.fTop, |
- rect.fRight, rect.fBottom, vsize); |
- combinedMatrix.mapPointsWithStride(fan0Pos, vsize, 4); |
+ rect.fRight, rect.fBottom, vstride); |
+ combinedMatrix.mapPointsWithStride(fan0Pos, vstride, 4); |
// Now create the inset points and then outset the original |
// rotated points |
// TL |
- *((SkPoint*)((intptr_t)fan1Pos + 0 * vsize)) = |
- *((SkPoint*)((intptr_t)fan0Pos + 0 * vsize)) + vec[0] + vec[1]; |
- *((SkPoint*)((intptr_t)fan0Pos + 0 * vsize)) -= vec[0] + vec[1]; |
+ *((SkPoint*)((intptr_t)fan1Pos + 0 * vstride)) = |
+ *((SkPoint*)((intptr_t)fan0Pos + 0 * vstride)) + vec[0] + vec[1]; |
+ *((SkPoint*)((intptr_t)fan0Pos + 0 * vstride)) -= vec[0] + vec[1]; |
// BL |
- *((SkPoint*)((intptr_t)fan1Pos + 1 * vsize)) = |
- *((SkPoint*)((intptr_t)fan0Pos + 1 * vsize)) + vec[0] - vec[1]; |
- *((SkPoint*)((intptr_t)fan0Pos + 1 * vsize)) -= vec[0] - vec[1]; |
+ *((SkPoint*)((intptr_t)fan1Pos + 1 * vstride)) = |
+ *((SkPoint*)((intptr_t)fan0Pos + 1 * vstride)) + vec[0] - vec[1]; |
+ *((SkPoint*)((intptr_t)fan0Pos + 1 * vstride)) -= vec[0] - vec[1]; |
// BR |
- *((SkPoint*)((intptr_t)fan1Pos + 2 * vsize)) = |
- *((SkPoint*)((intptr_t)fan0Pos + 2 * vsize)) - vec[0] - vec[1]; |
- *((SkPoint*)((intptr_t)fan0Pos + 2 * vsize)) += vec[0] + vec[1]; |
+ *((SkPoint*)((intptr_t)fan1Pos + 2 * vstride)) = |
+ *((SkPoint*)((intptr_t)fan0Pos + 2 * vstride)) - vec[0] - vec[1]; |
+ *((SkPoint*)((intptr_t)fan0Pos + 2 * vstride)) += vec[0] + vec[1]; |
// TR |
- *((SkPoint*)((intptr_t)fan1Pos + 3 * vsize)) = |
- *((SkPoint*)((intptr_t)fan0Pos + 3 * vsize)) - vec[0] + vec[1]; |
- *((SkPoint*)((intptr_t)fan0Pos + 3 * vsize)) += vec[0] - vec[1]; |
+ *((SkPoint*)((intptr_t)fan1Pos + 3 * vstride)) = |
+ *((SkPoint*)((intptr_t)fan0Pos + 3 * vstride)) - vec[0] + vec[1]; |
+ *((SkPoint*)((intptr_t)fan0Pos + 3 * vstride)) += vec[0] - vec[1]; |
} |
// Make verts point to vertex color and then set all the color and coverage vertex attrs values. |
verts += sizeof(SkPoint); |
for (int i = 0; i < 4; ++i) { |
if (kUseCoverage_CoverageAttribType == covAttribType) { |
- *reinterpret_cast<GrColor*>(verts + i * vsize) = color; |
- *reinterpret_cast<GrColor*>(verts + i * vsize + sizeof(GrColor)) = 0; |
+ *reinterpret_cast<GrColor*>(verts + i * vstride) = color; |
+ *reinterpret_cast<GrColor*>(verts + i * vstride + sizeof(GrColor)) = 0; |
} else { |
- *reinterpret_cast<GrColor*>(verts + i * vsize) = 0; |
+ *reinterpret_cast<GrColor*>(verts + i * vstride) = 0; |
} |
} |
@@ -564,13 +564,13 @@ void GrAARectRenderer::geometryFillAARect(GrGpu* gpu, |
} else { |
innerCoverage = (0xff == scale) ? color : SkAlphaMulQ(color, scale); |
} |
- verts += 4 * vsize; |
+ verts += 4 * vstride; |
for (int i = 0; i < 4; ++i) { |
if (kUseCoverage_CoverageAttribType == covAttribType) { |
- *reinterpret_cast<GrColor*>(verts + i * vsize) = color; |
- *reinterpret_cast<GrColor*>(verts + i * vsize + sizeof(GrColor)) = innerCoverage; |
+ *reinterpret_cast<GrColor*>(verts + i * vstride) = color; |
+ *reinterpret_cast<GrColor*>(verts + i * vstride + sizeof(GrColor)) = innerCoverage; |
} else { |
- *reinterpret_cast<GrColor*>(verts + i * vsize) = innerCoverage; |
+ *reinterpret_cast<GrColor*>(verts + i * vstride) = innerCoverage; |
} |
} |
@@ -634,8 +634,8 @@ void GrAARectRenderer::shaderFillAARect(GrGpu* gpu, |
SkScalar newWidth = SkScalarHalf(rect.width() * vec[0].length()) + SK_ScalarHalf; |
SkScalar newHeight = SkScalarHalf(rect.height() * vec[1].length()) + SK_ScalarHalf; |
- drawState->setVertexAttribs<gAARectVertexAttribs>(SK_ARRAY_COUNT(gAARectVertexAttribs)); |
- SkASSERT(sizeof(RectVertex) == drawState->getVertexSize()); |
+ drawState->setVertexAttribs<gAARectVertexAttribs>(SK_ARRAY_COUNT(gAARectVertexAttribs), |
+ sizeof(RectVertex)); |
GrDrawTarget::AutoReleaseGeometry geo(target, 4, 0); |
if (!geo.succeeded()) { |
@@ -684,8 +684,8 @@ void GrAARectRenderer::shaderFillAlignedAARect(GrGpu* gpu, |
GrDrawState* drawState = target->drawState(); |
SkASSERT(combinedMatrix.rectStaysRect()); |
- drawState->setVertexAttribs<gAAAARectVertexAttribs>(SK_ARRAY_COUNT(gAAAARectVertexAttribs)); |
- SkASSERT(sizeof(AARectVertex) == drawState->getVertexSize()); |
+ drawState->setVertexAttribs<gAAAARectVertexAttribs>(SK_ARRAY_COUNT(gAAAARectVertexAttribs), |
+ sizeof(AARectVertex)); |
GrDrawTarget::AutoReleaseGeometry geo(target, 4, 0); |
if (!geo.succeeded()) { |
@@ -834,15 +834,15 @@ void GrAARectRenderer::geometryStrokeAARect(GrGpu* gpu, |
} |
intptr_t verts = reinterpret_cast<intptr_t>(geo.vertices()); |
- size_t vsize = drawState->getVertexSize(); |
+ size_t vstride = drawState->getVertexStride(); |
// We create vertices for four nested rectangles. There are two ramps from 0 to full |
// coverage, one on the exterior of the stroke and the other on the interior. |
// The following pointers refer to the four rects, from outermost to innermost. |
SkPoint* fan0Pos = reinterpret_cast<SkPoint*>(verts); |
- SkPoint* fan1Pos = reinterpret_cast<SkPoint*>(verts + outerVertexNum * vsize); |
- SkPoint* fan2Pos = reinterpret_cast<SkPoint*>(verts + 2 * outerVertexNum * vsize); |
- SkPoint* fan3Pos = reinterpret_cast<SkPoint*>(verts + (2 * outerVertexNum + innerVertexNum) * vsize); |
+ SkPoint* fan1Pos = reinterpret_cast<SkPoint*>(verts + outerVertexNum * vstride); |
+ SkPoint* fan2Pos = reinterpret_cast<SkPoint*>(verts + 2 * outerVertexNum * vstride); |
+ SkPoint* fan3Pos = reinterpret_cast<SkPoint*>(verts + (2 * outerVertexNum + innerVertexNum) * vstride); |
#ifndef SK_IGNORE_THIN_STROKED_RECT_FIX |
// TODO: this only really works if the X & Y margins are the same all around |
@@ -862,25 +862,25 @@ void GrAARectRenderer::geometryStrokeAARect(GrGpu* gpu, |
if (miterStroke) { |
// outermost |
- set_inset_fan(fan0Pos, vsize, devOutside, -SK_ScalarHalf, -SK_ScalarHalf); |
+ set_inset_fan(fan0Pos, vstride, devOutside, -SK_ScalarHalf, -SK_ScalarHalf); |
// inner two |
- set_inset_fan(fan1Pos, vsize, devOutside, inset, inset); |
- set_inset_fan(fan2Pos, vsize, devInside, -inset, -inset); |
+ set_inset_fan(fan1Pos, vstride, devOutside, inset, inset); |
+ set_inset_fan(fan2Pos, vstride, devInside, -inset, -inset); |
// innermost |
- set_inset_fan(fan3Pos, vsize, devInside, SK_ScalarHalf, SK_ScalarHalf); |
+ set_inset_fan(fan3Pos, vstride, devInside, SK_ScalarHalf, SK_ScalarHalf); |
} else { |
- SkPoint* fan0AssistPos = reinterpret_cast<SkPoint*>(verts + 4 * vsize); |
- SkPoint* fan1AssistPos = reinterpret_cast<SkPoint*>(verts + (outerVertexNum + 4) * vsize); |
+ SkPoint* fan0AssistPos = reinterpret_cast<SkPoint*>(verts + 4 * vstride); |
+ SkPoint* fan1AssistPos = reinterpret_cast<SkPoint*>(verts + (outerVertexNum + 4) * vstride); |
// outermost |
- set_inset_fan(fan0Pos, vsize, devOutside, -SK_ScalarHalf, -SK_ScalarHalf); |
- set_inset_fan(fan0AssistPos, vsize, devOutsideAssist, -SK_ScalarHalf, -SK_ScalarHalf); |
+ set_inset_fan(fan0Pos, vstride, devOutside, -SK_ScalarHalf, -SK_ScalarHalf); |
+ set_inset_fan(fan0AssistPos, vstride, devOutsideAssist, -SK_ScalarHalf, -SK_ScalarHalf); |
// outer one of the inner two |
- set_inset_fan(fan1Pos, vsize, devOutside, inset, inset); |
- set_inset_fan(fan1AssistPos, vsize, devOutsideAssist, inset, inset); |
+ set_inset_fan(fan1Pos, vstride, devOutside, inset, inset); |
+ set_inset_fan(fan1AssistPos, vstride, devOutsideAssist, inset, inset); |
// inner one of the inner two |
- set_inset_fan(fan2Pos, vsize, devInside, -inset, -inset); |
+ set_inset_fan(fan2Pos, vstride, devInside, -inset, -inset); |
// innermost |
- set_inset_fan(fan3Pos, vsize, devInside, SK_ScalarHalf, SK_ScalarHalf); |
+ set_inset_fan(fan3Pos, vstride, devInside, SK_ScalarHalf, SK_ScalarHalf); |
} |
// Make verts point to vertex color and then set all the color and coverage vertex attrs values. |
@@ -888,10 +888,10 @@ void GrAARectRenderer::geometryStrokeAARect(GrGpu* gpu, |
verts += sizeof(SkPoint); |
for (int i = 0; i < outerVertexNum; ++i) { |
if (kUseCoverage_CoverageAttribType == covAttribType) { |
- *reinterpret_cast<GrColor*>(verts + i * vsize) = color; |
- *reinterpret_cast<GrColor*>(verts + i * vsize + sizeof(GrColor)) = 0; |
+ *reinterpret_cast<GrColor*>(verts + i * vstride) = color; |
+ *reinterpret_cast<GrColor*>(verts + i * vstride + sizeof(GrColor)) = 0; |
} else { |
- *reinterpret_cast<GrColor*>(verts + i * vsize) = 0; |
+ *reinterpret_cast<GrColor*>(verts + i * vstride) = 0; |
} |
} |
@@ -904,7 +904,7 @@ void GrAARectRenderer::geometryStrokeAARect(GrGpu* gpu, |
scale = 0xff; |
} |
- verts += outerVertexNum * vsize; |
+ verts += outerVertexNum * vstride; |
GrColor innerCoverage; |
if (kUseCoverage_CoverageAttribType == covAttribType) { |
innerCoverage = GrColorPackRGBA(scale, scale, scale, scale); |
@@ -914,21 +914,21 @@ void GrAARectRenderer::geometryStrokeAARect(GrGpu* gpu, |
for (int i = 0; i < outerVertexNum + innerVertexNum; ++i) { |
if (kUseCoverage_CoverageAttribType == covAttribType) { |
- *reinterpret_cast<GrColor*>(verts + i * vsize) = color; |
- *reinterpret_cast<GrColor*>(verts + i * vsize + sizeof(GrColor)) = innerCoverage; |
+ *reinterpret_cast<GrColor*>(verts + i * vstride) = color; |
+ *reinterpret_cast<GrColor*>(verts + i * vstride + sizeof(GrColor)) = innerCoverage; |
} else { |
- *reinterpret_cast<GrColor*>(verts + i * vsize) = innerCoverage; |
+ *reinterpret_cast<GrColor*>(verts + i * vstride) = innerCoverage; |
} |
} |
// The innermost rect has 0 coverage |
- verts += (outerVertexNum + innerVertexNum) * vsize; |
+ verts += (outerVertexNum + innerVertexNum) * vstride; |
for (int i = 0; i < innerVertexNum; ++i) { |
if (kUseCoverage_CoverageAttribType == covAttribType) { |
- *reinterpret_cast<GrColor*>(verts + i * vsize) = color; |
- *reinterpret_cast<GrColor*>(verts + i * vsize + sizeof(GrColor)) = 0; |
+ *reinterpret_cast<GrColor*>(verts + i * vstride) = color; |
+ *reinterpret_cast<GrColor*>(verts + i * vstride + sizeof(GrColor)) = 0; |
} else { |
- *reinterpret_cast<GrColor*>(verts + i * vsize) = 0; |
+ *reinterpret_cast<GrColor*>(verts + i * vstride) = 0; |
} |
} |