aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental
diff options
context:
space:
mode:
Diffstat (limited to 'experimental')
-rw-r--r--experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp22
-rw-r--r--experimental/StrokePathRenderer/GrStrokePathRenderer.cpp6
2 files changed, 21 insertions, 7 deletions
diff --git a/experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp b/experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp
index 2050f091a6..66cb93a870 100644
--- a/experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp
+++ b/experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp
@@ -36,12 +36,25 @@ bool GrAndroidPathRenderer::onDrawPath(const SkPath& origPath,
android::uirenderer::PathRenderer::ConvexPathVertices(origPath, stroke, antiAlias, NULL,
&vertices);
- // set vertex layout depending on anti-alias
- GrVertexLayout layout = antiAlias ? GrDrawState::kCoverage_VertexLayoutBit : 0;
+ // set vertex attributes depending on anti-alias
+ GrDrawState* drawState = target->drawState();
+ if (antiAlias) {
+ // position + coverage
+ GrVertexAttrib attribs[] = {
+ GrVertexAttrib(kVec2f_GrVertexAttribType, 0),
+ GrVertexAttrib(kVec4ub_GrVertexAttribType, sizeof(GrPoint))
+ };
+ drawState->setVertexAttribs(attribs, SK_ARRAY_COUNT(attribs));
+ drawState->setAttribIndex(GrDrawState::kPosition_AttribIndex, 0);
+ drawState->setAttribIndex(GrDrawState::kCoverage_AttribIndex, 1);
+ drawState->setAttribBindings(GrDrawState::kCoverage_AttribBindingsBit);
+ } else {
+ drawState->setDefaultVertexAttribs();
+ }
// allocate our vert buffer
int vertCount = vertices.getSize();
- GrDrawTarget::AutoReleaseGeometry geo(target, layout, vertCount, 0);
+ GrDrawTarget::AutoReleaseGeometry geo(target, vertCount, 0);
if (!geo.succeeded()) {
GrPrintf("Failed to get space for vertices!\n");
return false;
@@ -49,6 +62,7 @@ bool GrAndroidPathRenderer::onDrawPath(const SkPath& origPath,
// copy android verts to our vertex buffer
if (antiAlias) {
+ GrAssert(sizeof(ColorVertex) == drawState->getVertexSize());
ColorVertex* outVert = reinterpret_cast<ColorVertex*>(geo.vertices());
android::uirenderer::AlphaVertex* inVert =
reinterpret_cast<android::uirenderer::AlphaVertex*>(vertices.getBuffer());
@@ -63,7 +77,7 @@ bool GrAndroidPathRenderer::onDrawPath(const SkPath& origPath,
++inVert;
}
} else {
- size_t vsize = GrDrawState::VertexSize(layout);
+ size_t vsize = drawState->getVertexSize();
size_t copySize = vsize*vertCount;
memcpy(geo.vertices(), vertices.getBuffer(), copySize);
}
diff --git a/experimental/StrokePathRenderer/GrStrokePathRenderer.cpp b/experimental/StrokePathRenderer/GrStrokePathRenderer.cpp
index 03c135df60..a8ae91727a 100644
--- a/experimental/StrokePathRenderer/GrStrokePathRenderer.cpp
+++ b/experimental/StrokePathRenderer/GrStrokePathRenderer.cpp
@@ -111,11 +111,11 @@ bool GrStrokePathRenderer::onDrawPath(const SkPath& origPath,
// Allocate vertices
const int nbQuads = origPath.countPoints() + 1; // Could be "-1" if path is not closed
- GrVertexLayout layout = 0; // Just 3D points
const int extraVerts = isMiter || isBevel ? 1 : 0;
const int maxVertexCount = nbQuads * (4 + extraVerts);
const int maxIndexCount = nbQuads * (6 + extraVerts * 3); // Each extra vert adds a triangle
- GrDrawTarget::AutoReleaseGeometry arg(target, layout, maxVertexCount, maxIndexCount);
+ target->drawState()->setDefaultVertexAttribs();
+ GrDrawTarget::AutoReleaseGeometry arg(target, maxVertexCount, maxIndexCount);
if (!arg.succeeded()) {
return false;
}
@@ -126,7 +126,7 @@ bool GrStrokePathRenderer::onDrawPath(const SkPath& origPath,
// Transform the path into a list of triangles
SkPath::Iter iter(origPath, false);
SkPoint pts[4];
- const SkScalar radius = SkScalarMul(width, 0.5);
+ const SkScalar radius = SkScalarMul(width, 0.5f);
SkPoint *firstPt = verts, *lastPt = NULL;
SkVector firstDir, dir;
firstDir.set(0, 0);