Skip to content

Commit

Permalink
Replaced the indexed initializes
Browse files Browse the repository at this point in the history
Indexed initializes are replaced by inline functions to return the
name needed for each enum.

Bug: chromium:999871
Change-Id: I01818b35813e010e17273ab57e13347feddf939e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1924663
Commit-Queue: Behdad Bakhshinategh <behdadb@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Cr-Commit-Position: refs/heads/master@{#717049}
  • Loading branch information
behdad authored and Commit Bot committed Nov 20, 2019
1 parent 8780a33 commit a108d81
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 91 deletions.
136 changes: 73 additions & 63 deletions cc/metrics/compositor_frame_reporter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -38,65 +38,74 @@ constexpr int kFrameSequenceTrackerTypeCount =

// Names for CompositorFrameReporter::StageType, which should be updated in case
// of changes to the enum.
constexpr const char* kStageNames[] = {
[static_cast<int>(StageType::kBeginImplFrameToSendBeginMainFrame)] =
"BeginImplFrameToSendBeginMainFrame",
[static_cast<int>(StageType::kSendBeginMainFrameToCommit)] =
"SendBeginMainFrameToCommit",
[static_cast<int>(StageType::kCommit)] = "Commit",
[static_cast<int>(StageType::kEndCommitToActivation)] =
"EndCommitToActivation",
[static_cast<int>(StageType::kActivation)] = "Activation",
[static_cast<int>(StageType::kEndActivateToSubmitCompositorFrame)] =
"EndActivateToSubmitCompositorFrame",
[static_cast<int>(
StageType::kSubmitCompositorFrameToPresentationCompositorFrame)] =
"SubmitCompositorFrameToPresentationCompositorFrame",
[static_cast<int>(StageType::kTotalLatency)] = "TotalLatency",
[static_cast<int>(VizBreakdown::kSubmitToReceiveCompositorFrame) +
kVizBreakdownInitialIndex] =
"SubmitCompositorFrameToPresentationCompositorFrame."
"SubmitToReceiveCompositorFrame",
[static_cast<int>(VizBreakdown::kReceivedCompositorFrameToStartDraw) +
kVizBreakdownInitialIndex] =
"SubmitCompositorFrameToPresentationCompositorFrame."
"ReceivedCompositorFrameToStartDraw",
[static_cast<int>(VizBreakdown::kStartDrawToSwapEnd) +
kVizBreakdownInitialIndex] =
"SubmitCompositorFrameToPresentationCompositorFrame.StartDrawToSwapEnd",
[static_cast<int>(VizBreakdown::kSwapEndToPresentationCompositorFrame) +
kVizBreakdownInitialIndex] =
"SubmitCompositorFrameToPresentationCompositorFrame."
"SwapEndToPresentationCompositorFrame",
[static_cast<int>(BlinkBreakdown::kHandleInputEvents) +
kBlinkBreakdownInitialIndex] =
"SendBeginMainFrameToCommit.HandleInputEvents",
[static_cast<int>(BlinkBreakdown::kAnimate) + kBlinkBreakdownInitialIndex] =
"SendBeginMainFrameToCommit.Animate",
[static_cast<int>(BlinkBreakdown::kStyleUpdate) +
kBlinkBreakdownInitialIndex] = "SendBeginMainFrameToCommit.StyleUpdate",
[static_cast<int>(BlinkBreakdown::kLayoutUpdate) +
kBlinkBreakdownInitialIndex] =
"SendBeginMainFrameToCommit.LayoutUpdate",
[static_cast<int>(BlinkBreakdown::kPrepaint) +
kBlinkBreakdownInitialIndex] = "SendBeginMainFrameToCommit.Prepaint",
[static_cast<int>(BlinkBreakdown::kComposite) +
kBlinkBreakdownInitialIndex] = "SendBeginMainFrameToCommit.Composite",
[static_cast<int>(BlinkBreakdown::kPaint) + kBlinkBreakdownInitialIndex] =
"SendBeginMainFrameToCommit.Paint",
[static_cast<int>(BlinkBreakdown::kScrollingCoordinator) +
kBlinkBreakdownInitialIndex] =
"SendBeginMainFrameToCommit.ScrollingCoordinator",
[static_cast<int>(BlinkBreakdown::kCompositeCommit) +
kBlinkBreakdownInitialIndex] =
"SendBeginMainFrameToCommit.CompositeCommit",
[static_cast<int>(BlinkBreakdown::kUpdateLayers) +
kBlinkBreakdownInitialIndex] =
"SendBeginMainFrameToCommit.UpdateLayers"};

static_assert(sizeof(kStageNames) / sizeof(kStageNames[0]) ==
kStageTypeCount + kAllBreakdownCount,
"Compositor latency stages has changed.");
constexpr const char* GetStageName(int stage_type_index) {
switch (stage_type_index) {
case static_cast<int>(StageType::kBeginImplFrameToSendBeginMainFrame):
return "BeginImplFrameToSendBeginMainFrame";
case static_cast<int>(StageType::kSendBeginMainFrameToCommit):
return "SendBeginMainFrameToCommit";
case static_cast<int>(StageType::kCommit):
return "Commit";
case static_cast<int>(StageType::kEndCommitToActivation):
return "EndCommitToActivation";
case static_cast<int>(StageType::kActivation):
return "Activation";
case static_cast<int>(StageType::kEndActivateToSubmitCompositorFrame):
return "EndActivateToSubmitCompositorFrame";
case static_cast<int>(
StageType::kSubmitCompositorFrameToPresentationCompositorFrame):
return "SubmitCompositorFrameToPresentationCompositorFrame";
case static_cast<int>(StageType::kTotalLatency):
return "TotalLatency";
case static_cast<int>(VizBreakdown::kSubmitToReceiveCompositorFrame) +
kVizBreakdownInitialIndex:
return "SubmitCompositorFrameToPresentationCompositorFrame."
"SubmitToReceiveCompositorFrame";
case static_cast<int>(VizBreakdown::kReceivedCompositorFrameToStartDraw) +
kVizBreakdownInitialIndex:
return "SubmitCompositorFrameToPresentationCompositorFrame."
"ReceivedCompositorFrameToStartDraw";
case static_cast<int>(VizBreakdown::kStartDrawToSwapEnd) +
kVizBreakdownInitialIndex:
return "SubmitCompositorFrameToPresentationCompositorFrame."
"StartDrawToSwapEnd";
case static_cast<int>(VizBreakdown::kSwapEndToPresentationCompositorFrame) +
kVizBreakdownInitialIndex:
return "SubmitCompositorFrameToPresentationCompositorFrame."
"SwapEndToPresentationCompositorFrame";
case static_cast<int>(BlinkBreakdown::kHandleInputEvents) +
kBlinkBreakdownInitialIndex:
return "SendBeginMainFrameToCommit.HandleInputEvents";
case static_cast<int>(BlinkBreakdown::kAnimate) +
kBlinkBreakdownInitialIndex:
return "SendBeginMainFrameToCommit.Animate";
case static_cast<int>(BlinkBreakdown::kStyleUpdate) +
kBlinkBreakdownInitialIndex:
return "SendBeginMainFrameToCommit.StyleUpdate";
case static_cast<int>(BlinkBreakdown::kLayoutUpdate) +
kBlinkBreakdownInitialIndex:
return "SendBeginMainFrameToCommit.LayoutUpdate";
case static_cast<int>(BlinkBreakdown::kPrepaint) +
kBlinkBreakdownInitialIndex:
return "SendBeginMainFrameToCommit.Prepaint";
case static_cast<int>(BlinkBreakdown::kComposite) +
kBlinkBreakdownInitialIndex:
return "SendBeginMainFrameToCommit.Composite";
case static_cast<int>(BlinkBreakdown::kPaint) + kBlinkBreakdownInitialIndex:
return "SendBeginMainFrameToCommit.Paint";
case static_cast<int>(BlinkBreakdown::kScrollingCoordinator) +
kBlinkBreakdownInitialIndex:
return "SendBeginMainFrameToCommit.ScrollingCoordinator";
case static_cast<int>(BlinkBreakdown::kCompositeCommit) +
kBlinkBreakdownInitialIndex:
return "SendBeginMainFrameToCommit.CompositeCommit";
case static_cast<int>(BlinkBreakdown::kUpdateLayers) +
kBlinkBreakdownInitialIndex:
return "SendBeginMainFrameToCommit.UpdateLayers";
default:
return "";
}
}

// Names for CompositorFrameReporter::MissedFrameReportTypes, which should be
// updated in case of changes to the enum.
Expand All @@ -122,13 +131,14 @@ std::string HistogramName(const int report_type_index,
const int stage_type_index) {
DCHECK_LE(frame_sequence_tracker_type_index,
FrameSequenceTrackerType::kMaxType);
const char* tracker_type_name = FrameSequenceTracker::
kFrameSequenceTrackerTypeNames[frame_sequence_tracker_type_index];
const char* tracker_type_name =
FrameSequenceTracker::GetFrameSequenceTrackerTypeName(
frame_sequence_tracker_type_index);
DCHECK(tracker_type_name);
return base::StrCat({"CompositorLatency.",
kReportTypeNames[report_type_index], tracker_type_name,
*tracker_type_name ? "." : "",
kStageNames[stage_type_index]});
GetStageName(stage_type_index)});
}
} // namespace

Expand Down Expand Up @@ -164,7 +174,7 @@ void CompositorFrameReporter::StartStage(
CHECK_GE(stage_type_index, 0);
TRACE_EVENT_ASYNC_STEP_INTO_WITH_TIMESTAMP0(
"cc,benchmark", "PipelineReporter", this,
TRACE_STR_COPY(kStageNames[stage_type_index]), start_time);
TRACE_STR_COPY(GetStageName(stage_type_index)), start_time);
}

void CompositorFrameReporter::EndCurrentStage(base::TimeTicks end_time) {
Expand Down
64 changes: 37 additions & 27 deletions cc/metrics/frame_sequence_tracker.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
// This macro is used with DCHECK to provide addition debug info.
#if DCHECK_IS_ON()
#define TRACKER_TRACE_STREAM frame_sequence_trace_
#define TRACKER_DCHECK_MSG \
" in " << kFrameSequenceTrackerTypeNames[this->type_] \
<< " tracker: " << frame_sequence_trace_.str() << " (" \
#define TRACKER_DCHECK_MSG \
" in " << GetFrameSequenceTrackerTypeName(static_cast<int>(this->type_)) \
<< " tracker: " << frame_sequence_trace_.str() << " (" \
<< frame_sequence_trace_.str().size() << ")";
#else
#define TRACKER_TRACE_STREAM EAT_STREAM_PARAMETERS
Expand All @@ -29,17 +29,29 @@

namespace cc {

constexpr const char* FrameSequenceTracker::kFrameSequenceTrackerTypeNames[] = {
[FrameSequenceTrackerType::kCompositorAnimation] = "CompositorAnimation",
[FrameSequenceTrackerType::kMainThreadAnimation] = "MainThreadAnimation",
[FrameSequenceTrackerType::kPinchZoom] = "PinchZoom",
[FrameSequenceTrackerType::kRAF] = "RAF",
[FrameSequenceTrackerType::kTouchScroll] = "TouchScroll",
[FrameSequenceTrackerType::kUniversal] = "Universal",
[FrameSequenceTrackerType::kVideo] = "Video",
[FrameSequenceTrackerType::kWheelScroll] = "WheelScroll",
[FrameSequenceTrackerType::kMaxType] = "",
};
const char* FrameSequenceTracker::GetFrameSequenceTrackerTypeName(
int type_index) {
switch (type_index) {
case static_cast<int>(FrameSequenceTrackerType::kCompositorAnimation):
return "CompositorAnimation";
case static_cast<int>(FrameSequenceTrackerType::kMainThreadAnimation):
return "MainThreadAnimation";
case static_cast<int>(FrameSequenceTrackerType::kPinchZoom):
return "PinchZoom";
case static_cast<int>(FrameSequenceTrackerType::kRAF):
return "RAF";
case static_cast<int>(FrameSequenceTrackerType::kTouchScroll):
return "TouchScroll";
case static_cast<int>(FrameSequenceTrackerType::kUniversal):
return "Universal";
case static_cast<int>(FrameSequenceTrackerType::kVideo):
return "Video";
case static_cast<int>(FrameSequenceTrackerType::kWheelScroll):
return "WheelScroll";
default:
return "";
}
}

namespace {

Expand All @@ -53,8 +65,7 @@ enum class ThreadType {
kSlower,
};

constexpr int kBuiltinSequenceNum =
base::size(FrameSequenceTracker::kFrameSequenceTrackerTypeNames);
constexpr int kBuiltinSequenceNum = FrameSequenceTrackerType::kMaxType + 1;
constexpr int kMaximumHistogramIndex = 3 * kBuiltinSequenceNum;

int GetIndexForMetric(ThreadType thread_type, FrameSequenceTrackerType type) {
Expand All @@ -66,22 +77,22 @@ int GetIndexForMetric(ThreadType thread_type, FrameSequenceTrackerType type) {
}

std::string GetCheckerboardingHistogramName(FrameSequenceTrackerType type) {
return base::StrCat(
{"Graphics.Smoothness.Checkerboarding.",
FrameSequenceTracker::kFrameSequenceTrackerTypeNames[type]});
return base::StrCat({"Graphics.Smoothness.Checkerboarding.",
FrameSequenceTracker::GetFrameSequenceTrackerTypeName(
static_cast<int>(type))});
}

std::string GetThroughputHistogramName(FrameSequenceTrackerType type,
const char* thread_name) {
return base::StrCat(
{"Graphics.Smoothness.Throughput.", thread_name, ".",
FrameSequenceTracker::kFrameSequenceTrackerTypeNames[type]});
return base::StrCat({"Graphics.Smoothness.Throughput.", thread_name, ".",
FrameSequenceTracker::GetFrameSequenceTrackerTypeName(
static_cast<int>(type))});
}

std::string GetFrameSequenceLengthHistogramName(FrameSequenceTrackerType type) {
return base::StrCat(
{"Graphics.Smoothness.FrameSequenceLength.",
FrameSequenceTracker::kFrameSequenceTrackerTypeNames[type]});
return base::StrCat({"Graphics.Smoothness.FrameSequenceLength.",
FrameSequenceTracker::GetFrameSequenceTrackerTypeName(
static_cast<int>(type))});
}

} // namespace
Expand Down Expand Up @@ -229,8 +240,7 @@ FrameSequenceTracker::FrameSequenceTracker(FrameSequenceTrackerType type)
DCHECK_LT(type_, FrameSequenceTrackerType::kMaxType);
TRACE_EVENT_ASYNC_BEGIN1(
"cc,benchmark", "FrameSequenceTracker", this, "name",
TRACE_STR_COPY(
FrameSequenceTracker::kFrameSequenceTrackerTypeNames[type_]));
TRACE_STR_COPY(GetFrameSequenceTrackerTypeName(static_cast<int>(type_))));
}

FrameSequenceTracker::~FrameSequenceTracker() {
Expand Down
2 changes: 1 addition & 1 deletion cc/metrics/frame_sequence_tracker.h
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ class CC_EXPORT FrameSequenceTracker {
kReadyForTermination,
};

static const char* const kFrameSequenceTrackerTypeNames[];
static const char* GetFrameSequenceTrackerTypeName(int type_index);

~FrameSequenceTracker();

Expand Down

0 comments on commit a108d81

Please sign in to comment.