| 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 "services/ui/ws/frame_generator.h" | 5 #include "services/ui/ws/frame_generator.h" |
| 6 | 6 |
| 7 #include "base/containers/adapters.h" | 7 #include "base/containers/adapters.h" |
| 8 #include "cc/output/compositor_frame.h" | 8 #include "cc/output/compositor_frame.h" |
| 9 #include "cc/quads/render_pass.h" | 9 #include "cc/quads/render_pass.h" |
| 10 #include "cc/quads/render_pass_draw_quad.h" | 10 #include "cc/quads/render_pass_draw_quad.h" |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 const cc::ReturnedResourceArray& resources) { | 123 const cc::ReturnedResourceArray& resources) { |
| 124 // Nothing to do here because FrameGenerator CompositorFrames don't reference | 124 // Nothing to do here because FrameGenerator CompositorFrames don't reference |
| 125 // any resources. | 125 // any resources. |
| 126 } | 126 } |
| 127 | 127 |
| 128 cc::CompositorFrame FrameGenerator::GenerateCompositorFrame( | 128 cc::CompositorFrame FrameGenerator::GenerateCompositorFrame( |
| 129 const gfx::Rect& output_rect) { | 129 const gfx::Rect& output_rect) { |
| 130 const cc::RenderPassId render_pass_id(1, 1); | 130 const cc::RenderPassId render_pass_id(1, 1); |
| 131 std::unique_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create(); | 131 std::unique_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create(); |
| 132 render_pass->SetNew(render_pass_id, output_rect, output_rect, | 132 render_pass->SetNew(render_pass_id, output_rect, output_rect, |
| 133 gfx::Transform()); | 133 gfx::Transform(), cc::FilterOperations(), |
| 134 cc::FilterOperations()); |
| 134 | 135 |
| 135 DrawWindowTree(render_pass.get(), root_window_, gfx::Vector2d(), 1.0f); | 136 DrawWindowTree(render_pass.get(), root_window_, gfx::Vector2d(), 1.0f); |
| 136 | 137 |
| 137 cc::CompositorFrame frame; | 138 cc::CompositorFrame frame; |
| 138 frame.render_pass_list.push_back(std::move(render_pass)); | 139 frame.render_pass_list.push_back(std::move(render_pass)); |
| 139 if (delegate_->IsInHighContrastMode()) { | 140 if (delegate_->IsInHighContrastMode()) { |
| 140 std::unique_ptr<cc::RenderPass> invert_pass = cc::RenderPass::Create(); | 141 std::unique_ptr<cc::RenderPass> invert_pass = cc::RenderPass::Create(); |
| 141 invert_pass->SetNew(cc::RenderPassId(2, 0), output_rect, output_rect, | 142 invert_pass->SetNew(cc::RenderPassId(2, 0), output_rect, output_rect, |
| 142 gfx::Transform()); | 143 gfx::Transform(), cc::FilterOperations(), |
| 144 cc::FilterOperations()); |
| 143 cc::SharedQuadState* shared_state = | 145 cc::SharedQuadState* shared_state = |
| 144 invert_pass->CreateAndAppendSharedQuadState(); | 146 invert_pass->CreateAndAppendSharedQuadState(); |
| 145 shared_state->SetAll(gfx::Transform(), output_rect.size(), output_rect, | 147 shared_state->SetAll(gfx::Transform(), output_rect.size(), output_rect, |
| 146 output_rect, false, 1.f, SkBlendMode::kSrcOver, 0); | 148 output_rect, false, 1.f, SkBlendMode::kSrcOver, 0); |
| 147 auto* quad = invert_pass->CreateAndAppendDrawQuad<cc::RenderPassDrawQuad>(); | 149 auto* quad = invert_pass->CreateAndAppendDrawQuad<cc::RenderPassDrawQuad>(); |
| 148 cc::FilterOperations filters; | 150 render_pass->filters.Append(cc::FilterOperation::CreateInvertFilter(1.f)); |
| 149 filters.Append(cc::FilterOperation::CreateInvertFilter(1.f)); | |
| 150 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id, | 151 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id, |
| 151 0 /* mask_resource_id */, gfx::Vector2dF() /* mask_uv_scale */, | 152 0 /* mask_resource_id */, gfx::Vector2dF() /* mask_uv_scale */, |
| 152 gfx::Size() /* mask_texture_size */, filters, | 153 gfx::Size() /* mask_texture_size */, |
| 153 gfx::Vector2dF() /* filters_scale */, | 154 gfx::Vector2dF() /* filters_scale */, |
| 154 gfx::PointF() /* filters_origin */, | 155 gfx::PointF() /* filters_origin */); |
| 155 cc::FilterOperations() /* background_filters */); | |
| 156 frame.render_pass_list.push_back(std::move(invert_pass)); | 156 frame.render_pass_list.push_back(std::move(invert_pass)); |
| 157 } | 157 } |
| 158 | 158 |
| 159 return frame; | 159 return frame; |
| 160 } | 160 } |
| 161 | 161 |
| 162 void FrameGenerator::DrawWindowTree( | 162 void FrameGenerator::DrawWindowTree( |
| 163 cc::RenderPass* pass, | 163 cc::RenderPass* pass, |
| 164 ServerWindow* window, | 164 ServerWindow* window, |
| 165 const gfx::Vector2d& parent_to_root_origin_offset, | 165 const gfx::Vector2d& parent_to_root_origin_offset, |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 353 cc::SurfaceId underlay_surface_id = | 353 cc::SurfaceId underlay_surface_id = |
| 354 window->compositor_frame_sink_manager()->GetLatestSurfaceId( | 354 window->compositor_frame_sink_manager()->GetLatestSurfaceId( |
| 355 mojom::CompositorFrameSinkType::UNDERLAY); | 355 mojom::CompositorFrameSinkType::UNDERLAY); |
| 356 if (underlay_surface_id.is_valid()) | 356 if (underlay_surface_id.is_valid()) |
| 357 RemoveFrameSinkReference(underlay_surface_id.frame_sink_id()); | 357 RemoveFrameSinkReference(underlay_surface_id.frame_sink_id()); |
| 358 } | 358 } |
| 359 | 359 |
| 360 } // namespace ws | 360 } // namespace ws |
| 361 | 361 |
| 362 } // namespace ui | 362 } // namespace ui |
| OLD | NEW |