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

Side by Side Diff: tests/GpuDrawPathTest.cpp

Issue 22173002: Fix a crash on stroking empty paths with nv_path_rendering enabled (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/gpu/gl/GrGLPath.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1
2 /*
3 * Copyright 2013 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9 #if SK_SUPPORT_GPU
10
11 #include "GrContext.h"
12 #include "GrContextFactory.h"
13 #include "SkBitmap.h"
14 #include "SkCanvas.h"
15 #include "SkColor.h"
16 #include "SkGpuDevice.h"
17 #include "SkPaint.h"
18 #include "SkRect.h"
19 #include "SkRRect.h"
20 #include "Test.h"
21
22 static void test_drawPathEmpty(skiatest::Reporter*, SkCanvas* canvas)
23 {
24 // Filling an empty path should not crash.
25 SkPaint paint;
26 canvas->drawRect(SkRect(), paint);
27 canvas->drawPath(SkPath(), paint);
28 canvas->drawOval(SkRect(), paint);
29 canvas->drawRect(SkRect(), paint);
30 canvas->drawRRect(SkRRect(), paint);
31
32 // Stroking an empty path should not crash.
33 paint.setAntiAlias(true);
34 paint.setStyle(SkPaint::kStroke_Style);
35 paint.setColor(SK_ColorGRAY);
36 paint.setStrokeWidth(SkIntToScalar(20));
37 paint.setStrokeJoin(SkPaint::kRound_Join);
38 canvas->drawRect(SkRect(), paint);
39 canvas->drawPath(SkPath(), paint);
40 canvas->drawOval(SkRect(), paint);
41 canvas->drawRect(SkRect(), paint);
42 canvas->drawRRect(SkRRect(), paint);
43 }
44
45
46 static void TestGpuDrawPath(skiatest::Reporter* reporter, GrContextFactory* fact ory) {
47 for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) {
48 GrContextFactory::GLContextType glType = static_cast<GrContextFactory::G LContextType>(type);
49
50 GrContext* grContext = factory->get(glType);
51 if (NULL == grContext) {
52 continue;
53 }
54 static const int sampleCounts[] = { 0, 4, 16 };
55
56 for (size_t i = 0; i < SK_ARRAY_COUNT(sampleCounts); ++i) {
57 const int W = 255;
58 const int H = 255;
59
60 GrTextureDesc desc;
61 desc.fConfig = kSkia8888_GrPixelConfig;
62 desc.fFlags = kRenderTarget_GrTextureFlagBit;
63 desc.fWidth = W;
64 desc.fHeight = H;
65 desc.fSampleCnt = sampleCounts[i];
66 SkAutoTUnref<GrTexture> texture(grContext->createUncachedTexture(des c, NULL, 0));
67 SkAutoTUnref<SkGpuDevice> device(SkNEW_ARGS(SkGpuDevice, (grContext, texture.get())));
68 SkCanvas drawingCanvas(device.get());
69
70 test_drawPathEmpty(reporter, &drawingCanvas);
71 }
72 }
73 }
74
75 #include "TestClassDef.h"
76 DEFINE_GPUTESTCLASS("GpuDrawPath", TestGpuDrawPathClass, TestGpuDrawPath)
77
78 #endif
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLPath.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698