Flutter Engine
The Flutter Engine
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 * onGetName ()=0
 
virtual const char * onGetUniqueName ()
 
virtual void onDelayedSetup ()
 
virtual void onPerCanvasPreDraw (SkCanvas *)
 
virtual void onPerCanvasPostDraw (SkCanvas *)
 
virtual void onPreDraw (SkCanvas *)
 
virtual void onPostDraw (SkCanvas *)
 
virtual void onDraw (int loops, SkCanvas *)=0
 
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 163 of file VertBench.cpp.

Constructor & Destructor Documentation

◆ AtlasBench()

AtlasBench::AtlasBench ( unsigned  flags)
inline

Definition at line 177 of file VertBench.cpp.

177 : fFlags(flags) {
178 fName.printf("drawAtlas");
179 if (flags & kColors_Flag) {
180 fName.append("_colors");
181 }
182 if (flags & kRotate_Flag) {
183 fName.append("_rotated");
184 }
185 if (flags & kPersp_Flag) {
186 fName.append("_persp");
187 }
188 }
@ kColors_Flag
Definition: VertBench.cpp:158
@ kPersp_Flag
Definition: VertBench.cpp:160
@ kRotate_Flag
Definition: VertBench.cpp:159
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 189 of file VertBench.cpp.

189{}

Member Function Documentation

◆ onDelayedSetup()

void AtlasBench::onDelayedSetup ( )
inlineoverrideprotectedvirtual

Reimplemented from Benchmark.

Definition at line 193 of file VertBench.cpp.

193 {
194 fAtlas = ToolUtils::GetResourceAsImage("images/mandrill_256.png");
195 if (fAtlas) {
196 fAtlas = fAtlas->makeRasterImage();
197 }
198
199 const SkScalar imageW = fAtlas->width();
200 const SkScalar imageH = fAtlas->height();
201 SkScalar scos = 1;
202 SkScalar ssin = 0;
203 if (fFlags & kRotate_Flag) {
204 scos = 0.866025403784439f; // sqrt(3)/2
205 ssin = 0.5f;
206 }
207
208 SkRandom rand;
209 for (int i = 0; i < N; ++i) {
210 fRects[i] = SkRect::MakeXYWH(rand.nextF() * (imageW - 8),
211 rand.nextF() * (imageH - 8), 8, 8);
212 fColors[i] = rand.nextU() | 0xFF000000;
213 fXforms[i] = SkRSXform::Make(scos, ssin, rand.nextF() * W, rand.nextF() * H);
214 }
215 }
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 216 of file VertBench.cpp.

216 {
217 const SkRect* cullRect = nullptr;
218 const SkPaint* paintPtr = nullptr;
219 const SkColor* colors = nullptr;
220 if (fFlags & kColors_Flag) {
221 colors = fColors;
222 }
223 if (fFlags & kPersp_Flag) {
224 tiny_persp_effect(canvas);
225 }
226 for (int i = 0; i < loops; i++) {
227 canvas->drawAtlas(fAtlas.get(), fXforms, fRects, colors, N, SkBlendMode::kModulate,
228 SkSamplingOptions(), cullRect, paintPtr);
229 }
230 }
@ 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)
Definition: SkCanvas.cpp:1810
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 192 of file VertBench.cpp.

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

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