diff options
author | 2015-05-05 07:49:49 -0700 | |
---|---|---|
committer | 2015-05-05 07:49:49 -0700 | |
commit | b5238a7571c243ba4a154a62575570c3078b3741 (patch) | |
tree | d9c8ca8982b2b17c4e5d0ed5025f5efb81e7c2c5 /gm | |
parent | 119468b71f8f4f45657ab30ead331be665de5a57 (diff) |
Start on simplifying generateGeometry() overrides
Committed: https://skia.googlesource.com/skia/+/f28381c6866cad92af8ebe5b9d2db074613b1963
Review URL: https://codereview.chromium.org/1122673002
Diffstat (limited to 'gm')
-rw-r--r-- | gm/beziereffects.cpp | 66 | ||||
-rw-r--r-- | gm/convexpolyeffect.cpp | 34 |
2 files changed, 16 insertions, 84 deletions
diff --git a/gm/beziereffects.cpp b/gm/beziereffects.cpp index 6568422898..d543c149c7 100644 --- a/gm/beziereffects.cpp +++ b/gm/beziereffects.cpp @@ -16,7 +16,6 @@ #include "GrBufferAllocPool.h" #include "GrContext.h" #include "GrPathUtils.h" -#include "GrResourceProvider.h" #include "GrTest.h" #include "GrTestBatch.h" #include "SkColorPriv.h" @@ -67,25 +66,14 @@ private: } void onGenerateGeometry(GrBatchTarget* batchTarget, const GrPipeline* pipeline) override { - SkAutoTUnref<const GrIndexBuffer> indexBuffer( - batchTarget->resourceProvider()->refQuadIndexBuffer()); - + QuadHelper helper; size_t vertexStride = this->geometryProcessor()->getVertexStride(); - const GrVertexBuffer* vertexBuffer; - int firstVertex; - void* vertices = batchTarget->vertexPool()->makeSpace(vertexStride, - kVertsPerCubic, - &vertexBuffer, - &firstVertex); - - if (!vertices || !indexBuffer) { - SkDebugf("Could not allocate buffers\n"); + SkASSERT(vertexStride == sizeof(Vertex)); + Vertex* verts = reinterpret_cast<Vertex*>(helper.init(batchTarget, vertexStride, 1)); + if (!verts) { return; } - SkASSERT(vertexStride == sizeof(Vertex)); - Vertex* verts = reinterpret_cast<Vertex*>(vertices); - verts[0].fPosition.setRectFan(fGeometry.fBounds.fLeft, fGeometry.fBounds.fTop, fGeometry.fBounds.fRight, fGeometry.fBounds.fBottom, sizeof(Vertex)); @@ -94,16 +82,7 @@ private: verts[v].fKLM[1] = eval_line(verts[v].fPosition, fKlmEqs + 3, fSign); verts[v].fKLM[2] = eval_line(verts[v].fPosition, fKlmEqs + 6, 1.f); } - - GrDrawTarget::DrawInfo drawInfo; - drawInfo.setPrimitiveType(kTriangleFan_GrPrimitiveType); - drawInfo.setVertexBuffer(vertexBuffer); - drawInfo.setStartVertex(firstVertex); - drawInfo.setVertexCount(kVertsPerCubic); - drawInfo.setStartIndex(0); - drawInfo.setIndexCount(kIndicesPerCubic); - drawInfo.setIndexBuffer(indexBuffer); - batchTarget->draw(drawInfo); + helper.issueDraws(batchTarget); } Geometry fGeometry; @@ -475,42 +454,19 @@ private: } void onGenerateGeometry(GrBatchTarget* batchTarget, const GrPipeline* pipeline) override { - SkAutoTUnref<const GrIndexBuffer> indexBuffer( - batchTarget->resourceProvider()->refQuadIndexBuffer()); - + QuadHelper helper; size_t vertexStride = this->geometryProcessor()->getVertexStride(); - const GrVertexBuffer* vertexBuffer; - int firstVertex; - - void* vertices = batchTarget->vertexPool()->makeSpace(vertexStride, - kVertsPerCubic, - &vertexBuffer, - &firstVertex); - - if (!vertices || !indexBuffer) { - SkDebugf("Could not allocate buffers\n"); + SkASSERT(vertexStride == sizeof(Vertex)); + GrDrawTarget::DrawInfo drawInfo; + Vertex* verts = reinterpret_cast<Vertex*>(helper.init(batchTarget, vertexStride, 1)); + if (!verts) { return; } - - SkASSERT(vertexStride == sizeof(Vertex)); - Vertex* verts = reinterpret_cast<Vertex*>(vertices); - verts[0].fPosition.setRectFan(fGeometry.fBounds.fLeft, fGeometry.fBounds.fTop, fGeometry.fBounds.fRight, fGeometry.fBounds.fBottom, sizeof(Vertex)); - fDevToUV.apply<4, sizeof(Vertex), sizeof(SkPoint)>(verts); - - - GrDrawTarget::DrawInfo drawInfo; - drawInfo.setPrimitiveType(kTriangles_GrPrimitiveType); - drawInfo.setVertexBuffer(vertexBuffer); - drawInfo.setStartVertex(firstVertex); - drawInfo.setVertexCount(kVertsPerCubic); - drawInfo.setStartIndex(0); - drawInfo.setIndexCount(kIndicesPerCubic); - drawInfo.setIndexBuffer(indexBuffer); - batchTarget->draw(drawInfo); + helper.issueDraws(batchTarget); } Geometry fGeometry; diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp index 60b73c571d..cd9b3d10e5 100644 --- a/gm/convexpolyeffect.cpp +++ b/gm/convexpolyeffect.cpp @@ -17,7 +17,6 @@ #include "GrContext.h" #include "GrDefaultGeoProcFactory.h" #include "GrPathUtils.h" -#include "GrResourceProvider.h" #include "GrTest.h" #include "GrTestBatch.h" #include "SkColorPriv.h" @@ -53,47 +52,24 @@ private: } void onGenerateGeometry(GrBatchTarget* batchTarget, const GrPipeline* pipeline) override { - SkAutoTUnref<const GrIndexBuffer> indexBuffer( - batchTarget->resourceProvider()->refQuadIndexBuffer()); - size_t vertexStride = this->geometryProcessor()->getVertexStride(); - const GrVertexBuffer* vertexBuffer; - int firstVertex; - - void* vertices = batchTarget->vertexPool()->makeSpace(vertexStride, - kVertsPerCubic, - &vertexBuffer, - &firstVertex); - - if (!vertices || !indexBuffer) { - SkDebugf("Could not allocate buffers\n"); + SkASSERT(vertexStride == sizeof(SkPoint)); + QuadHelper helper; + SkPoint* verts = reinterpret_cast<SkPoint*>(helper.init(batchTarget, vertexStride, 1)); + if (!verts) { return; } - SkASSERT(vertexStride == sizeof(SkPoint)); - SkPoint* verts = reinterpret_cast<SkPoint*>(vertices); - // Make sure any artifacts around the exterior of path are visible by using overly // conservative bounding geometry. fGeometry.fBounds.outset(5.f, 5.f); fGeometry.fBounds.toQuad(verts); - GrDrawTarget::DrawInfo drawInfo; - drawInfo.setPrimitiveType(kTriangleFan_GrPrimitiveType); - drawInfo.setVertexBuffer(vertexBuffer); - drawInfo.setStartVertex(firstVertex); - drawInfo.setVertexCount(kVertsPerCubic); - drawInfo.setStartIndex(0); - drawInfo.setIndexCount(kIndicesPerCubic); - drawInfo.setIndexBuffer(indexBuffer); - batchTarget->draw(drawInfo); + helper.issueDraws(batchTarget); } Geometry fGeometry; - static const int kVertsPerCubic = 4; - static const int kIndicesPerCubic = 6; - typedef GrTestBatch INHERITED; }; |