OLD | NEW |
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/texture_uploader.h" | 5 #include "cc/texture_uploader.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/debug/alias.h" | 10 #include "base/debug/alias.h" |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 | 134 |
135 // Use the median as our estimate. | 135 // Use the median as our estimate. |
136 std::multiset<double>::iterator median = m_texturesPerSecondHistory.begin(); | 136 std::multiset<double>::iterator median = m_texturesPerSecondHistory.begin(); |
137 std::advance(median, m_texturesPerSecondHistory.size() / 2); | 137 std::advance(median, m_texturesPerSecondHistory.size() / 2); |
138 TRACE_COUNTER_ID1("cc", "EstimatedTexturesPerSecond", m_context, *median); | 138 TRACE_COUNTER_ID1("cc", "EstimatedTexturesPerSecond", m_context, *median); |
139 return *median; | 139 return *median; |
140 } | 140 } |
141 | 141 |
142 void TextureUploader::beginQuery() | 142 void TextureUploader::beginQuery() |
143 { | 143 { |
144 if (m_availableQueries.isEmpty()) | 144 if (m_availableQueries.empty()) |
145 m_availableQueries.append(Query::create(m_context)); | 145 m_availableQueries.push_back(Query::create(m_context)); |
146 | 146 |
147 m_availableQueries.first()->begin(); | 147 m_availableQueries.front()->begin(); |
148 } | 148 } |
149 | 149 |
150 void TextureUploader::endQuery() | 150 void TextureUploader::endQuery() |
151 { | 151 { |
152 m_availableQueries.first()->end(); | 152 m_availableQueries.front()->end(); |
153 m_pendingQueries.append(m_availableQueries.takeFirst()); | 153 m_pendingQueries.push_back(m_availableQueries.take_front()); |
154 m_numBlockingTextureUploads++; | 154 m_numBlockingTextureUploads++; |
155 } | 155 } |
156 | 156 |
157 void TextureUploader::upload(const uint8* image, | 157 void TextureUploader::upload(const uint8* image, |
158 const gfx::Rect& image_rect, | 158 const gfx::Rect& image_rect, |
159 const gfx::Rect& source_rect, | 159 const gfx::Rect& source_rect, |
160 const gfx::Vector2d& dest_offset, | 160 const gfx::Vector2d& dest_offset, |
161 GLenum format, | 161 GLenum format, |
162 const gfx::Size& size) | 162 const gfx::Size& size) |
163 { | 163 { |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 &image[bytes_per_pixel * (offset.x() + | 326 &image[bytes_per_pixel * (offset.x() + |
327 (offset.y() + row) * image_rect.width())], | 327 (offset.y() + row) * image_rect.width())], |
328 source_rect.width() * bytes_per_pixel); | 328 source_rect.width() * bytes_per_pixel); |
329 } | 329 } |
330 | 330 |
331 m_context->unmapTexSubImage2DCHROMIUM(pixel_dest); | 331 m_context->unmapTexSubImage2DCHROMIUM(pixel_dest); |
332 } | 332 } |
333 | 333 |
334 void TextureUploader::processQueries() | 334 void TextureUploader::processQueries() |
335 { | 335 { |
336 while (!m_pendingQueries.isEmpty()) { | 336 while (!m_pendingQueries.empty()) { |
337 if (m_pendingQueries.first()->isPending()) | 337 if (m_pendingQueries.front()->isPending()) |
338 break; | 338 break; |
339 | 339 |
340 unsigned usElapsed = m_pendingQueries.first()->value(); | 340 unsigned usElapsed = m_pendingQueries.front()->value(); |
341 HISTOGRAM_CUSTOM_COUNTS("Renderer4.TextureGpuUploadTimeUS", usElapsed, 0
, 100000, 50); | 341 HISTOGRAM_CUSTOM_COUNTS("Renderer4.TextureGpuUploadTimeUS", usElapsed, 0
, 100000, 50); |
342 | 342 |
343 if (!m_pendingQueries.first()->isNonBlocking()) | 343 if (!m_pendingQueries.front()->isNonBlocking()) |
344 m_numBlockingTextureUploads--; | 344 m_numBlockingTextureUploads--; |
345 | 345 |
346 // Remove the min and max value from our history and insert the new one. | 346 // Remove the min and max value from our history and insert the new one. |
347 double texturesPerSecond = 1.0 / (usElapsed * 1e-6); | 347 double texturesPerSecond = 1.0 / (usElapsed * 1e-6); |
348 if (m_texturesPerSecondHistory.size() >= uploadHistorySizeMax) { | 348 if (m_texturesPerSecondHistory.size() >= uploadHistorySizeMax) { |
349 m_texturesPerSecondHistory.erase(m_texturesPerSecondHistory.begin())
; | 349 m_texturesPerSecondHistory.erase(m_texturesPerSecondHistory.begin())
; |
350 m_texturesPerSecondHistory.erase(--m_texturesPerSecondHistory.end())
; | 350 m_texturesPerSecondHistory.erase(--m_texturesPerSecondHistory.end())
; |
351 } | 351 } |
352 m_texturesPerSecondHistory.insert(texturesPerSecond); | 352 m_texturesPerSecondHistory.insert(texturesPerSecond); |
353 | 353 |
354 m_availableQueries.append(m_pendingQueries.takeFirst()); | 354 m_availableQueries.push_back(m_pendingQueries.take_front()); |
355 } | 355 } |
356 } | 356 } |
357 | 357 |
358 } // namespace cc | 358 } // namespace cc |
OLD | NEW |