Move vertex layout from GeometrySrcState to GrDrawState.
Also adds AutoStateRestore member to AutoGeometryPush to push DrawState as well
as GeometrySrcState. And removed vertex layout as an argument to a number of
functions -- they will get vertex layout info from the current DrawState.
Review URL: https://codereview.appspot.com/7286047
git-svn-id: http://skia.googlecode.com/svn/trunk@7600 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index 52e2003..fdea1a8 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -310,7 +310,8 @@
drawState->createTextureEffect(0, clampedTexture, SkMatrix::I(), params);
static const GrVertexLayout layout = GrDrawState::StageTexCoordVertexLayoutBit(0,0);
- GrDrawTarget::AutoReleaseGeometry arg(fGpu, layout, 4, 0);
+ drawState->setVertexLayout(layout);
+ GrDrawTarget::AutoReleaseGeometry arg(fGpu, 4, 0);
if (arg.succeeded()) {
GrPoint* verts = (GrPoint*) arg.vertices();
@@ -738,7 +739,8 @@
// unitSquareVertexBuffer()
static const int worstCaseVertCount = 10;
- GrDrawTarget::AutoReleaseGeometry geo(target, 0, worstCaseVertCount, 0);
+ target->drawState()->setVertexLayout(GrDrawState::kDefault_VertexLayout);
+ GrDrawTarget::AutoReleaseGeometry geo(target, worstCaseVertCount, 0);
if (!geo.succeeded()) {
GrPrintf("Failed to get space for vertices!\n");
@@ -880,10 +882,11 @@
if (NULL != colors) {
layout |= GrDrawState::kColor_VertexLayoutBit;
}
- int vertexSize = GrDrawState::VertexSize(layout);
+ target->drawState()->setVertexLayout(layout);
+ int vertexSize = target->getDrawState().getVertexSize();
if (sizeof(GrPoint) != vertexSize) {
- if (!geo.set(target, layout, vertexCount, 0)) {
+ if (!geo.set(target, vertexCount, 0)) {
GrPrintf("Failed to get space for vertices!\n");
return;
}
@@ -908,7 +911,7 @@
curVertex = (void*)((intptr_t)curVertex + vertexSize);
}
} else {
- target->setVertexSourceToArray(layout, positions, vertexCount);
+ target->setVertexSourceToArray(positions, vertexCount);
}
// we don't currently apply offscreen AA to this path. Need improved
@@ -1006,9 +1009,10 @@
}
GrVertexLayout layout = GrDrawState::kEdge_VertexLayoutBit;
- GrAssert(sizeof(CircleVertex) == GrDrawState::VertexSize(layout));
+ drawState->setVertexLayout(layout);
+ GrAssert(sizeof(CircleVertex) == drawState->getVertexSize());
- GrDrawTarget::AutoReleaseGeometry geo(target, layout, 4, 0);
+ GrDrawTarget::AutoReleaseGeometry geo(target, 4, 0);
if (!geo.succeeded()) {
GrPrintf("Failed to get space for vertices!\n");
return;