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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImpl.cpp

Issue 2502853003: Make OffscreenCanvas histogram thread safe (Closed)
Patch Set: nits Created 4 years, 1 month 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 | « third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-multiple-worker-commit.html ('k') | 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "platform/graphics/OffscreenCanvasFrameDispatcherImpl.h" 5 #include "platform/graphics/OffscreenCanvasFrameDispatcherImpl.h"
6 6
7 #include "cc/output/compositor_frame.h" 7 #include "cc/output/compositor_frame.h"
8 #include "cc/quads/texture_draw_quad.h" 8 #include "cc/quads/texture_draw_quad.h"
9 #include "gpu/command_buffer/client/gles2_interface.h" 9 #include "gpu/command_buffer/client/gles2_interface.h"
10 #include "platform/CrossThreadFunctional.h" 10 #include "platform/CrossThreadFunctional.h"
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 const bool nearestNeighbor = false; 274 const bool nearestNeighbor = false;
275 quad->SetAll(sqs, bounds, bounds, bounds, needsBlending, resource.id, 275 quad->SetAll(sqs, bounds, bounds, bounds, needsBlending, resource.id,
276 gfx::Size(), premultipliedAlpha, uvTopLeft, uvBottomRight, 276 gfx::Size(), premultipliedAlpha, uvTopLeft, uvBottomRight,
277 SK_ColorTRANSPARENT, vertexOpacity, yflipped, nearestNeighbor, 277 SK_ColorTRANSPARENT, vertexOpacity, yflipped, nearestNeighbor,
278 false); 278 false);
279 279
280 frame.render_pass_list.push_back(std::move(pass)); 280 frame.render_pass_list.push_back(std::move(pass));
281 281
282 double elapsedTime = WTF::monotonicallyIncreasingTime() - commitStartTime; 282 double elapsedTime = WTF::monotonicallyIncreasingTime() - commitStartTime;
283 283
284 // TODO(crbug.com/663916): The off-main-thread metrics are commented-out
285 // because they cause thread check errors (static variable accessed in many
286 // threads)
287 switch (commitType) { 284 switch (commitType) {
288 case CommitGPUCanvasGPUCompositing: 285 case CommitGPUCanvasGPUCompositing:
289 if (isMainThread()) { 286 if (isMainThread()) {
290 DEFINE_STATIC_LOCAL( 287 DEFINE_STATIC_LOCAL(
291 CustomCountHistogram, commitGPUCanvasGPUCompositingMainTimer, 288 CustomCountHistogram, commitGPUCanvasGPUCompositingMainTimer,
292 ("Blink.Canvas.OffscreenCommit.GPUCanvasGPUCompositingMain", 0, 289 ("Blink.Canvas.OffscreenCommit.GPUCanvasGPUCompositingMain", 0,
293 10000000, 50)); 290 10000000, 50));
294 commitGPUCanvasGPUCompositingMainTimer.count(elapsedTime * 1000000.0); 291 commitGPUCanvasGPUCompositingMainTimer.count(elapsedTime * 1000000.0);
295 } /* else { 292 } else {
296 DEFINE_STATIC_LOCAL( 293 DEFINE_THREAD_SAFE_STATIC_LOCAL(
297 CustomCountHistogram, commitGPUCanvasGPUCompositingWorkerTimer, 294 CustomCountHistogram, commitGPUCanvasGPUCompositingWorkerTimer,
298 ("Blink.Canvas.OffscreenCommit.GPUCanvasGPUCompositingWorker", 0, 295 new CustomCountHistogram(
299 10000000, 50)); 296 "Blink.Canvas.OffscreenCommit.GPUCanvasGPUCompositingWorker", 0,
297 10000000, 50));
300 commitGPUCanvasGPUCompositingWorkerTimer.count(elapsedTime * 1000000.0); 298 commitGPUCanvasGPUCompositingWorkerTimer.count(elapsedTime * 1000000.0);
301 } */ 299 }
302 break; 300 break;
303 case CommitGPUCanvasSoftwareCompositing: 301 case CommitGPUCanvasSoftwareCompositing:
304 if (isMainThread()) { 302 if (isMainThread()) {
305 DEFINE_STATIC_LOCAL( 303 DEFINE_STATIC_LOCAL(
306 CustomCountHistogram, commitGPUCanvasSoftwareCompositingMainTimer, 304 CustomCountHistogram, commitGPUCanvasSoftwareCompositingMainTimer,
307 ("Blink.Canvas.OffscreenCommit.GPUCanvasSoftwareCompositingMain", 0, 305 ("Blink.Canvas.OffscreenCommit.GPUCanvasSoftwareCompositingMain", 0,
308 10000000, 50)); 306 10000000, 50));
309 commitGPUCanvasSoftwareCompositingMainTimer.count(elapsedTime * 307 commitGPUCanvasSoftwareCompositingMainTimer.count(elapsedTime *
310 1000000.0); 308 1000000.0);
311 } /* else { 309 } else {
312 DEFINE_STATIC_LOCAL( 310 DEFINE_THREAD_SAFE_STATIC_LOCAL(
313 CustomCountHistogram, commitGPUCanvasSoftwareCompositingWorkerTimer, 311 CustomCountHistogram, commitGPUCanvasSoftwareCompositingWorkerTimer,
314 ("Blink.Canvas.OffscreenCommit.GPUCanvasSoftwareCompositingWorker", 312 new CustomCountHistogram("Blink.Canvas.OffscreenCommit."
315 0, 10000000, 50)); 313 "GPUCanvasSoftwareCompositingWorker",
314 0, 10000000, 50));
316 commitGPUCanvasSoftwareCompositingWorkerTimer.count(elapsedTime * 315 commitGPUCanvasSoftwareCompositingWorkerTimer.count(elapsedTime *
317 1000000.0); 316 1000000.0);
318 } */ 317 }
319 break; 318 break;
320 case CommitSoftwareCanvasGPUCompositing: 319 case CommitSoftwareCanvasGPUCompositing:
321 if (isMainThread()) { 320 if (isMainThread()) {
322 DEFINE_STATIC_LOCAL( 321 DEFINE_STATIC_LOCAL(
323 CustomCountHistogram, commitSoftwareCanvasGPUCompositingMainTimer, 322 CustomCountHistogram, commitSoftwareCanvasGPUCompositingMainTimer,
324 ("Blink.Canvas.OffscreenCommit.SoftwareCanvasGPUCompositingMain", 0, 323 ("Blink.Canvas.OffscreenCommit.SoftwareCanvasGPUCompositingMain", 0,
325 10000000, 50)); 324 10000000, 50));
326 commitSoftwareCanvasGPUCompositingMainTimer.count(elapsedTime * 325 commitSoftwareCanvasGPUCompositingMainTimer.count(elapsedTime *
327 1000000.0); 326 1000000.0);
328 } /* else { 327 } else {
329 DEFINE_STATIC_LOCAL( 328 DEFINE_THREAD_SAFE_STATIC_LOCAL(
330 CustomCountHistogram, commitSoftwareCanvasGPUCompositingWorkerTimer, 329 CustomCountHistogram, commitSoftwareCanvasGPUCompositingWorkerTimer,
331 ("Blink.Canvas.OffscreenCommit.SoftwareCanvasGPUCompositingWorker", 330 new CustomCountHistogram("Blink.Canvas.OffscreenCommit."
332 0, 10000000, 50)); 331 "SoftwareCanvasGPUCompositingWorker",
332 0, 10000000, 50));
333 commitSoftwareCanvasGPUCompositingWorkerTimer.count(elapsedTime * 333 commitSoftwareCanvasGPUCompositingWorkerTimer.count(elapsedTime *
334 1000000.0); 334 1000000.0);
335 } */ 335 }
336 break; 336 break;
337 case CommitSoftwareCanvasSoftwareCompositing: 337 case CommitSoftwareCanvasSoftwareCompositing:
338 if (isMainThread()) { 338 if (isMainThread()) {
339 DEFINE_STATIC_LOCAL(CustomCountHistogram, 339 DEFINE_STATIC_LOCAL(CustomCountHistogram,
340 commitSoftwareCanvasSoftwareCompositingMainTimer, 340 commitSoftwareCanvasSoftwareCompositingMainTimer,
341 ("Blink.Canvas.OffscreenCommit." 341 ("Blink.Canvas.OffscreenCommit."
342 "SoftwareCanvasSoftwareCompositingMain", 342 "SoftwareCanvasSoftwareCompositingMain",
343 0, 10000000, 50)); 343 0, 10000000, 50));
344 commitSoftwareCanvasSoftwareCompositingMainTimer.count(elapsedTime * 344 commitSoftwareCanvasSoftwareCompositingMainTimer.count(elapsedTime *
345 1000000.0); 345 1000000.0);
346 } /* else { 346 } else {
347 DEFINE_STATIC_LOCAL(CustomCountHistogram, 347 DEFINE_THREAD_SAFE_STATIC_LOCAL(
348 commitSoftwareCanvasSoftwareCompositingWorkerTimer, 348 CustomCountHistogram,
349 ("Blink.Canvas.OffscreenCommit." 349 commitSoftwareCanvasSoftwareCompositingWorkerTimer,
350 "SoftwareCanvasSoftwareCompositingWorker", 350 new CustomCountHistogram("Blink.Canvas.OffscreenCommit."
351 0, 10000000, 50)); 351 "SoftwareCanvasSoftwareCompositingWorker",
352 0, 10000000, 50));
352 commitSoftwareCanvasSoftwareCompositingWorkerTimer.count(elapsedTime * 353 commitSoftwareCanvasSoftwareCompositingWorkerTimer.count(elapsedTime *
353 1000000.0); 354 1000000.0);
354 } */ 355 }
355 break; 356 break;
356 case OffscreenCanvasCommitTypeCount: 357 case OffscreenCanvasCommitTypeCount:
357 NOTREACHED(); 358 NOTREACHED();
358 } 359 }
359 360
360 m_sink->SubmitCompositorFrame(std::move(frame)); 361 m_sink->SubmitCompositorFrame(std::move(frame));
361 } 362 }
362 363
363 void OffscreenCanvasFrameDispatcherImpl::DidReceiveCompositorFrameAck() { 364 void OffscreenCanvasFrameDispatcherImpl::DidReceiveCompositorFrameAck() {
364 // TODO(fsamuel): Implement this. 365 // TODO(fsamuel): Implement this.
(...skipping 29 matching lines...) Expand all
394 } 395 }
395 396
396 bool OffscreenCanvasFrameDispatcherImpl::verifyImageSize( 397 bool OffscreenCanvasFrameDispatcherImpl::verifyImageSize(
397 const IntSize imageSize) { 398 const IntSize imageSize) {
398 if (imageSize.width() == m_width && imageSize.height() == m_height) 399 if (imageSize.width() == m_width && imageSize.height() == m_height)
399 return true; 400 return true;
400 return false; 401 return false;
401 } 402 }
402 403
403 } // namespace blink 404 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-multiple-worker-commit.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698