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

Commit

Permalink
Add unittests, some API name changes to confirm with coding style gui…
Browse files Browse the repository at this point in the history
…delines, fix minor bug in GL calculator's drawLine
  • Loading branch information
George Wright committed Feb 17, 2022
1 parent 4feb587 commit 51e92a6
Show file tree
Hide file tree
Showing 10 changed files with 550 additions and 71 deletions.
3 changes: 3 additions & 0 deletions display_list/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ source_set("unittests") {

sources = [
"display_list_canvas_unittests.cc",
"display_list_complexity_unittests.cc",
"display_list_test_utils.cc",
"display_list_test_utils.h",
"display_list_unittests.cc",
]

Expand Down
9 changes: 9 additions & 0 deletions display_list/display_list_complexity.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@ class DisplayListComplexityCalculator {
// Returns whether a given complexity score meets the threshold for
// cacheability for this particular ComplexityCalculator
virtual bool ShouldBeCached(unsigned int complexity_score) = 0;

// Sets a ceiling for the complexity score being calculated. By default
// this is the largest number representable by an unsigned int.
//
// This setting has no effect on non-accumulator based scorers such as
// the Naive calculator.
virtual void SetComplexityCeiling(unsigned int ceiling) = 0;
};

class DisplayListNaiveComplexityCalculator
Expand All @@ -39,6 +46,8 @@ class DisplayListNaiveComplexityCalculator
return complexity_score > 5u;
}

void SetComplexityCeiling(unsigned int ceiling) override {}

private:
DisplayListNaiveComplexityCalculator() {}
static DisplayListNaiveComplexityCalculator* instance_;
Expand Down
5 changes: 3 additions & 2 deletions display_list/display_list_complexity_gl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ namespace flutter {
DisplayListGLComplexityCalculator*
DisplayListGLComplexityCalculator::instance_ = nullptr;

DisplayListComplexityCalculator*
DisplayListGLComplexityCalculator*
DisplayListGLComplexityCalculator::GetInstance() {
if (instance_ == nullptr) {
instance_ = new DisplayListGLComplexityCalculator();
Expand Down Expand Up @@ -70,7 +70,8 @@ void DisplayListGLComplexityCalculator::GLHelper::drawLine(const SkPoint& p0,
// The baseline complexity is for a hairline stroke with no AA
// m = 1/40
// c = 13
unsigned int complexity = (distance + 520) / 2;
unsigned int complexity =
((distance + 520) / 2) * non_hairline_penalty * aa_penalty;

AccumulateComplexity(complexity);
}
Expand Down
6 changes: 4 additions & 2 deletions display_list/display_list_complexity_gl.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace flutter {
class DisplayListGLComplexityCalculator
: public DisplayListComplexityCalculator {
public:
static DisplayListComplexityCalculator* GetInstance();
static DisplayListGLComplexityCalculator* GetInstance();

unsigned int Compute(DisplayList* display_list) override {
GLHelper helper(ceiling_);
Expand All @@ -25,7 +25,9 @@ class DisplayListGLComplexityCalculator
return complexity_score > 200000u;
}

void SetComplexityCeiling(unsigned int ceiling) { ceiling_ = ceiling; }
void SetComplexityCeiling(unsigned int ceiling) override {
ceiling_ = ceiling;
}

private:
class GLHelper : public ComplexityCalculatorHelper {
Expand Down
2 changes: 1 addition & 1 deletion display_list/display_list_complexity_metal.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ namespace flutter {
DisplayListMetalComplexityCalculator*
DisplayListMetalComplexityCalculator::instance_ = nullptr;

DisplayListComplexityCalculator*
DisplayListMetalComplexityCalculator*
DisplayListMetalComplexityCalculator::GetInstance() {
if (instance_ == nullptr) {
instance_ = new DisplayListMetalComplexityCalculator();
Expand Down
6 changes: 4 additions & 2 deletions display_list/display_list_complexity_metal.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace flutter {
class DisplayListMetalComplexityCalculator
: public DisplayListComplexityCalculator {
public:
static DisplayListComplexityCalculator* GetInstance();
static DisplayListMetalComplexityCalculator* GetInstance();

unsigned int Compute(DisplayList* display_list) override {
MetalHelper helper(ceiling_);
Expand All @@ -25,7 +25,9 @@ class DisplayListMetalComplexityCalculator
return complexity_score > 200000u;
}

void SetComplexityCeiling(unsigned int ceiling) { ceiling_ = ceiling; }
void SetComplexityCeiling(unsigned int ceiling) override {
ceiling_ = ceiling;
}

private:
class MetalHelper : public ComplexityCalculatorHelper {
Expand Down
Loading

0 comments on commit 51e92a6

Please sign in to comment.