Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(199)

Unified Diff: src/gpu/GrAARectRenderer.cpp

Issue 1109153004: Initial CL to create GrBatchTest infrastructure (Closed) Base URL: https://skia.googlesource.com/skia.git@rand-batch0
Patch Set: windows warnings Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/gpu/GrAARectRenderer.cpp
diff --git a/src/gpu/GrAARectRenderer.cpp b/src/gpu/GrAARectRenderer.cpp
index e82852485aafc793127954b50a3d81fdca9a3929..569466f23793d70d4cbef373705e2e3ff591dc31 100644
--- a/src/gpu/GrAARectRenderer.cpp
+++ b/src/gpu/GrAARectRenderer.cpp
@@ -8,12 +8,15 @@
#include "GrAARectRenderer.h"
#include "GrBatch.h"
#include "GrBatchTarget.h"
+#include "GrBatchTest.h"
#include "GrBufferAllocPool.h"
+#include "GrContext.h"
#include "GrDefaultGeoProcFactory.h"
#include "GrGeometryProcessor.h"
#include "GrGpu.h"
#include "GrInvariantOutput.h"
#include "GrVertexBuffer.h"
+#include "GrTestUtils.h"
#include "SkColorPriv.h"
#include "gl/GrGLProcessor.h"
#include "gl/GrGLGeometryProcessor.h"
@@ -423,25 +426,28 @@ static int aa_stroke_rect_index_count(bool miterStroke) {
SK_ARRAY_COUNT(gBevelStrokeAARectIdx);
}
-GrIndexBuffer* GrAARectRenderer::aaStrokeRectIndexBuffer(bool miterStroke) {
+static GrIndexBuffer* setup_aa_stroke_rect_indexbuffer(GrIndexBuffer** aaMiterStrokeRectIndexBuffer,
+ GrIndexBuffer** aaBevelStrokeRectIndexBuffer,
+ GrGpu* gpu,
+ bool miterStroke) {
if (miterStroke) {
- if (NULL == fAAMiterStrokeRectIndexBuffer) {
- fAAMiterStrokeRectIndexBuffer =
- fGpu->createInstancedIndexBuffer(gMiterStrokeAARectIdx,
- kIndicesPerMiterStrokeRect,
- kNumMiterStrokeRectsInIndexBuffer,
- kVertsPerMiterStrokeRect);
+ if (!*aaMiterStrokeRectIndexBuffer) {
+ *aaMiterStrokeRectIndexBuffer =
+ gpu->createInstancedIndexBuffer(gMiterStrokeAARectIdx,
+ kIndicesPerMiterStrokeRect,
+ kNumMiterStrokeRectsInIndexBuffer,
+ kVertsPerMiterStrokeRect);
}
- return fAAMiterStrokeRectIndexBuffer;
+ return *aaMiterStrokeRectIndexBuffer;
} else {
- if (NULL == fAABevelStrokeRectIndexBuffer) {
- fAABevelStrokeRectIndexBuffer =
- fGpu->createInstancedIndexBuffer(gBevelStrokeAARectIdx,
- kIndicesPerBevelStrokeRect,
- kNumBevelStrokeRectsInIndexBuffer,
- kVertsPerBevelStrokeRect);
+ if (!*aaBevelStrokeRectIndexBuffer) {
+ *aaBevelStrokeRectIndexBuffer =
+ gpu->createInstancedIndexBuffer(gBevelStrokeAARectIdx,
+ kIndicesPerBevelStrokeRect,
+ kNumBevelStrokeRectsInIndexBuffer,
+ kVertsPerBevelStrokeRect);
}
- return fAABevelStrokeRectIndexBuffer;
+ return *aaBevelStrokeRectIndexBuffer;
}
}
@@ -852,7 +858,6 @@ private:
SkSTArray<1, Geometry, true> fGeoData;
};
-
void GrAARectRenderer::geometryStrokeAARect(GrDrawTarget* target,
GrPipelineBuilder* pipelineBuilder,
GrColor color,
@@ -861,7 +866,10 @@ void GrAARectRenderer::geometryStrokeAARect(GrDrawTarget* target,
const SkRect& devOutsideAssist,
const SkRect& devInside,
bool miterStroke) {
- GrIndexBuffer* indexBuffer = this->aaStrokeRectIndexBuffer(miterStroke);
+ GrIndexBuffer* indexBuffer = setup_aa_stroke_rect_indexbuffer(&fAAMiterStrokeRectIndexBuffer,
+ &fAABevelStrokeRectIndexBuffer,
+ fGpu,
+ miterStroke);
if (!indexBuffer) {
SkDebugf("Failed to create index buffer!\n");
return;
@@ -899,3 +907,58 @@ void GrAARectRenderer::fillAANestedRects(GrDrawTarget* target,
this->geometryStrokeAARect(target, pipelineBuilder, color, viewMatrix, devOutside,
devOutsideAssist, devInside, true);
}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+#ifdef GR_TEST_UTILS
+
+BATCH_TEST_DEFINE(AAFillRectBatch) {
+ AAFillRectBatch::Geometry geo;
+ geo.fColor = GrRandomColor(random);
+ geo.fViewMatrix = GrTest::TestMatrix(random);
+ geo.fRect = GrTest::TestRect(random);
+ geo.fDevRect = GrTest::TestRect(random);
+
+ static GrIndexBuffer* aaFillRectIndexBuffer = NULL;
+ if (!aaFillRectIndexBuffer) {
+ aaFillRectIndexBuffer =
+ context->getGpu()->createInstancedIndexBuffer(gFillAARectIdx,
+ kIndicesPerAAFillRect,
+ kNumAAFillRectsInIndexBuffer,
+ kVertsPerAAFillRect);
+ }
+
+ return AAFillRectBatch::Create(geo, aaFillRectIndexBuffer);
+}
+
+BATCH_TEST_DEFINE(AAStrokeRectBatch) {
+ static GrIndexBuffer* aaMiterStrokeRectIndexBuffer = NULL;
+ static GrIndexBuffer* aaBevelStrokeRectIndexBuffer = NULL;
+
+ bool miterStroke = random->nextBool();
+
+ GrIndexBuffer* indexBuffer = setup_aa_stroke_rect_indexbuffer(&aaMiterStrokeRectIndexBuffer,
+ &aaBevelStrokeRectIndexBuffer,
+ context->getGpu(),
+ miterStroke);
+
+ // Create mock stroke rect
+ SkRect outside = GrTest::TestRect(random);
+ SkScalar minDim = SkMinScalar(outside.width(), outside.height());
+ SkScalar strokeWidth = minDim * 0.1f;
+ SkRect outsideAssist = outside;
+ outsideAssist.outset(strokeWidth, strokeWidth);
+ SkRect inside = outside;
+ inside.inset(strokeWidth, strokeWidth);
+
+ AAStrokeRectBatch::Geometry geo;
+ geo.fColor = GrRandomColor(random);
+ geo.fDevOutside = outside;
+ geo.fDevOutsideAssist = outsideAssist;
+ geo.fDevInside = inside;
+ geo.fMiterStroke = miterStroke;
+
+ return AAStrokeRectBatch::Create(geo, GrTest::TestMatrix(random), indexBuffer);
+}
+
+#endif
« no previous file with comments | « src/gpu/GrAARectRenderer.h ('k') | src/gpu/GrBatchTest.h » ('j') | src/gpu/GrTestUtils.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698