Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit fdf05f4

Browse files
bsalomonSkia Commit-Bot
authored andcommitted
Revert "Move GrGeometryProcessor's textures out of classes and into"
This reverts commit af87483. Revert "GrGeometryProcessor derives from GrNonAtomicRef not GrProgramElement." This reverts commit 607be37. Revert "Store GrMeshDrawOps' meshes in GrOpFlushState's arena." This reverts commit b948572. Revert "Remove multitexturing support from GrTextureOp." This reverts commit 986f64c. Revert "Make result of GrOp::combineIfPossible be an enum." This reverts commit 641ac7d. Bug: b/112244393 Change-Id: I579491a3f2f2f2093f1e2a6141fa1e4cc7b760a4 Reviewed-on: https://skia-review.googlesource.com/145646 Reviewed-by: Brian Salomon <[email protected]> Commit-Queue: Brian Salomon <[email protected]>
1 parent cadc506 commit fdf05f4

File tree

86 files changed

+1403
-1031
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+1403
-1031
lines changed

bench/CompositingImagesBench.cpp

Lines changed: 0 additions & 99 deletions
This file was deleted.

bench/ImageCycleBench.cpp

Lines changed: 0 additions & 94 deletions
This file was deleted.

bench/MultitextureImageBench.cpp

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
/*
2+
* Copyright 2017 Google Inc.
3+
*
4+
* Use of this source code is governed by a BSD-style license that can be
5+
* found in the LICENSE file.
6+
*/
7+
8+
#include "Benchmark.h"
9+
10+
#include "GrContextOptions.h"
11+
#include "SkCanvas.h"
12+
#include "SkImage.h"
13+
#include "SkRandom.h"
14+
#include "SkSurface.h"
15+
16+
class MultitextureImages : public Benchmark {
17+
public:
18+
MultitextureImages(int imageSize, int dstRectSize, bool disableMultitexturing, bool aa)
19+
: fImageSize(imageSize)
20+
, fDstRectSize(dstRectSize)
21+
, fDisableMultitexturing(disableMultitexturing)
22+
, fAA(aa) {
23+
fName.appendf("multitexture_images_%dx%d_image_%dx%d_rect", imageSize, imageSize,
24+
dstRectSize, dstRectSize);
25+
if (aa) {
26+
fName.append("_aa");
27+
}
28+
if (disableMultitexturing) {
29+
fName.append("_disable_multitexturing");
30+
}
31+
}
32+
33+
bool isSuitableFor(Backend backend) override { return kGPU_Backend == backend; }
34+
35+
protected:
36+
const char* onGetName() override { return fName.c_str(); }
37+
38+
void onPerCanvasPreDraw(SkCanvas* canvas) override {
39+
auto ii = SkImageInfo::Make(fImageSize, fImageSize, kRGBA_8888_SkColorType,
40+
kPremul_SkAlphaType, nullptr);
41+
SkRandom random;
42+
for (int i = 0; i < kNumImages; ++i) {
43+
auto surf = canvas->makeSurface(ii);
44+
SkColor color = random.nextU();
45+
surf->getCanvas()->clear(color);
46+
SkPaint paint;
47+
paint.setColor(~color);
48+
paint.setBlendMode(SkBlendMode::kSrc);
49+
surf->getCanvas()->drawRect(SkRect::MakeLTRB(3, 3, fImageSize - 3, fImageSize - 3),
50+
paint);
51+
fImages[i] = surf->makeImageSnapshot();
52+
}
53+
}
54+
55+
void onPerCanvasPostDraw(SkCanvas*) override {
56+
for (int i = 0; i < kNumImages; ++i) {
57+
fImages[i].reset();
58+
}
59+
}
60+
61+
void onDraw(int loops, SkCanvas* canvas) override {
62+
SkRect rect = SkRect::MakeWH(fDstRectSize, fDstRectSize);
63+
SkPaint paint;
64+
paint.setAlpha(0x40);
65+
paint.setFilterQuality(kLow_SkFilterQuality);
66+
paint.setAntiAlias(fAA);
67+
for (int i = 0; i < loops; i++) {
68+
for (int j = 0; j < kNumImages; ++j) {
69+
SkVector translate = this->translation(i * kNumImages + j);
70+
canvas->drawImageRect(fImages[j].get(), rect.makeOffset(translate.fX, translate.fY),
71+
&paint);
72+
}
73+
// Prevent any batching except without multitexturing since we're trying to measure
74+
// drawing distinct images and just repeating images here to increase the workload for
75+
// timing reasons.
76+
canvas->flush();
77+
}
78+
}
79+
80+
void modifyGrContextOptions(GrContextOptions* options) override {
81+
options->fDisableImageMultitexturing = fDisableMultitexturing;
82+
}
83+
84+
private:
85+
SkIPoint onGetSize() override {
86+
// The rows and columns are spaced by kTranslate, but the images may overlap if they are
87+
// larger than kTranslate and extend beyond the last row/column.
88+
return SkIPoint::Make(kTranslate * (kNumColumns - 1) + fDstRectSize,
89+
kTranslate * (kNumRows - 1) + fDstRectSize);
90+
}
91+
92+
SkVector translation(int i) const {
93+
SkVector offset;
94+
// Fractional offsets to ensure we can't ignore antialiasing.
95+
offset.fX = i % kNumColumns * kTranslate + 0.1f;
96+
offset.fY = (i / kNumColumns) % kNumRows * kTranslate + 0.1f;
97+
return offset;
98+
}
99+
100+
static const int kTranslate = 200;
101+
static const int kNumColumns = 5;
102+
static const int kNumRows = 5;
103+
static const int kNumImages = 8;
104+
105+
sk_sp<SkImage> fImages[kNumImages];
106+
SkString fName;
107+
int fImageSize;
108+
int fDstRectSize;
109+
bool fDisableMultitexturing;
110+
bool fAA;
111+
112+
typedef Benchmark INHERITED;
113+
};
114+
115+
// Non-AA
116+
DEF_BENCH(return new MultitextureImages(128, 32, false, false));
117+
DEF_BENCH(return new MultitextureImages(128, 32, true, false));
118+
DEF_BENCH(return new MultitextureImages(128, 128, false, false));
119+
DEF_BENCH(return new MultitextureImages(128, 128, true, false));
120+
DEF_BENCH(return new MultitextureImages(128, 256, false, false));
121+
DEF_BENCH(return new MultitextureImages(128, 256, true, false));
122+
123+
DEF_BENCH(return new MultitextureImages(512, 32, false, false));
124+
DEF_BENCH(return new MultitextureImages(512, 32, true, false));
125+
DEF_BENCH(return new MultitextureImages(512, 128, false, false));
126+
DEF_BENCH(return new MultitextureImages(512, 128, true, false));
127+
DEF_BENCH(return new MultitextureImages(512, 256, false, false));
128+
DEF_BENCH(return new MultitextureImages(512, 256, true, false));
129+
DEF_BENCH(return new MultitextureImages(512, 512, false, false));
130+
DEF_BENCH(return new MultitextureImages(512, 512, true, false));
131+
132+
// AA
133+
DEF_BENCH(return new MultitextureImages(512, 512, true, true));
134+
DEF_BENCH(return new MultitextureImages(512, 512, false, true));
135+
DEF_BENCH(return new MultitextureImages(128, 32, true, true));
136+
DEF_BENCH(return new MultitextureImages(128, 32, false, true));

bench/VertexColorSpaceBench.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ class Op : public GrMeshDrawOp {
152152
private:
153153
friend class ::GrOpMemoryPool;
154154

155+
bool onCombineIfPossible(GrOp*, const GrCaps&) override { return false; }
156+
155157
void onPrepareDraws(Target* target) override {
156158
sk_sp<GrGeometryProcessor> gp(new GP(fMode, fColorSpaceXform));
157159

@@ -197,12 +199,12 @@ class Op : public GrMeshDrawOp {
197199
}
198200
}
199201

200-
GrMesh* mesh = target->allocMesh(GrPrimitiveType::kTriangleStrip);
201-
mesh->setNonIndexedNonInstanced(kVertexCount);
202-
mesh->setVertexData(vertexBuffer, firstVertex);
202+
GrMesh mesh(GrPrimitiveType::kTriangleStrip);
203+
mesh.setNonIndexedNonInstanced(kVertexCount);
204+
mesh.setVertexData(vertexBuffer, firstVertex);
203205
auto pipe = target->makePipeline(0, GrProcessorSet::MakeEmptySet(),
204206
target->detachAppliedClip());
205-
target->draw(gp, pipe.fPipeline, pipe.fFixedDynamicState, mesh);
207+
target->draw(gp.get(), pipe.fPipeline, pipe.fFixedDynamicState, mesh);
206208
}
207209

208210
Mode fMode;

0 commit comments

Comments
 (0)