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

Unified Diff: tests/GpuDrawPathTest.cpp

Issue 1457073002: [Reland] Fix NVPR assert for equivalent ovals (Closed) Base URL: https://chromium.googlesource.com/skia.git@master
Patch Set: don't enable GpuDrawPath Created 5 years, 1 month 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
« no previous file with comments | « src/gpu/GrPath.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/GpuDrawPathTest.cpp
diff --git a/tests/GpuDrawPathTest.cpp b/tests/GpuDrawPathTest.cpp
index f23f5ef8dcee4d5864f9dc1646eccd7340fb1633..3702a7cc3b03ee45e2c4673efa7b73b43155a2bc 100644
--- a/tests/GpuDrawPathTest.cpp
+++ b/tests/GpuDrawPathTest.cpp
@@ -15,6 +15,8 @@
#include "SkCanvas.h"
#include "SkColor.h"
#include "SkPaint.h"
+#include "SkPath.h"
+#include "SkDashPathEffect.h"
#include "SkRRect.h"
#include "SkRect.h"
#include "SkSurface.h"
@@ -23,11 +25,12 @@
static void test_drawPathEmpty(skiatest::Reporter*, SkCanvas* canvas) {
// Filling an empty path should not crash.
SkPaint paint;
- canvas->drawRect(SkRect(), paint);
+ SkRect emptyRect = SkRect::MakeEmpty();
+ canvas->drawRect(emptyRect, paint);
canvas->drawPath(SkPath(), paint);
- canvas->drawOval(SkRect(), paint);
- canvas->drawRect(SkRect(), paint);
- canvas->drawRRect(SkRRect(), paint);
+ canvas->drawOval(emptyRect, paint);
+ canvas->drawRect(emptyRect, paint);
+ canvas->drawRRect(SkRRect::MakeRect(emptyRect), paint);
// Stroking an empty path should not crash.
paint.setAntiAlias(true);
@@ -35,15 +38,44 @@ static void test_drawPathEmpty(skiatest::Reporter*, SkCanvas* canvas) {
paint.setColor(SK_ColorGRAY);
paint.setStrokeWidth(SkIntToScalar(20));
paint.setStrokeJoin(SkPaint::kRound_Join);
- canvas->drawRect(SkRect(), paint);
+ canvas->drawRect(emptyRect, paint);
canvas->drawPath(SkPath(), paint);
- canvas->drawOval(SkRect(), paint);
- canvas->drawRect(SkRect(), paint);
- canvas->drawRRect(SkRRect(), paint);
+ canvas->drawOval(emptyRect, paint);
+ canvas->drawRect(emptyRect, paint);
+ canvas->drawRRect(SkRRect::MakeRect(emptyRect), paint);
}
+static void fill_and_stroke(SkCanvas* canvas, const SkPath& p1, const SkPath& p2,
+ SkPathEffect* effect) {
+ SkPaint paint;
+ paint.setAntiAlias(true);
+ paint.setPathEffect(effect);
+
+ canvas->drawPath(p1, paint);
+ canvas->drawPath(p2, paint);
+
+ paint.setStyle(SkPaint::kStroke_Style);
+ canvas->drawPath(p1, paint);
+ canvas->drawPath(p2, paint);
+}
+
+static void test_drawSameRectOvals(skiatest::Reporter*, SkCanvas* canvas) {
+ // Drawing ovals with similar bounds but different points order should not crash.
+
+ SkPath oval1, oval2;
+ const SkRect rect = SkRect::MakeWH(100, 50);
+ oval1.addOval(rect, SkPath::kCW_Direction);
+ oval2.addOval(rect, SkPath::kCCW_Direction);
+
+ fill_and_stroke(canvas, oval1, oval2, nullptr);
+
+ const SkScalar intervals[] = { 1, 1 };
+ SkAutoTUnref<SkPathEffect> dashEffect(SkDashPathEffect::Create(intervals, 2, 0));
+ fill_and_stroke(canvas, oval1, oval2, dashEffect);
+}
DEF_GPUTEST(GpuDrawPath, reporter, factory) {
+ // https://bugs.chromium.org/p/skia/issues/detail?id=4581
return;
for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) {
@@ -66,4 +98,16 @@ DEF_GPUTEST(GpuDrawPath, reporter, factory) {
}
}
+DEF_GPUTEST(GpuDrawPathSameRectOvals, reporter, factory) {
+ GrContext* grContext = factory->get(GrContextFactory::kNVPR_GLContextType);
+ if (!grContext) {
+ return;
+ }
+
+ SkAutoTUnref<SkSurface> surface(
+ SkSurface::NewRenderTarget(grContext, SkSurface::kNo_Budgeted,
+ SkImageInfo::MakeN32Premul(255, 255), 4));
+ test_drawSameRectOvals(reporter, surface->getCanvas());
+}
+
#endif
« no previous file with comments | « src/gpu/GrPath.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698