Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(861)

Unified Diff: cc/tiles/tile_manager.cc

Issue 2385253002: Split up software and gpu raster time UMA stats (Closed)
Patch Set: Using histogram suffixes Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | tools/metrics/histograms/histograms.xml » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/tiles/tile_manager.cc
diff --git a/cc/tiles/tile_manager.cc b/cc/tiles/tile_manager.cc
index ea9b32c3523f664ec2576a7b1bce47bb939ef247..56f6664c6df4d272c77c4adba09bfbcd2f944617 100644
--- a/cc/tiles/tile_manager.cc
+++ b/cc/tiles/tile_manager.cc
@@ -18,6 +18,7 @@
#include "base/memory/ptr_util.h"
#include "base/metrics/histogram.h"
#include "base/numerics/safe_conversions.h"
+#include "base/optional.h"
#include "base/threading/thread_checker.h"
#include "base/trace_event/trace_event_argument.h"
#include "cc/base/histograms.h"
@@ -37,11 +38,46 @@ namespace {
// a tile is of solid color.
const bool kUseColorEstimator = true;
+// TODO(enne): remove this histogram and its monitoring in M58 once there is
+// enough new data from the other two raster task timers.
DEFINE_SCOPED_UMA_HISTOGRAM_AREA_TIMER(
- ScopedRasterTaskTimer,
+ ScopedGeneralRasterTaskTimer,
"Compositing.%s.RasterTask.RasterUs",
"Compositing.%s.RasterTask.RasterPixelsPerMs");
+DEFINE_SCOPED_UMA_HISTOGRAM_AREA_TIMER(
+ ScopedSoftwareRasterTaskTimer,
+ "Compositing.%s.RasterTask.RasterUs.Software",
+ "Compositing.%s.RasterTask.RasterPixelsPerMs.Software");
+
+DEFINE_SCOPED_UMA_HISTOGRAM_AREA_TIMER(
+ ScopedGpuRasterTaskTimer,
+ "Compositing.%s.RasterTask.RasterUs.Gpu",
+ "Compositing.%s.RasterTask.RasterPixelsPerMs.Gpu");
+
+class ScopedRasterTaskTimer {
+ public:
+ explicit ScopedRasterTaskTimer(bool use_gpu_rasterization) {
+ if (use_gpu_rasterization)
+ gpu_timer_.emplace();
+ else
+ software_timer_.emplace();
+ }
+
+ void SetArea(int area) {
+ general_timer_.SetArea(area);
+ if (software_timer_)
+ software_timer_->SetArea(area);
+ if (gpu_timer_)
+ gpu_timer_->SetArea(area);
+ }
+
+ private:
+ ScopedGeneralRasterTaskTimer general_timer_;
+ base::Optional<ScopedSoftwareRasterTaskTimer> software_timer_;
+ base::Optional<ScopedGpuRasterTaskTimer> gpu_timer_;
+};
+
class RasterTaskImpl : public TileTask {
public:
RasterTaskImpl(TileManager* tile_manager,
@@ -54,8 +90,8 @@ class RasterTaskImpl : public TileTask {
uint64_t source_prepare_tiles_id,
std::unique_ptr<RasterBuffer> raster_buffer,
TileTask::Vector* dependencies,
- bool supports_concurrent_execution)
- : TileTask(supports_concurrent_execution, dependencies),
+ bool is_gpu_rasterization)
+ : TileTask(!is_gpu_rasterization, dependencies),
tile_manager_(tile_manager),
tile_(tile),
resource_(resource),
@@ -70,6 +106,7 @@ class RasterTaskImpl : public TileTask {
tile_tracing_id_(static_cast<void*>(tile)),
new_content_id_(tile->id()),
source_frame_number_(tile->source_frame_number()),
+ is_gpu_rasterization_(is_gpu_rasterization),
raster_buffer_(std::move(raster_buffer)) {
DCHECK(origin_thread_checker_.CalledOnValidThread());
}
@@ -84,7 +121,7 @@ class RasterTaskImpl : public TileTask {
frame_viewer_instrumentation::ScopedRasterTask raster_task(
tile_tracing_id_, tile_resolution_, source_frame_number_, layer_id_);
- ScopedRasterTaskTimer timer;
+ ScopedRasterTaskTimer timer(is_gpu_rasterization_);
timer.SetArea(content_rect_.size().GetArea());
DCHECK(raster_source_);
@@ -133,6 +170,7 @@ class RasterTaskImpl : public TileTask {
void* tile_tracing_id_;
uint64_t new_content_id_;
int source_frame_number_;
+ bool is_gpu_rasterization_;
std::unique_ptr<RasterBuffer> raster_buffer_;
DISALLOW_COPY_AND_ASSIGN(RasterTaskImpl);
@@ -973,7 +1011,6 @@ scoped_refptr<TileTask> TileManager::CreateRasterTask(
prepare_tiles_count_, prioritized_tile.priority().priority_bin);
image_manager_.GetTasksForImagesAndRef(&images, &decode_tasks, tracing_info);
- bool supports_concurrent_execution = !use_gpu_rasterization_;
std::unique_ptr<RasterBuffer> raster_buffer =
raster_buffer_provider_->AcquireBufferForRaster(
resource, resource_content_id, tile->invalidated_id());
@@ -981,7 +1018,7 @@ scoped_refptr<TileTask> TileManager::CreateRasterTask(
this, tile, resource, prioritized_tile.raster_source(), playback_settings,
prioritized_tile.priority().resolution, invalidated_rect,
prepare_tiles_count_, std::move(raster_buffer), &decode_tasks,
- supports_concurrent_execution));
+ use_gpu_rasterization_));
}
void TileManager::OnRasterTaskCompleted(
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | tools/metrics/histograms/histograms.xml » ('J')

Powered by Google App Engine
This is Rietveld 408576698