Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | List of all members
AtlasBench Class Reference
Inheritance diagram for AtlasBench:
Benchmark SkRefCnt SkRefCntBase

Public Member Functions

 AtlasBench (unsigned flags)
 
 ~AtlasBench () override
 
- Public Member Functions inherited from Benchmark
 Benchmark ()
 
const char * getName ()
 
const char * getUniqueName ()
 
SkISize getSize ()
 
virtual bool isSuitableFor (Backend backend)
 
virtual void modifyGrContextOptions (GrContextOptions *)
 
virtual bool shouldLoop () const
 
void delayedSetup ()
 
void perCanvasPreDraw (SkCanvas *)
 
void perCanvasPostDraw (SkCanvas *)
 
void preDraw (SkCanvas *)
 
void postDraw (SkCanvas *)
 
void draw (int loops, SkCanvas *)
 
virtual void getGpuStats (SkCanvas *, skia_private::TArray< SkString > *keys, skia_private::TArray< double > *values)
 
virtual bool getDMSAAStats (GrRecordingContext *)
 
int getUnits () const
 
- Public Member Functions inherited from SkRefCntBase
 SkRefCntBase ()
 
virtual ~SkRefCntBase ()
 
bool unique () const
 
void ref () const
 
void unref () const
 

Protected Member Functions

const char * onGetName () override
 
void onDelayedSetup () override
 
void onDraw (int loops, SkCanvas *canvas) override
 
- Protected Member Functions inherited from Benchmark
void setUnits (int units)
 
virtual void setupPaint (SkPaint *paint)
 
virtual const char * onGetUniqueName ()
 
virtual void onPerCanvasPreDraw (SkCanvas *)
 
virtual void onPerCanvasPostDraw (SkCanvas *)
 
virtual void onPreDraw (SkCanvas *)
 
virtual void onPostDraw (SkCanvas *)
 
virtual SkISize onGetSize ()
 

Additional Inherited Members

- Public Types inherited from Benchmark
enum class  Backend {
  kNonRendering , kRaster , kGanesh , kGraphite ,
  kPDF , kHWUI
}
 

Detailed Description

Definition at line 164 of file VertBench.cpp.

Constructor & Destructor Documentation

◆ AtlasBench()

AtlasBench::AtlasBench ( unsigned  flags)
inline

Definition at line 179 of file VertBench.cpp.

179 : fFlags(flags) {
180 fName.printf("drawAtlas");
181 if (flags & kColors_Flag) {
182 fName.append("_colors");
183 }
184 if (flags & kRotate_Flag) {
185 fName.append("_rotated");
186 }
187 if (flags & kPersp_Flag) {
188 fName.append("_persp");
189 }
190 }
@ kColors_Flag
@ kPersp_Flag
@ kRotate_Flag
void printf(const char format[],...) SK_PRINTF_LIKE(2
Definition SkString.cpp:534
void append(const char text[])
Definition SkString.h:203
FlutterSemanticsFlag flags

◆ ~AtlasBench()

AtlasBench::~AtlasBench ( )
inlineoverride

Definition at line 191 of file VertBench.cpp.

191{}

Member Function Documentation

◆ onDelayedSetup()

void AtlasBench::onDelayedSetup ( )
inlineoverrideprotectedvirtual

Reimplemented from Benchmark.

Definition at line 195 of file VertBench.cpp.

195 {
196 fAtlas = ToolUtils::GetResourceAsImage("images/mandrill_256.png");
197 if (fAtlas) {
198 fAtlas = fAtlas->makeRasterImage();
199 }
200
201 const SkScalar imageW = fAtlas->width();
202 const SkScalar imageH = fAtlas->height();
203 SkScalar scos = 1;
204 SkScalar ssin = 0;
205 if (fFlags & kRotate_Flag) {
206 scos = 0.866025403784439f; // sqrt(3)/2
207 ssin = 0.5f;
208 }
209
210 SkRandom rand;
211 for (int i = 0; i < N; ++i) {
212 fRects[i] = SkRect::MakeXYWH(rand.nextF() * (imageW - 8),
213 rand.nextF() * (imageH - 8), 8, 8);
214 fColors[i] = rand.nextU() | 0xFF000000;
215 fXforms[i] = SkRSXform::Make(scos, ssin, rand.nextF() * W, rand.nextF() * H);
216 }
217 }
sk_sp< SkImage > makeRasterImage(GrDirectContext *, CachingHint cachingHint=kDisallow_CachingHint) const
Definition SkImage.cpp:267
int width() const
Definition SkImage.h:285
int height() const
Definition SkImage.h:291
uint32_t nextU()
Definition SkRandom.h:42
float nextF()
Definition SkRandom.h:55
float SkScalar
Definition extension.cpp:12
sk_sp< SkImage > GetResourceAsImage(const char *resource)
Definition DecodeUtils.h:25
Definition SkMD5.cpp:130
static SkRSXform Make(SkScalar scos, SkScalar ssin, SkScalar tx, SkScalar ty)
Definition SkRSXform.h:24
static constexpr SkRect MakeXYWH(float x, float y, float w, float h)
Definition SkRect.h:659

◆ onDraw()

void AtlasBench::onDraw ( int  loops,
SkCanvas canvas 
)
inlineoverrideprotectedvirtual

Implements Benchmark.

Definition at line 218 of file VertBench.cpp.

218 {
219 const SkRect* cullRect = nullptr;
220 const SkPaint* paintPtr = nullptr;
221 const SkColor* colors = nullptr;
222 if (fFlags & kColors_Flag) {
223 colors = fColors;
224 }
225 if (fFlags & kPersp_Flag) {
226 tiny_persp_effect(canvas);
227 }
228 for (int i = 0; i < loops; i++) {
229 canvas->drawAtlas(fAtlas.get(), fXforms, fRects, colors, N, SkBlendMode::kModulate,
230 SkSamplingOptions(), cullRect, paintPtr);
231 }
232 }
@ kModulate
r = s*d
uint32_t SkColor
Definition SkColor.h:37
static void tiny_persp_effect(SkCanvas *canvas)
Definition VertBench.cpp:19
void drawAtlas(const SkImage *atlas, const SkRSXform xform[], const SkRect tex[], const SkColor colors[], int count, SkBlendMode mode, const SkSamplingOptions &sampling, const SkRect *cullRect, const SkPaint *paint)
T * get() const
Definition SkRefCnt.h:303
PODArray< SkColor > colors
Definition SkRecords.h:276

◆ onGetName()

const char * AtlasBench::onGetName ( )
inlineoverrideprotectedvirtual

Implements Benchmark.

Definition at line 194 of file VertBench.cpp.

194{ return fName.c_str(); }
const char * c_str() const
Definition SkString.h:133

The documentation for this class was generated from the following file: