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

Public Member Functions

 FileBoundsManagerBench (std::unique_ptr< BoundsManager > manager, const char *managerName)
 
- Public Member Functions inherited from skgpu::graphite::BoundsManagerBench
 BoundsManagerBench (std::unique_ptr< BoundsManager > manager)
 
- Public Member Functions inherited from Benchmark
 Benchmark ()
 
const char * getName ()
 
const char * getUniqueName ()
 
SkISize getSize ()
 
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
 

Private Member Functions

bool isSuitableFor (Backend backend) final
 
void gatherRects (TArray< SkRect > *rects) override
 

Additional Inherited Members

- Public Types inherited from Benchmark
enum class  Backend {
  kNonRendering , kRaster , kGanesh , kGraphite ,
  kPDF , kHWUI
}
 
- Protected Member Functions inherited from skgpu::graphite::BoundsManagerBench
const char * onGetName () final
 
void onDelayedSetup () final
 
void onDraw (int loops, SkCanvas *) final
 
void onPerCanvasPostDraw (SkCanvas *) override
 
void doBench ()
 
- 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 onPreDraw (SkCanvas *)
 
virtual void onPostDraw (SkCanvas *)
 
virtual SkISize onGetSize ()
 
- Protected Attributes inherited from skgpu::graphite::BoundsManagerBench
std::unique_ptr< BoundsManagerfManager
 
SkString fName
 
SkArenaAlloc fAlignedAllocator {0}
 
int fRectCount
 
RectfRects
 
CompressedPaintersOrder fMaxRead
 

Detailed Description

Definition at line 114 of file BoundsManagerBench.cpp.

Constructor & Destructor Documentation

◆ FileBoundsManagerBench()

skgpu::graphite::FileBoundsManagerBench::FileBoundsManagerBench ( std::unique_ptr< BoundsManager manager,
const char *  managerName 
)
inline

Definition at line 116 of file BoundsManagerBench.cpp.

118 : BoundsManagerBench(std::move(manager)) {
119 if (!FLAGS_boundsManagerFile.isEmpty()) {
120 const char* filename = strrchr(FLAGS_boundsManagerFile[0], '/');
121 if (filename) {
122 ++filename;
123 } else {
124 filename = FLAGS_boundsManagerFile[0];
125 }
126 fName.printf("BoundsManager_file_%s_%s", filename, managerName);
127 }
128 }
void printf(const char format[],...) SK_PRINTF_LIKE(2
Definition SkString.cpp:534
BoundsManagerBench(std::unique_ptr< BoundsManager > manager)

Member Function Documentation

◆ gatherRects()

void skgpu::graphite::FileBoundsManagerBench::gatherRects ( TArray< SkRect > *  rects)
inlineoverrideprivatevirtual

Implements skgpu::graphite::BoundsManagerBench.

Definition at line 138 of file BoundsManagerBench.cpp.

138 {
139 if (FLAGS_boundsManagerFile.isEmpty()) {
140 return;
141 }
142 SkRect fileBounds = SkRect::MakeEmpty();
143 auto callback = [&](const SkMatrix& matrix,
144 const SkPath& path,
145 const SkPaint& paint) {
146 if (!paint.canComputeFastBounds() || path.isInverseFillType()) {
147 // These would pessimistically cover the entire canvas, but we don't have enough
148 // info in the benchmark to handle that, so just skip these draws.
149 return;
150 }
151
152 SkRect bounds = path.getBounds();
153 SkRect drawBounds = matrix.mapRect(paint.computeFastBounds(bounds, &bounds));
154 rects->push_back(drawBounds);
155
156 fileBounds.join(drawBounds);
157 };
158
159 const char* path = FLAGS_boundsManagerFile[0];
160 if (const char* ext = strrchr(path, '.'); ext && !strcmp(ext, ".svg")) {
161#if defined(SK_ENABLE_SVG)
163#else
164 SK_ABORT("must compile with svg backend to process svgs");
165#endif
166 } else {
168 }
169
170#if PRINT_DRAWSET_COUNT
171 SkDebugf("%s bounds are [%f %f %f %f]\n",
172 FLAGS_boundsManagerFile[0],
173 fileBounds.fLeft, fileBounds.fTop, fileBounds.fRight, fileBounds.fBottom);
174#endif
175 }
#define SK_ABORT(message,...)
Definition SkAssert.h:70
void SK_SPI SkDebugf(const char format[],...) SK_PRINTF_LIKE(1
const Paint & paint
FlKeyEvent uint64_t FlKeyResponderAsyncCallback callback
unsigned useCenter Optional< SkMatrix > matrix
Definition SkRecords.h:258
Optional< SkRect > bounds
Definition SkRecords.h:189
void ExtractPathsFromSVG(const char filepath[], std::function< PathSniffCallback >)
void ExtractPathsFromSKP(const char filepath[], std::function< PathSniffCallback > callback)
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
Definition switches.h:57
static constexpr SkRect MakeEmpty()
Definition SkRect.h:595
SkScalar fBottom
larger y-axis bounds
Definition extension.cpp:17
SkScalar fLeft
smaller x-axis bounds
Definition extension.cpp:14
SkScalar fRight
larger x-axis bounds
Definition extension.cpp:16
void join(const SkRect &r)
Definition SkRect.cpp:126
SkScalar fTop
smaller y-axis bounds
Definition extension.cpp:15

◆ isSuitableFor()

bool skgpu::graphite::FileBoundsManagerBench::isSuitableFor ( Backend  backend)
inlinefinalprivatevirtual

Reimplemented from skgpu::graphite::BoundsManagerBench.

Definition at line 131 of file BoundsManagerBench.cpp.

131 {
132 if (FLAGS_boundsManagerFile.isEmpty()) {
133 return false;
134 }
135 return BoundsManagerBench::isSuitableFor(backend);
136 }
bool isSuitableFor(Backend backend) override

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