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 "ash/laser/laser_pointer_view.h" | 5 #include "ash/laser/laser_pointer_view.h" |
6 | 6 |
7 #include <GLES2/gl2.h> | 7 #include <GLES2/gl2.h> |
8 #include <GLES2/gl2ext.h> | 8 #include <GLES2/gl2ext.h> |
9 #include <GLES2/gl2extchromium.h> | 9 #include <GLES2/gl2extchromium.h> |
10 | 10 |
11 #include <algorithm> | 11 #include <algorithm> |
12 #include <array> | 12 #include <array> |
13 #include <cmath> | 13 #include <cmath> |
14 #include <memory> | 14 #include <memory> |
15 | 15 |
16 #include "ash/laser/laser_pointer_points.h" | 16 #include "ash/laser/laser_pointer_points.h" |
17 #include "ash/laser/laser_segment_utils.h" | 17 #include "ash/laser/laser_segment_utils.h" |
18 #include "ash/public/cpp/shell_window_ids.h" | 18 #include "ash/public/cpp/shell_window_ids.h" |
19 #include "ash/shell.h" | 19 #include "ash/shell.h" |
20 #include "base/containers/adapters.h" | 20 #include "base/containers/adapters.h" |
21 #include "base/threading/thread_task_runner_handle.h" | 21 #include "base/threading/thread_task_runner_handle.h" |
22 #include "base/timer/timer.h" | 22 #include "base/timer/timer.h" |
23 #include "base/trace_event/trace_event.h" | 23 #include "base/trace_event/trace_event.h" |
| 24 #include "cc/output/begin_frame_args.h" |
24 #include "cc/output/context_provider.h" | 25 #include "cc/output/context_provider.h" |
25 #include "cc/quads/texture_draw_quad.h" | 26 #include "cc/quads/texture_draw_quad.h" |
26 #include "cc/resources/transferable_resource.h" | 27 #include "cc/resources/transferable_resource.h" |
27 #include "cc/surfaces/surface.h" | 28 #include "cc/surfaces/surface.h" |
28 #include "cc/surfaces/surface_manager.h" | 29 #include "cc/surfaces/surface_manager.h" |
29 #include "gpu/command_buffer/client/context_support.h" | 30 #include "gpu/command_buffer/client/context_support.h" |
30 #include "gpu/command_buffer/client/gles2_interface.h" | 31 #include "gpu/command_buffer/client/gles2_interface.h" |
31 #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h" | 32 #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h" |
32 #include "third_party/skia/include/core/SkColor.h" | 33 #include "third_party/skia/include/core/SkColor.h" |
33 #include "third_party/skia/include/core/SkTypes.h" | 34 #include "third_party/skia/include/core/SkTypes.h" |
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
383 void LaserPointerView::SetNeedsBeginFrame(bool needs_begin_frame) { | 384 void LaserPointerView::SetNeedsBeginFrame(bool needs_begin_frame) { |
384 frame_sink_support_.SetNeedsBeginFrame(needs_begin_frame); | 385 frame_sink_support_.SetNeedsBeginFrame(needs_begin_frame); |
385 } | 386 } |
386 | 387 |
387 void LaserPointerView::SubmitCompositorFrame( | 388 void LaserPointerView::SubmitCompositorFrame( |
388 const cc::LocalSurfaceId& local_surface_id, | 389 const cc::LocalSurfaceId& local_surface_id, |
389 cc::CompositorFrame frame) { | 390 cc::CompositorFrame frame) { |
390 frame_sink_support_.SubmitCompositorFrame(local_surface_id, std::move(frame)); | 391 frame_sink_support_.SubmitCompositorFrame(local_surface_id, std::move(frame)); |
391 } | 392 } |
392 | 393 |
| 394 void LaserPointerView::BeginFrameDidNotSwap( |
| 395 const cc::BeginFrameAck& begin_frame_ack) { |
| 396 frame_sink_support_.BeginFrameDidNotSwap(begin_frame_ack); |
| 397 } |
| 398 |
393 void LaserPointerView::EvictFrame() { | 399 void LaserPointerView::EvictFrame() { |
394 frame_sink_support_.EvictFrame(); | 400 frame_sink_support_.EvictFrame(); |
395 } | 401 } |
396 | 402 |
397 void LaserPointerView::DidReceiveCompositorFrameAck() { | 403 void LaserPointerView::DidReceiveCompositorFrameAck() { |
398 base::ThreadTaskRunnerHandle::Get()->PostTask( | 404 base::ThreadTaskRunnerHandle::Get()->PostTask( |
399 FROM_HERE, base::Bind(&LaserPointerView::OnDidDrawSurface, | 405 FROM_HERE, base::Bind(&LaserPointerView::OnDidDrawSurface, |
400 weak_ptr_factory_.GetWeakPtr())); | 406 weak_ptr_factory_.GetWeakPtr())); |
401 } | 407 } |
402 | 408 |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
671 gfx::Transform()); | 677 gfx::Transform()); |
672 surface_damage_rect_ = gfx::Rect(); | 678 surface_damage_rect_ = gfx::Rect(); |
673 | 679 |
674 cc::SharedQuadState* quad_state = | 680 cc::SharedQuadState* quad_state = |
675 render_pass->CreateAndAppendSharedQuadState(); | 681 render_pass->CreateAndAppendSharedQuadState(); |
676 quad_state->quad_layer_bounds = quad_rect.size(); | 682 quad_state->quad_layer_bounds = quad_rect.size(); |
677 quad_state->visible_quad_layer_rect = quad_rect; | 683 quad_state->visible_quad_layer_rect = quad_rect; |
678 quad_state->opacity = 1.0f; | 684 quad_state->opacity = 1.0f; |
679 | 685 |
680 cc::CompositorFrame frame; | 686 cc::CompositorFrame frame; |
| 687 // TODO(eseckler): LaserPointerView should use BeginFrames and set the ack |
| 688 // accordingly. |
| 689 frame.metadata.begin_frame_ack = |
| 690 cc::BeginFrameAck(cc::BeginFrameArgs::kManualSourceId, |
| 691 cc::BeginFrameArgs::kStartingFrameNumber, |
| 692 cc::BeginFrameArgs::kStartingFrameNumber, 0, true); |
681 cc::TextureDrawQuad* texture_quad = | 693 cc::TextureDrawQuad* texture_quad = |
682 render_pass->CreateAndAppendDrawQuad<cc::TextureDrawQuad>(); | 694 render_pass->CreateAndAppendDrawQuad<cc::TextureDrawQuad>(); |
683 float vertex_opacity[4] = {1.0, 1.0, 1.0, 1.0}; | 695 float vertex_opacity[4] = {1.0, 1.0, 1.0, 1.0}; |
684 gfx::PointF uv_top_left(0.f, 0.f); | 696 gfx::PointF uv_top_left(0.f, 0.f); |
685 gfx::PointF uv_bottom_right(1.f, 1.f); | 697 gfx::PointF uv_bottom_right(1.f, 1.f); |
686 texture_quad->SetNew(quad_state, quad_rect, gfx::Rect(), quad_rect, | 698 texture_quad->SetNew(quad_state, quad_rect, gfx::Rect(), quad_rect, |
687 transferable_resource.id, true, uv_top_left, | 699 transferable_resource.id, true, uv_top_left, |
688 uv_bottom_right, SK_ColorTRANSPARENT, vertex_opacity, | 700 uv_bottom_right, SK_ColorTRANSPARENT, vertex_opacity, |
689 false, false, false); | 701 false, false, false); |
690 texture_quad->set_resource_size_in_pixels(transferable_resource.size); | 702 texture_quad->set_resource_size_in_pixels(transferable_resource.size); |
(...skipping 21 matching lines...) Expand all Loading... |
712 pending_draw_surface_ = true; | 724 pending_draw_surface_ = true; |
713 } | 725 } |
714 | 726 |
715 void LaserPointerView::OnDidDrawSurface() { | 727 void LaserPointerView::OnDidDrawSurface() { |
716 pending_draw_surface_ = false; | 728 pending_draw_surface_ = false; |
717 if (needs_update_surface_) | 729 if (needs_update_surface_) |
718 UpdateSurface(); | 730 UpdateSurface(); |
719 } | 731 } |
720 | 732 |
721 } // namespace ash | 733 } // namespace ash |
OLD | NEW |