Test factory uses the inorder draw buffer

BUG=skia:

Review URL: https://codereview.chromium.org/696353002
This commit is contained in:
joshualitt 2014-11-03 12:31:14 -08:00 committed by Commit bot
parent 9e233b2082
commit 50408adfd2
4 changed files with 47 additions and 30 deletions

View File

@ -63,3 +63,6 @@ multipicturedraw_rrectclip_simple
multipicturedraw_rrectclip_tiled
multipicturedraw_sierpinski_simple
multipicturedraw_sierpinski_tiled
#joshualitt
texture_domain_effect

View File

@ -154,7 +154,16 @@ protected:
boundsPaint.setStyle(SkPaint::kStroke_Style);
canvas->drawRect(bounds, boundsPaint);
Vertex verts[4];
GrTestTarget tt;
context->getTestTarget(&tt);
SkASSERT(tt.target());
GrDrawState* drawState = tt.target()->drawState();
drawState->setVertexAttribs<kAttribs>(2, sizeof(Vertex));
GrDrawTarget::AutoReleaseGeometry geo(tt.target(), 4, 0);
Vertex* verts = reinterpret_cast<Vertex*>(geo.vertices());
verts[0].fPosition.setRectFan(bounds.fLeft, bounds.fTop,
bounds.fRight, bounds.fBottom,
sizeof(Vertex));
@ -164,17 +173,10 @@ protected:
verts[v].fKLM[2] = eval_line(verts[v].fPosition, klmEqs + 6, 1.f);
}
GrTestTarget tt;
context->getTestTarget(&tt);
SkASSERT(tt.target());
GrDrawState* drawState = tt.target()->drawState();
drawState->setVertexAttribs<kAttribs>(2, sizeof(Vertex));
drawState->setGeometryProcessor(gp);
drawState->setRenderTarget(rt);
drawState->setColor(0xff000000);
tt.target()->setVertexSourceToArray(verts, 4);
tt.target()->setIndexSourceToBuffer(context->getQuadIndexBuffer());
tt.target()->drawIndexed(kTriangleFan_GrPrimitiveType, 0, 0, 4, 6);
}
@ -309,7 +311,16 @@ protected:
boundsPaint.setStyle(SkPaint::kStroke_Style);
canvas->drawRect(bounds, boundsPaint);
Vertex verts[4];
GrTestTarget tt;
context->getTestTarget(&tt);
SkASSERT(tt.target());
GrDrawState* drawState = tt.target()->drawState();
drawState->setVertexAttribs<kAttribs>(2, sizeof(Vertex));
GrDrawTarget::AutoReleaseGeometry geo(tt.target(), 4, 0);
Vertex* verts = reinterpret_cast<Vertex*>(geo.vertices());
verts[0].fPosition.setRectFan(bounds.fLeft, bounds.fTop,
bounds.fRight, bounds.fBottom,
sizeof(Vertex));
@ -319,17 +330,10 @@ protected:
verts[v].fKLM[2] = eval_line(verts[v].fPosition, klmEqs + 6, 1.f);
}
GrTestTarget tt;
context->getTestTarget(&tt);
SkASSERT(tt.target());
GrDrawState* drawState = tt.target()->drawState();
drawState->setVertexAttribs<kAttribs>(2, sizeof(Vertex));
drawState->setGeometryProcessor(gp);
drawState->setRenderTarget(rt);
drawState->setColor(0xff000000);
tt.target()->setVertexSourceToArray(verts, 4);
tt.target()->setIndexSourceToBuffer(context->getQuadIndexBuffer());
tt.target()->drawIndexed(kTriangleFan_GrPrimitiveType, 0, 0, 4, 6);
}
@ -495,7 +499,16 @@ protected:
boundsPaint.setStyle(SkPaint::kStroke_Style);
canvas->drawRect(bounds, boundsPaint);
Vertex verts[4];
GrTestTarget tt;
context->getTestTarget(&tt);
SkASSERT(tt.target());
GrDrawState* drawState = tt.target()->drawState();
drawState->setVertexAttribs<kAttribs>(2, sizeof(Vertex));
GrDrawTarget::AutoReleaseGeometry geo(tt.target(), 4, 0);
Vertex* verts = reinterpret_cast<Vertex*>(geo.vertices());
verts[0].fPosition.setRectFan(bounds.fLeft, bounds.fTop,
bounds.fRight, bounds.fBottom,
sizeof(Vertex));
@ -503,17 +516,10 @@ protected:
GrPathUtils::QuadUVMatrix DevToUV(pts);
DevToUV.apply<4, sizeof(Vertex), sizeof(SkPoint)>(verts);
GrTestTarget tt;
context->getTestTarget(&tt);
SkASSERT(tt.target());
GrDrawState* drawState = tt.target()->drawState();
drawState->setVertexAttribs<kAttribs>(2, sizeof(Vertex));
drawState->setGeometryProcessor(gp);
drawState->setRenderTarget(rt);
drawState->setColor(0xff000000);
tt.target()->setVertexSourceToArray(verts, 4);
tt.target()->setIndexSourceToBuffer(context->getQuadIndexBuffer());
tt.target()->drawIndexed(kTriangles_GrPrimitiveType, 0, 0, 4, 6);
}

View File

@ -137,14 +137,18 @@ protected:
drawState->setRenderTarget(rt);
drawState->setColor(0xff000000);
SkPoint verts[4];
// TODO hack
GrDrawTarget::AutoReleaseGeometry geo(tt.target(), 4, 0);
SkPoint* verts = reinterpret_cast<SkPoint*>(geo.vertices());
//SkPoint verts[4];
SkRect bounds = p.getBounds();
// Make sure any artifacts around the exterior of path are visible by using overly
// conservative bounding geometry.
bounds.outset(5.f, 5.f);
bounds.toQuad(verts);
tt.target()->setVertexSourceToArray(verts, 4);
//tt.target()->setVertexSourceToArray(verts, 4);
tt.target()->setIndexSourceToBuffer(context->getQuadIndexBuffer());
tt.target()->drawIndexed(kTriangleFan_GrPrimitiveType, 0, 0, 4, 6);
@ -191,12 +195,16 @@ protected:
drawState->setRenderTarget(rt);
drawState->setColor(0xff000000);
SkPoint verts[4];
// TODO hack
GrDrawTarget::AutoReleaseGeometry geo(tt.target(), 4, 0);
SkPoint* verts = reinterpret_cast<SkPoint*>(geo.vertices());
//SkPoint verts[4];
SkRect bounds = rect;
bounds.outset(5.f, 5.f);
bounds.toQuad(verts);
tt.target()->setVertexSourceToArray(verts, 4);
//tt.target()->setVertexSourceToArray(verts, 4);
tt.target()->setIndexSourceToBuffer(context->getQuadIndexBuffer());
tt.target()->drawIndexed(kTriangleFan_GrPrimitiveType, 0, 0, 4, 6);

View File

@ -8,7 +8,7 @@
#include "GrTest.h"
#include "GrGpu.h"
#include "GrInOrderDrawBuffer.h"
#include "GrResourceCache.h"
void GrTestTarget::init(GrContext* ctx, GrDrawTarget* target) {
@ -28,7 +28,7 @@ void GrContext::getTestTarget(GrTestTarget* tar) {
// then disconnects. This would help prevent test writers from mixing using the returned
// GrDrawTarget and regular drawing. We could also assert or fail in GrContext drawing methods
// until ~GrTestTarget().
tar->init(this, fGpu);
tar->init(this, fDrawBuffer);
}
///////////////////////////////////////////////////////////////////////////////