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

Side by Side Diff: services/ui/ws/frame_generator.cc

Issue 2543473004: cc: Move filters from RenderPassDrawQuad to RenderPass (Closed)
Patch Set: Created 4 years 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
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 "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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698