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

Side by Side Diff: cc/resources/tile_manager.cc

Issue 13575007: cc: Changed to prediction histograms in tile manager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 8 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/resources/tile_manager.h" 5 #include "cc/resources/tile_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 905 matching lines...) Expand 10 before | Expand all | Expand 10 after
916 int64 total_pixels_rasterized = 916 int64 total_pixels_rasterized =
917 picture_pile->Raster(&canvas, rect, contents_scale); 917 picture_pile->Raster(&canvas, rect, contents_scale);
918 918
919 base::TimeDelta duration = stats_instrumentation->EndRecording(start_time); 919 base::TimeDelta duration = stats_instrumentation->EndRecording(start_time);
920 920
921 if (stats_instrumentation->record_rendering_stats()) { 921 if (stats_instrumentation->record_rendering_stats()) {
922 stats_instrumentation->AddRaster(duration, 922 stats_instrumentation->AddRaster(duration,
923 total_pixels_rasterized, 923 total_pixels_rasterized,
924 metadata.is_tile_in_pending_tree_now_bin); 924 metadata.is_tile_in_pending_tree_now_bin);
925 925
926 UMA_HISTOGRAM_CUSTOM_COUNTS("Renderer4.PictureRasterTimeMS", 926 HISTOGRAM_CUSTOM_COUNTS("Renderer4.PictureRasterTimeUS",
927 duration.InMilliseconds(), 927 duration.InMicroseconds(),
928 0, 928 0,
929 10, 929 100000,
930 10); 930 100);
931 931
932 if (metadata.prediction_benchmarking) { 932 if (metadata.prediction_benchmarking) {
933 PicturePileImpl::Analysis analysis; 933 PicturePileImpl::Analysis analysis;
934 picture_pile->AnalyzeInRect(rect, contents_scale, &analysis); 934 picture_pile->AnalyzeInRect(rect, contents_scale, &analysis);
935 bool is_predicted_cheap = analysis.is_cheap_to_raster; 935 bool is_predicted_cheap = analysis.is_cheap_to_raster;
936 bool is_actually_cheap = duration.InMillisecondsF() <= 1.0f; 936 bool is_actually_cheap = duration.InMillisecondsF() <= 1.0f;
937 RecordCheapnessPredictorResults(is_predicted_cheap, is_actually_cheap); 937 RecordCheapnessPredictorResults(is_predicted_cheap, is_actually_cheap);
938 938
939 DCHECK_EQ(bitmap.rowBytes(), 939 DCHECK_EQ(bitmap.rowBytes(),
940 static_cast<size_t>(bitmap.width() * bitmap.bytesPerPixel())); 940 static_cast<size_t>(bitmap.width() * bitmap.bytesPerPixel()));
941 941
942 RecordSolidColorPredictorResults( 942 RecordSolidColorPredictorResults(
943 reinterpret_cast<SkColor*>(bitmap.getPixels()), 943 reinterpret_cast<SkColor*>(bitmap.getPixels()),
944 bitmap.getSize() / bitmap.bytesPerPixel(), 944 bitmap.getSize() / bitmap.bytesPerPixel(),
945 analysis.is_solid_color, 945 analysis.is_solid_color,
946 analysis.solid_color, 946 analysis.solid_color,
947 analysis.is_transparent); 947 analysis.is_transparent);
948 } 948 }
949 } 949 }
950 } 950 }
951 951
952 // static 952 // static
953 void TileManager::RecordCheapnessPredictorResults(bool is_predicted_cheap, 953 void TileManager::RecordCheapnessPredictorResults(bool is_predicted_cheap,
954 bool is_actually_cheap) { 954 bool is_actually_cheap) {
955 if (is_predicted_cheap && !is_actually_cheap) 955 if (is_predicted_cheap && !is_actually_cheap)
956 UMA_HISTOGRAM_BOOLEAN("Renderer4.CheapPredictorBadlyWrong", true); 956 HISTOGRAM_BOOLEAN("Renderer4.CheapPredictorBadlyWrong", true);
957 else if (!is_predicted_cheap && is_actually_cheap) 957 else if (!is_predicted_cheap && is_actually_cheap)
958 UMA_HISTOGRAM_BOOLEAN("Renderer4.CheapPredictorSafelyWrong", true); 958 HISTOGRAM_BOOLEAN("Renderer4.CheapPredictorSafelyWrong", true);
959 959
960 UMA_HISTOGRAM_BOOLEAN("Renderer4.CheapPredictorAccuracy", 960 HISTOGRAM_BOOLEAN("Renderer4.CheapPredictorAccuracy",
961 is_predicted_cheap == is_actually_cheap); 961 is_predicted_cheap == is_actually_cheap);
962 } 962 }
963 963
964 // static 964 // static
965 void TileManager::RecordSolidColorPredictorResults( 965 void TileManager::RecordSolidColorPredictorResults(
966 const SkColor* actual_colors, 966 const SkColor* actual_colors,
967 size_t color_count, 967 size_t color_count,
968 bool is_predicted_solid, 968 bool is_predicted_solid,
969 SkColor predicted_color, 969 SkColor predicted_color,
970 bool is_predicted_transparent) { 970 bool is_predicted_transparent) {
971 DCHECK_GT(color_count, 0u); 971 DCHECK_GT(color_count, 0u);
972 972
973 bool is_actually_solid = true; 973 bool is_actually_solid = true;
974 bool is_transparent = true; 974 bool is_transparent = true;
975 975
976 SkColor actual_color = *actual_colors; 976 SkColor actual_color = *actual_colors;
977 for (unsigned int i = 0; i < color_count; ++i) { 977 for (unsigned int i = 0; i < color_count; ++i) {
978 SkColor current_color = actual_colors[i]; 978 SkColor current_color = actual_colors[i];
979 if (current_color != actual_color || 979 if (current_color != actual_color ||
980 SkColorGetA(current_color) != 255) 980 SkColorGetA(current_color) != 255)
981 is_actually_solid = false; 981 is_actually_solid = false;
982 982
983 if (SkColorGetA(current_color) != 0) 983 if (SkColorGetA(current_color) != 0)
984 is_transparent = false; 984 is_transparent = false;
985 985
986 if (!is_actually_solid && !is_transparent) 986 if (!is_actually_solid && !is_transparent)
987 break; 987 break;
988 } 988 }
989 989
990 if (is_predicted_solid && !is_actually_solid) 990 if (is_predicted_solid && !is_actually_solid)
991 UMA_HISTOGRAM_BOOLEAN("Renderer4.ColorPredictor.WrongActualNotSolid", true); 991 HISTOGRAM_BOOLEAN("Renderer4.ColorPredictor.WrongActualNotSolid", true);
enne (OOO) 2013/04/04 20:42:09 I'm not sure I agree that making these not uma his
vmpstr 2013/04/04 20:53:19 These would only be recorded if both gpu-benchmark
992 else if (is_predicted_solid && 992 else if (is_predicted_solid &&
993 is_actually_solid && 993 is_actually_solid &&
994 predicted_color != actual_color) 994 predicted_color != actual_color)
995 UMA_HISTOGRAM_BOOLEAN("Renderer4.ColorPredictor.WrongColor", true); 995 HISTOGRAM_BOOLEAN("Renderer4.ColorPredictor.WrongColor", true);
996 else if (!is_predicted_solid && is_actually_solid) 996 else if (!is_predicted_solid && is_actually_solid)
997 UMA_HISTOGRAM_BOOLEAN("Renderer4.ColorPredictor.WrongActualSolid", true); 997 HISTOGRAM_BOOLEAN("Renderer4.ColorPredictor.WrongActualSolid", true);
998 998
999 bool correct_guess = (is_predicted_solid && is_actually_solid && 999 bool correct_guess = (is_predicted_solid && is_actually_solid &&
1000 predicted_color == actual_color) || 1000 predicted_color == actual_color) ||
1001 (!is_predicted_solid && !is_actually_solid); 1001 (!is_predicted_solid && !is_actually_solid);
1002 UMA_HISTOGRAM_BOOLEAN("Renderer4.ColorPredictor.Accuracy", correct_guess); 1002 HISTOGRAM_BOOLEAN("Renderer4.ColorPredictor.Accuracy", correct_guess);
1003 1003
1004 if (correct_guess) 1004 if (correct_guess)
1005 UMA_HISTOGRAM_BOOLEAN("Renderer4.ColorPredictor.IsCorrectSolid", 1005 HISTOGRAM_BOOLEAN("Renderer4.ColorPredictor.IsCorrectSolid",
1006 is_predicted_solid); 1006 is_predicted_solid);
1007 1007
1008 if (is_predicted_transparent) 1008 if (is_predicted_transparent)
1009 UMA_HISTOGRAM_BOOLEAN( 1009 HISTOGRAM_BOOLEAN("Renderer4.ColorPredictor.PredictedTransparentIsActually",
1010 "Renderer4.ColorPredictor.PredictedTransparentIsActually", 1010 is_transparent);
1011 is_transparent); 1011 HISTOGRAM_BOOLEAN("Renderer4.ColorPredictor.IsActuallyTransparent",
1012 UMA_HISTOGRAM_BOOLEAN("Renderer4.ColorPredictor.IsActuallyTransparent", 1012 is_transparent);
1013 is_transparent);
1014 } 1013 }
1015 1014
1016 // static 1015 // static
1017 void TileManager::RunImageDecodeTask( 1016 void TileManager::RunImageDecodeTask(
1018 skia::LazyPixelRef* pixel_ref, 1017 skia::LazyPixelRef* pixel_ref,
1019 RenderingStatsInstrumentation* stats_instrumentation) { 1018 RenderingStatsInstrumentation* stats_instrumentation) {
1020 TRACE_EVENT0("cc", "TileManager::RunImageDecodeTask"); 1019 TRACE_EVENT0("cc", "TileManager::RunImageDecodeTask");
1021 base::TimeTicks start_time = stats_instrumentation->StartRecording(); 1020 base::TimeTicks start_time = stats_instrumentation->StartRecording();
1022 pixel_ref->Decode(); 1021 pixel_ref->Decode();
1023 base::TimeDelta duration = stats_instrumentation->EndRecording(start_time); 1022 base::TimeDelta duration = stats_instrumentation->EndRecording(start_time);
1024 stats_instrumentation->AddDeferredImageDecode(duration); 1023 stats_instrumentation->AddDeferredImageDecode(duration);
1025 } 1024 }
1026 1025
1027 } // namespace cc 1026 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698