GpuDrawPathTest.cpp revision 19dd017a6256be636ccb550752bb563c4e7caeb5
119dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org 219dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org/* 319dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org * Copyright 2013 Google Inc. 419dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org * 519dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org * Use of this source code is governed by a BSD-style license that can be 619dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org * found in the LICENSE file. 719dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org */ 819dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org 919dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#if SK_SUPPORT_GPU 1019dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org 1119dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "GrContext.h" 1219dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "GrContextFactory.h" 1319dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "SkBitmap.h" 1419dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "SkCanvas.h" 1519dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "SkColor.h" 1619dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "SkGpuDevice.h" 1719dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "SkPaint.h" 1819dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "SkRect.h" 1919dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "SkRRect.h" 2019dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "Test.h" 2119dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org 2219dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.orgstatic void test_drawPathEmpty(skiatest::Reporter*, SkCanvas* canvas) 2319dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org{ 2419dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org // Filling an empty path should not crash. 2519dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org SkPaint paint; 2619dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org canvas->drawRect(SkRect(), paint); 2719dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org canvas->drawPath(SkPath(), paint); 2819dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org canvas->drawOval(SkRect(), paint); 2919dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org canvas->drawRect(SkRect(), paint); 3019dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org canvas->drawRRect(SkRRect(), paint); 3119dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org 3219dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org // Stroking an empty path should not crash. 3319dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org paint.setAntiAlias(true); 3419dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org paint.setStyle(SkPaint::kStroke_Style); 3519dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org paint.setColor(SK_ColorGRAY); 3619dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org paint.setStrokeWidth(SkIntToScalar(20)); 3719dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org paint.setStrokeJoin(SkPaint::kRound_Join); 3819dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org canvas->drawRect(SkRect(), paint); 3919dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org canvas->drawPath(SkPath(), paint); 4019dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org canvas->drawOval(SkRect(), paint); 4119dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org canvas->drawRect(SkRect(), paint); 4219dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org canvas->drawRRect(SkRRect(), paint); 4319dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org} 4419dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org 4519dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org 4619dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.orgstatic void TestGpuDrawPath(skiatest::Reporter* reporter, GrContextFactory* factory) { 4719dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) { 4819dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org GrContextFactory::GLContextType glType = static_cast<GrContextFactory::GLContextType>(type); 4919dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org 5019dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org GrContext* grContext = factory->get(glType); 5119dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org if (NULL == grContext) { 5219dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org continue; 5319dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org } 5419dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org static const int sampleCounts[] = { 0, 4, 16 }; 5519dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org 5619dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org for (size_t i = 0; i < SK_ARRAY_COUNT(sampleCounts); ++i) { 5719dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org const int W = 255; 5819dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org const int H = 255; 5919dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org 6019dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org GrTextureDesc desc; 6119dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org desc.fConfig = kSkia8888_GrPixelConfig; 6219dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org desc.fFlags = kRenderTarget_GrTextureFlagBit; 6319dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org desc.fWidth = W; 6419dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org desc.fHeight = H; 6519dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org desc.fSampleCnt = sampleCounts[i]; 6619dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org SkAutoTUnref<GrTexture> texture(grContext->createUncachedTexture(desc, NULL, 0)); 6719dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org SkAutoTUnref<SkGpuDevice> device(SkNEW_ARGS(SkGpuDevice, (grContext, texture.get()))); 6819dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org SkCanvas drawingCanvas(device.get()); 6919dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org 7019dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org test_drawPathEmpty(reporter, &drawingCanvas); 7119dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org } 7219dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org } 7319dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org} 7419dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org 7519dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#include "TestClassDef.h" 7619dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.orgDEFINE_GPUTESTCLASS("GpuDrawPath", TestGpuDrawPathClass, TestGpuDrawPath) 7719dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org 7819dd017a6256be636ccb550752bb563c4e7caeb5commit-bot@chromium.org#endif 79