OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |