OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/managed_tile_state.h" | 5 #include "cc/resources/managed_tile_state.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/debug/trace_event_argument.h" | 10 #include "base/debug/trace_event_argument.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 case NEVER_BIN: | 31 case NEVER_BIN: |
32 return "NEVER_BIN"; | 32 return "NEVER_BIN"; |
33 case NUM_BINS: | 33 case NUM_BINS: |
34 NOTREACHED(); | 34 NOTREACHED(); |
35 return "Invalid Bin (NUM_BINS)"; | 35 return "Invalid Bin (NUM_BINS)"; |
36 } | 36 } |
37 return "Invalid Bin (UNKNOWN)"; | 37 return "Invalid Bin (UNKNOWN)"; |
38 } | 38 } |
39 | 39 |
40 ManagedTileState::ManagedTileState() | 40 ManagedTileState::ManagedTileState() |
41 : raster_mode(LOW_QUALITY_RASTER_MODE), | 41 : bin(NEVER_BIN), |
42 bin(NEVER_BIN), | |
43 resolution(NON_IDEAL_RESOLUTION), | 42 resolution(NON_IDEAL_RESOLUTION), |
44 required_for_activation(false), | 43 required_for_activation(false), |
45 priority_bin(TilePriority::EVENTUALLY), | 44 priority_bin(TilePriority::EVENTUALLY), |
46 distance_to_visible(std::numeric_limits<float>::infinity()), | 45 distance_to_visible(std::numeric_limits<float>::infinity()), |
47 visible_and_ready_to_draw(false), | 46 visible_and_ready_to_draw(false), |
48 scheduled_priority(0) {} | 47 scheduled_priority(0) { |
| 48 } |
49 | 49 |
50 ManagedTileState::TileVersion::TileVersion() | 50 ManagedTileState::DrawInfo::DrawInfo() |
51 : mode_(RESOURCE_MODE), solid_color_(SK_ColorWHITE) { | 51 : mode_(RESOURCE_MODE), solid_color_(SK_ColorWHITE) { |
52 } | 52 } |
53 | 53 |
54 ManagedTileState::TileVersion::~TileVersion() { DCHECK(!resource_); } | 54 ManagedTileState::DrawInfo::~DrawInfo() { |
| 55 DCHECK(!resource_); |
| 56 } |
55 | 57 |
56 bool ManagedTileState::TileVersion::IsReadyToDraw() const { | 58 bool ManagedTileState::DrawInfo::IsReadyToDraw() const { |
57 switch (mode_) { | 59 switch (mode_) { |
58 case RESOURCE_MODE: | 60 case RESOURCE_MODE: |
59 return !!resource_; | 61 return !!resource_; |
60 case SOLID_COLOR_MODE: | 62 case SOLID_COLOR_MODE: |
61 case PICTURE_PILE_MODE: | 63 case PICTURE_PILE_MODE: |
62 return true; | 64 return true; |
63 } | 65 } |
64 NOTREACHED(); | 66 NOTREACHED(); |
65 return false; | 67 return false; |
66 } | 68 } |
67 | 69 |
68 size_t ManagedTileState::TileVersion::GPUMemoryUsageInBytes() const { | |
69 if (!resource_) | |
70 return 0; | |
71 return resource_->bytes(); | |
72 } | |
73 | |
74 ManagedTileState::~ManagedTileState() {} | 70 ManagedTileState::~ManagedTileState() {} |
75 | 71 |
76 void ManagedTileState::AsValueInto(base::debug::TracedValue* state) const { | 72 void ManagedTileState::AsValueInto(base::debug::TracedValue* state) const { |
77 bool has_resource = false; | 73 bool has_resource = (draw_info.resource_.get() != 0); |
78 bool has_active_task = false; | 74 bool has_active_task = (raster_task.get() != 0); |
79 for (int mode = 0; mode < NUM_RASTER_MODES; ++mode) { | |
80 has_resource |= (tile_versions[mode].resource_.get() != 0); | |
81 has_active_task |= (tile_versions[mode].raster_task_.get() != 0); | |
82 } | |
83 | 75 |
84 bool is_using_gpu_memory = has_resource || has_active_task; | 76 bool is_using_gpu_memory = has_resource || has_active_task; |
85 | 77 |
86 state->SetBoolean("has_resource", has_resource); | 78 state->SetBoolean("has_resource", has_resource); |
87 state->SetBoolean("is_using_gpu_memory", is_using_gpu_memory); | 79 state->SetBoolean("is_using_gpu_memory", is_using_gpu_memory); |
88 state->SetString("bin", ManagedTileBinToString(bin)); | 80 state->SetString("bin", ManagedTileBinToString(bin)); |
89 state->SetString("resolution", TileResolutionToString(resolution)); | 81 state->SetString("resolution", TileResolutionToString(resolution)); |
90 state->SetString("priority_bin", TilePriorityBinToString(priority_bin)); | 82 state->SetString("priority_bin", TilePriorityBinToString(priority_bin)); |
91 state->SetDouble("distance_to_visible", | 83 state->SetDouble("distance_to_visible", |
92 MathUtil::AsFloatSafely(distance_to_visible)); | 84 MathUtil::AsFloatSafely(distance_to_visible)); |
93 state->SetBoolean("required_for_activation", required_for_activation); | 85 state->SetBoolean("required_for_activation", required_for_activation); |
94 state->SetBoolean( | 86 state->SetBoolean("is_solid_color", |
95 "is_solid_color", | 87 draw_info.mode_ == DrawInfo::SOLID_COLOR_MODE); |
96 tile_versions[raster_mode].mode_ == TileVersion::SOLID_COLOR_MODE); | 88 state->SetBoolean("is_transparent", |
97 state->SetBoolean( | 89 draw_info.mode_ == DrawInfo::SOLID_COLOR_MODE && |
98 "is_transparent", | 90 !SkColorGetA(draw_info.solid_color_)); |
99 tile_versions[raster_mode].mode_ == TileVersion::SOLID_COLOR_MODE && | |
100 !SkColorGetA(tile_versions[raster_mode].solid_color_)); | |
101 state->SetInteger("scheduled_priority", scheduled_priority); | 91 state->SetInteger("scheduled_priority", scheduled_priority); |
102 } | 92 } |
103 | 93 |
104 } // namespace cc | 94 } // namespace cc |
OLD | NEW |