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

Public Member Functions

 VertBench (unsigned flags)
 
- 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 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 ()
 

Private Member Functions

void onDelayedSetup () override
 

Additional Inherited Members

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

Detailed Description

Definition at line 33 of file VertBench.cpp.

Constructor & Destructor Documentation

◆ VertBench()

VertBench::VertBench ( unsigned  flags)
inline

Definition at line 68 of file VertBench.cpp.

68 : fFlags(flags) {
69 const SkScalar dx = SkIntToScalar(W) / COL;
70 const SkScalar dy = SkIntToScalar(H) / COL;
71
72 SkPoint* pts = fPts;
73 uint16_t* idx = fIdx;
74
75 SkScalar yy = 0;
76 for (int y = 0; y <= ROW; y++) {
77 SkScalar xx = 0;
78 for (int x = 0; x <= COL; ++x) {
79 pts->set(xx, yy);
80 pts += 1;
81 xx += dx;
82
83 if (x < COL && y < ROW) {
84 load_2_tris(idx, x, y, COL + 1);
85 for (int i = 0; i < 6; i++) {
86 SkASSERT(idx[i] < PTS);
87 }
88 idx += 6;
89 }
90 }
91 yy += dy;
92 }
93 SkASSERT(PTS == pts - fPts);
94 SkASSERT(IDX == idx - fIdx);
95
96 // We want to store texs in a separate array, so the blitters don't "cheat" and
97 // skip the (normal) step of computing the new local-matrix. This is the common case
98 // we think in the wild (where the texture coordinates are different from the positions.
99 memcpy(fTex, fPts, sizeof(fPts));
100
101 SkRandom rand;
102 for (int i = 0; i < PTS; ++i) {
103 fColors[i] = rand.nextU() | (0xFF << 24);
104 }
105
106 fName.set("verts");
107 if (fFlags & kTexture_VertFlag) {
108 fName.append("_textures");
109 }
110 if (fFlags & kColors_VertFlag) {
111 fName.append("_colors");
112 }
113 if (fFlags & kPersp_VertFlag) {
114 fName.append("_persp");
115 }
116 if (fFlags & kBilerp_VertFlag) {
117 fName.append("_bilerp");
118 }
119 }
#define SkASSERT(cond)
Definition SkAssert.h:116
#define SkIntToScalar(x)
Definition SkScalar.h:57
@ kColors_VertFlag
Definition VertBench.cpp:27
@ kTexture_VertFlag
Definition VertBench.cpp:28
@ kBilerp_VertFlag
Definition VertBench.cpp:30
@ kPersp_VertFlag
Definition VertBench.cpp:29
uint32_t nextU()
Definition SkRandom.h:42
void set(const SkString &src)
Definition SkString.h:186
void append(const char text[])
Definition SkString.h:203
float SkScalar
Definition extension.cpp:12
FlutterSemanticsFlag flags
double y
double x
skia_private::AutoTArray< sk_sp< SkImageFilter > > filters TypedMatrix matrix TypedMatrix matrix SkScalar dx
Definition SkRecords.h:208
Definition SkMD5.cpp:130
void set(float x, float y)

Member Function Documentation

◆ onDelayedSetup()

void VertBench::onDelayedSetup ( )
inlineoverrideprivatevirtual

Reimplemented from Benchmark.

Definition at line 56 of file VertBench.cpp.

56 {
57 if (fFlags & kTexture_VertFlag) {
58 auto img = ToolUtils::GetResourceAsImage("images/mandrill_256.png");
59 if (img) {
62 fShader = img->makeShader(SkSamplingOptions(fm));
63 }
64 }
65 }
SkFilterMode
sk_sp< SkImage > GetResourceAsImage(const char *resource)
Definition DecodeUtils.h:25

◆ onDraw()

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

Implements Benchmark.

Definition at line 123 of file VertBench.cpp.

123 {
125 this->setupPaint(&paint);
126 paint.setShader(fShader);
127
128 if (fFlags & kPersp_VertFlag) {
129 tiny_persp_effect(canvas);
130 }
131
132 const SkPoint* texs = (fFlags & kTexture_VertFlag) ? fTex : nullptr;
133 const SkColor* cols = (fFlags & kColors_VertFlag) ? fColors : nullptr;
135 fPts, texs, cols, IDX, fIdx);
136 for (int i = 0; i < loops; i++) {
138 }
139 }
@ kModulate
r = s*d
uint32_t SkColor
Definition SkColor.h:37
static void tiny_persp_effect(SkCanvas *canvas)
Definition VertBench.cpp:19
virtual void setupPaint(SkPaint *paint)
Definition Benchmark.cpp:55
void drawVertices(const SkVertices *vertices, SkBlendMode mode, const SkPaint &paint)
static sk_sp< SkVertices > MakeCopy(VertexMode mode, int vertexCount, const SkPoint positions[], const SkPoint texs[], const SkColor colors[], int indexCount, const uint16_t indices[])
@ kTriangles_VertexMode
Definition SkVertices.h:31
const Paint & paint
PODArray< SkRect > texs
Definition SkRecords.h:333

◆ onGetName()

const char * VertBench::onGetName ( )
inlineoverrideprotectedvirtual

Implements Benchmark.

Definition at line 122 of file VertBench.cpp.

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

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