Add fuzzer for Triangulating Path Renderer
Bug: skia:11892
Change-Id: I3f8145516f8fd23eb05c29517cd5c1553c9b1df1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/399296
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/ops/GrTriangulatingPathRenderer.cpp b/src/gpu/ops/GrTriangulatingPathRenderer.cpp
index 54cc75b..85f7ad1 100644
--- a/src/gpu/ops/GrTriangulatingPathRenderer.cpp
+++ b/src/gpu/ops/GrTriangulatingPathRenderer.cpp
@@ -158,53 +158,37 @@
size_t fLockStride = 0;
};
-class CpuVertexAllocator : public GrEagerVertexAllocator {
-public:
- CpuVertexAllocator() = default;
-
-#ifdef SK_DEBUG
- ~CpuVertexAllocator() override {
- SkASSERT(!fLockStride && !fVertices && !fVertexData);
- }
-#endif
-
- void* lock(size_t stride, int eagerCount) override {
- SkASSERT(!fLockStride && !fVertices && !fVertexData);
- SkASSERT(stride && eagerCount);
-
- fVertices = sk_malloc_throw(eagerCount * stride);
- fLockStride = stride;
-
- return fVertices;
- }
-
- void unlock(int actualCount) override {
- SkASSERT(fLockStride && fVertices && !fVertexData);
-
- fVertices = sk_realloc_throw(fVertices, actualCount * fLockStride);
-
- fVertexData = GrThreadSafeCache::MakeVertexData(fVertices, actualCount, fLockStride);
-
- fVertices = nullptr;
- fLockStride = 0;
- }
-
- sk_sp<GrThreadSafeCache::VertexData> detachVertexData() {
- SkASSERT(!fLockStride && !fVertices && fVertexData);
-
- return std::move(fVertexData);
- }
-
-private:
- sk_sp<GrThreadSafeCache::VertexData> fVertexData;
-
- void* fVertices = nullptr;
- size_t fLockStride = 0;
-};
-
} // namespace
+//-------------------------------------------------------------------------------------------------
+void* GrCpuVertexAllocator::lock(size_t stride, int eagerCount) {
+ SkASSERT(!fLockStride && !fVertices && !fVertexData);
+ SkASSERT(stride && eagerCount);
+ fVertices = sk_malloc_throw(eagerCount * stride);
+ fLockStride = stride;
+
+ return fVertices;
+}
+
+void GrCpuVertexAllocator::unlock(int actualCount) {
+ SkASSERT(fLockStride && fVertices && !fVertexData);
+
+ fVertices = sk_realloc_throw(fVertices, actualCount * fLockStride);
+
+ fVertexData = GrThreadSafeCache::MakeVertexData(fVertices, actualCount, fLockStride);
+
+ fVertices = nullptr;
+ fLockStride = 0;
+}
+
+sk_sp<GrThreadSafeCache::VertexData> GrCpuVertexAllocator::detachVertexData() {
+ SkASSERT(!fLockStride && !fVertices && fVertexData);
+
+ return std::move(fVertexData);
+}
+
+//-------------------------------------------------------------------------------------------------
GrTriangulatingPathRenderer::GrTriangulatingPathRenderer()
: fMaxVerbCount(GR_AA_TESSELLATOR_MAX_VERB_COUNT) {
}
@@ -536,7 +520,7 @@
return;
}
- CpuVertexAllocator allocator;
+ GrCpuVertexAllocator allocator;
bool isLinear;
int vertexCount = Triangulate(&allocator, fViewMatrix, fShape, fDevClipBounds, tol,