Skip to content
This repository has been archived by the owner on Nov 15, 2022. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
Change-Id: I0470d8e53bf019f410509180b95950f20f98a5e8
  • Loading branch information
drWulf committed Jan 16, 2014
1 parent 0a657bb commit 910f694
Show file tree
Hide file tree
Showing 921 changed files with 31,475 additions and 22,541 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -7,3 +7,4 @@ gyp/build/
out/
third_party/externals/
xcodebuild/
TAGS
5 changes: 2 additions & 3 deletions DEPS
Expand Up @@ -10,11 +10,10 @@ use_relative_paths = True
deps = {
# DEPS using https://chromium.googlesource.com are pulled from chromium @ r205199
# (see https://chromium.googlesource.com/chromium/chromium/+/c59bfa8ef877f45bfa859669053859857af1d279)
# NOTE: Angle has been reverted to http://angleproject.googlecode.com/svn/trunk@1268
"third_party/externals/angle" : "https://chromium.googlesource.com/external/angleproject.git@e574e26f48223a6718feab841b4a7720785b497a",
"third_party/externals/angle" : "https://chromium.googlesource.com/external/angleproject.git",
"third_party/externals/fontconfig" : "https://skia.googlesource.com/third_party/fontconfig.git@2.10.93",
"third_party/externals/freetype" : "https://skia.googlesource.com/third_party/freetype2.git@VER-2-5-0-1",
"third_party/externals/gyp" : "https://chromium.googlesource.com/external/gyp.git@0635a6e266eb4cdd01e942331997f76b3737be79",
"third_party/externals/gyp" : "https://chromium.googlesource.com/external/gyp.git@5917c6a6b77c9e97a0cbb66847194381bd36ec4c",
"third_party/externals/iconv" : "https://skia.googlesource.com/third_party/libiconv.git@v1.14",
"third_party/externals/libjpeg" : "https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git@82ce8a6d4ebe12a177c0c3597192f2b4f09e81c3",
"third_party/externals/jsoncpp" : "https://chromium.googlesource.com/external/jsoncpp/jsoncpp.git@ab1e40f3bce061ea6f9bdc60351d6cde2a4f872b",
Expand Down
20 changes: 10 additions & 10 deletions bench/AAClipBench.cpp
Expand Up @@ -32,8 +32,8 @@ class AAClipBench : public SkBenchmark {
doPath ? "path" : "rect",
doAA ? "AA" : "BW");

fClipRect.set(SkFloatToScalar(10.5f), SkFloatToScalar(10.5f),
SkFloatToScalar(50.5f), SkFloatToScalar(50.5f));
fClipRect.set(10.5f, 10.5f,
50.5f, 50.5f);
fClipPath.addRoundRect(fClipRect, SkIntToScalar(10), SkIntToScalar(10));
fDrawRect.set(SkIntToScalar(0), SkIntToScalar(0),
SkIntToScalar(100), SkIntToScalar(100));
Expand All @@ -43,12 +43,12 @@ class AAClipBench : public SkBenchmark {

protected:
virtual const char* onGetName() { return fName.c_str(); }
virtual void onDraw(SkCanvas* canvas) {
virtual void onDraw(const int loops, SkCanvas* canvas) {

SkPaint paint;
this->setupPaint(&paint);

for (int i = 0; i < this->getLoops(); ++i) {
for (int i = 0; i < loops; ++i) {
// jostle the clip regions each time to prevent caching
fClipRect.offset((i % 2) == 0 ? SkIntToScalar(10) : SkIntToScalar(-10), 0);
fClipPath.reset();
Expand Down Expand Up @@ -158,9 +158,9 @@ class NestedAAClipBench : public SkBenchmark {
canvas->restore();
}

virtual void onDraw(SkCanvas* canvas) {
virtual void onDraw(const int loops, SkCanvas* canvas) {

for (int i = 0; i < this->getLoops(); ++i) {
for (int i = 0; i < loops; ++i) {
SkPoint offset = SkPoint::Make(0, 0);
this->recurse(canvas, 0, offset);
}
Expand Down Expand Up @@ -195,11 +195,11 @@ class AAClipBuilderBench : public SkBenchmark {

protected:
virtual const char* onGetName() { return fName.c_str(); }
virtual void onDraw(SkCanvas*) {
virtual void onDraw(const int loops, SkCanvas*) {
SkPaint paint;
this->setupPaint(&paint);

for (int i = 0; i < this->getLoops(); ++i) {
for (int i = 0; i < loops; ++i) {
SkAAClip clip;
if (fDoPath) {
clip.setPath(fPath, &fRegion, fDoAA);
Expand Down Expand Up @@ -230,8 +230,8 @@ class AAClipRegionBench : public SkBenchmark {

protected:
virtual const char* onGetName() { return "aaclip_setregion"; }
virtual void onDraw(SkCanvas*) {
for (int i = 0; i < this->getLoops(); ++i) {
virtual void onDraw(const int loops, SkCanvas*) {
for (int i = 0; i < loops; ++i) {
SkAAClip clip;
clip.setRegion(fRegion);
}
Expand Down
2 changes: 1 addition & 1 deletion bench/BenchSysTimer_windows.cpp
Expand Up @@ -9,7 +9,7 @@

//Time
#define WIN32_LEAN_AND_MEAN 1
#include <Windows.h>
#include <windows.h>

static ULONGLONG winCpuTime() {
FILETIME createTime;
Expand Down
2 changes: 1 addition & 1 deletion bench/BenchSysTimer_windows.h
Expand Up @@ -10,7 +10,7 @@

//Time
#define WIN32_LEAN_AND_MEAN 1
#include <Windows.h>
#include <windows.h>

class BenchSysTimer {
public:
Expand Down
6 changes: 3 additions & 3 deletions bench/BicubicBench.cpp
Expand Up @@ -20,7 +20,7 @@ class BicubicBench : public SkBenchmark {

public:
BicubicBench(float x, float y)
: fScale(SkSize::Make(SkFloatToScalar(x), SkFloatToScalar(y))) {
: fScale(SkSize::Make(x, y)) {
fName.printf("bicubic_%gx%g",
SkScalarToFloat(fScale.fWidth), SkScalarToFloat(fScale.fHeight));
}
Expand All @@ -30,7 +30,7 @@ class BicubicBench : public SkBenchmark {
return fName.c_str();
}

virtual void onDraw(SkCanvas* canvas) {
virtual void onDraw(const int loops, SkCanvas* canvas) {
SkPaint paint;
this->setupPaint(&paint);

Expand All @@ -40,7 +40,7 @@ class BicubicBench : public SkBenchmark {
SkAutoTUnref<SkImageFilter> bicubic(SkBicubicImageFilter::CreateMitchell(fScale));
paint.setImageFilter(bicubic);

for (int i = 0; i < this->getLoops(); i++) {
for (int i = 0; i < loops; i++) {
canvas->save();
canvas->clipRect(r);
canvas->drawOval(r, paint);
Expand Down
8 changes: 4 additions & 4 deletions bench/BitmapBench.cpp
Expand Up @@ -130,7 +130,7 @@ class BitmapBench : public SkBenchmark {
fBitmap.setIsVolatile(fIsVolatile);
}

virtual void onDraw(SkCanvas* canvas) {
virtual void onDraw(const int loops, SkCanvas* canvas) {
SkIPoint dim = this->getSize();
SkRandom rand;

Expand All @@ -141,7 +141,7 @@ class BitmapBench : public SkBenchmark {
const SkScalar x0 = SkIntToScalar(-bitmap.width() / 2);
const SkScalar y0 = SkIntToScalar(-bitmap.height() / 2);

for (int i = 0; i < this->getLoops(); i++) {
for (int i = 0; i < loops; i++) {
SkScalar x = x0 + rand.nextUScalar1() * dim.fX;
SkScalar y = y0 + rand.nextUScalar1() * dim.fY;

Expand Down Expand Up @@ -221,7 +221,7 @@ class FilterBitmapBench : public BitmapBench {
return fFullName.c_str();
}

virtual void onDraw(SkCanvas* canvas) {
virtual void onDraw(const int loops, SkCanvas* canvas) {
SkISize dim = canvas->getDeviceSize();
if (fFlags & kScale_Flag) {
const SkScalar x = SkIntToScalar(dim.fWidth) / 2;
Expand All @@ -240,7 +240,7 @@ class FilterBitmapBench : public BitmapBench {
canvas->rotate(SkIntToScalar(35));
canvas->translate(-x, -y);
}
INHERITED::onDraw(canvas);
INHERITED::onDraw(loops, canvas);
}

virtual void setupPaint(SkPaint* paint) SK_OVERRIDE {
Expand Down
4 changes: 2 additions & 2 deletions bench/BitmapRectBench.cpp
Expand Up @@ -87,15 +87,15 @@ class BitmapRectBench : public SkBenchmark {
}


virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE {
SkRandom rand;

SkPaint paint;
this->setupPaint(&paint);
paint.setFilterLevel(fFilterLevel);
paint.setAlpha(fAlpha);

for (int i = 0; i < this->getLoops(); i++) {
for (int i = 0; i < loops; i++) {
canvas->drawBitmapRectToRect(fBitmap, &fSrcR, fDstR, &paint);
}
}
Expand Down
4 changes: 2 additions & 2 deletions bench/BitmapScaleBench.cpp
Expand Up @@ -69,13 +69,13 @@ class BitmapScaleBench: public SkBenchmark {
fMatrix.setScale( scale(), scale() );
}

virtual void onDraw(SkCanvas*) {
virtual void onDraw(const int loops, SkCanvas*) {
SkPaint paint;
this->setupPaint(&paint);

preBenchSetup();

for (int i = 0; i < this->getLoops(); i++) {
for (int i = 0; i < loops; i++) {
doScaleImage();
}
}
Expand Down
8 changes: 4 additions & 4 deletions bench/BlurBench.cpp
Expand Up @@ -15,9 +15,9 @@
#include "SkBlurMaskFilter.h"

#define SMALL SkIntToScalar(2)
#define REAL SkFloatToScalar(1.5f)
#define REAL 1.5f
#define BIG SkIntToScalar(10)
#define REALBIG SkFloatToScalar(100.5f)
#define REALBIG 100.5f

static const char* gStyleName[] = {
"normal",
Expand Down Expand Up @@ -52,14 +52,14 @@ class BlurBench : public SkBenchmark {
return fName.c_str();
}

virtual void onDraw(SkCanvas* canvas) {
virtual void onDraw(const int loops, SkCanvas* canvas) {
SkPaint paint;
this->setupPaint(&paint);

paint.setAntiAlias(true);

SkRandom rand;
for (int i = 0; i < this->getLoops(); i++) {
for (int i = 0; i < loops; i++) {
SkRect r = SkRect::MakeWH(rand.nextUScalar1() * 400,
rand.nextUScalar1() * 400);
r.offset(fRadius, fRadius);
Expand Down
12 changes: 8 additions & 4 deletions bench/BlurImageFilterBench.cpp
Expand Up @@ -18,8 +18,8 @@
#define FILTER_HEIGHT_SMALL 32
#define FILTER_WIDTH_LARGE 256
#define FILTER_HEIGHT_LARGE 256
#define BLUR_SIGMA_SMALL SkFloatToScalar(1.0f)
#define BLUR_SIGMA_LARGE SkFloatToScalar(10.0f)
#define BLUR_SIGMA_SMALL 1.0f
#define BLUR_SIGMA_LARGE 10.0f

class BlurImageFilterBench : public SkBenchmark {
public:
Expand All @@ -41,11 +41,11 @@ class BlurImageFilterBench : public SkBenchmark {
}
}

virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE {
SkPaint paint;
paint.setImageFilter(new SkBlurImageFilter(fSigmaX, fSigmaY))->unref();

for (int i = 0; i < this->getLoops(); i++) {
for (int i = 0; i < loops; i++) {
canvas->drawBitmap(fCheckerboard, 0, 0, &paint);
}
}
Expand Down Expand Up @@ -84,6 +84,10 @@ class BlurImageFilterBench : public SkBenchmark {
typedef SkBenchmark INHERITED;
};

DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_LARGE, 0, false);)
DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_SMALL, 0, false);)
DEF_BENCH(return new BlurImageFilterBench(0, BLUR_SIGMA_LARGE, false);)
DEF_BENCH(return new BlurImageFilterBench(0, BLUR_SIGMA_SMALL, false);)
DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_SMALL, BLUR_SIGMA_SMALL, true);)
DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_SMALL, BLUR_SIGMA_SMALL, false);)
DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_LARGE, BLUR_SIGMA_LARGE, true);)
Expand Down
8 changes: 4 additions & 4 deletions bench/BlurRectBench.cpp
Expand Up @@ -14,11 +14,11 @@
#include "SkBlurMask.h"

#define SMALL SkIntToScalar(2)
#define REAL SkFloatToScalar(1.5f)
#define REAL 1.5f
static const SkScalar kMedium = SkIntToScalar(5);
#define BIG SkIntToScalar(10)
static const SkScalar kMedBig = SkIntToScalar(20);
#define REALBIG SkFloatToScalar(30.5f)
#define REALBIG 30.5f

class BlurRectBench: public SkBenchmark {
int fLoopCount;
Expand Down Expand Up @@ -51,7 +51,7 @@ class BlurRectBench: public SkBenchmark {
fName = name;
}

virtual void onDraw(SkCanvas*) {
virtual void onDraw(const int loops, SkCanvas*) {
SkPaint paint;
this->setupPaint(&paint);

Expand All @@ -62,7 +62,7 @@ class BlurRectBench: public SkBenchmark {

preBenchSetup(r);

for (int i = 0; i < this->getLoops(); i++) {
for (int i = 0; i < loops; i++) {
makeBlurryRect(r);
}
}
Expand Down
94 changes: 94 additions & 0 deletions bench/BlurRoundRectBench.cpp
@@ -0,0 +1,94 @@
/*
* Copyright 2013 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/

#include "SkBenchmark.h"
#include "SkBlurMask.h"
#include "SkBlurMaskFilter.h"
#include "SkCanvas.h"
#include "SkColorFilter.h"
#include "SkLayerDrawLooper.h"
#include "SkPaint.h"
#include "SkPath.h"
#include "SkPoint.h"
#include "SkRect.h"
#include "SkRRect.h"
#include "SkString.h"
#include "SkXfermode.h"

// Large blurred RR appear frequently on web pages. This benchmark measures our
// performance in this case.
class BlurRoundRectBench : public SkBenchmark {
public:
BlurRoundRectBench(int width, int height, int cornerRadius)
: fName("blurroundrect") {
fName.appendf("_WH[%ix%i]_cr[%i]", width, height, cornerRadius);
SkRect r = SkRect::MakeWH(SkIntToScalar(width), SkIntToScalar(height));
fRRect.setRectXY(r, SkIntToScalar(cornerRadius), SkIntToScalar(cornerRadius));
}

virtual const char* onGetName() SK_OVERRIDE {
return fName.c_str();
}

virtual SkIPoint onGetSize() SK_OVERRIDE {
return SkIPoint::Make(SkScalarCeilToInt(fRRect.rect().width()),
SkScalarCeilToInt(fRRect.rect().height()));
}

virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE {
SkLayerDrawLooper* looper = new SkLayerDrawLooper;
{
SkLayerDrawLooper::LayerInfo info;
info.fFlagsMask = 0;
info.fPaintBits = SkLayerDrawLooper::kMaskFilter_Bit
| SkLayerDrawLooper::kColorFilter_Bit;
info.fColorMode = SkXfermode::kSrc_Mode;
info.fOffset = SkPoint::Make(SkIntToScalar(-1), SkIntToScalar(0));
info.fPostTranslate = false;
SkPaint* paint = looper->addLayerOnTop(info);
SkMaskFilter* maskFilter = SkBlurMaskFilter::Create(
SkBlurMaskFilter::kNormal_BlurStyle,
SkBlurMask::ConvertRadiusToSigma(SK_ScalarHalf),
SkBlurMaskFilter::kHighQuality_BlurFlag);
paint->setMaskFilter(maskFilter)->unref();
SkColorFilter* colorFilter = SkColorFilter::CreateModeFilter(SK_ColorLTGRAY,
SkXfermode::kSrcIn_Mode);
paint->setColorFilter(colorFilter)->unref();
paint->setColor(SK_ColorGRAY);
}
{
SkLayerDrawLooper::LayerInfo info;
looper->addLayerOnTop(info);
}
SkPaint dullPaint;
dullPaint.setAntiAlias(true);

SkPaint loopedPaint;
loopedPaint.setLooper(looper)->unref();
loopedPaint.setAntiAlias(true);
loopedPaint.setColor(SK_ColorCYAN);

for (int i = 0; i < loops; i++) {
canvas->drawRect(fRRect.rect(), dullPaint);
canvas->drawRRect(fRRect, loopedPaint);
}
}

private:
SkString fName;
SkRRect fRRect;

typedef SkBenchmark INHERITED;
};

// Create one with dimensions/rounded corners based on the skp
DEF_BENCH(return new BlurRoundRectBench(600, 5514, 6);)
// Same radii, much smaller rectangle
DEF_BENCH(return new BlurRoundRectBench(100, 100, 6);)
// Other radii options
DEF_BENCH(return new BlurRoundRectBench(100, 100, 30);)
DEF_BENCH(return new BlurRoundRectBench(100, 100, 90);)

0 comments on commit 910f694

Please sign in to comment.