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

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

Issue 2502373003: stop using SkXfermode -- use SkBlendMode instead (Closed)
Patch Set: 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
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 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 std::unique_ptr<cc::DelegatedFrameData> frame_data( 116 std::unique_ptr<cc::DelegatedFrameData> frame_data(
117 new cc::DelegatedFrameData); 117 new cc::DelegatedFrameData);
118 frame_data->render_pass_list.push_back(std::move(render_pass)); 118 frame_data->render_pass_list.push_back(std::move(render_pass));
119 if (delegate_->IsInHighContrastMode()) { 119 if (delegate_->IsInHighContrastMode()) {
120 std::unique_ptr<cc::RenderPass> invert_pass = cc::RenderPass::Create(); 120 std::unique_ptr<cc::RenderPass> invert_pass = cc::RenderPass::Create();
121 invert_pass->SetNew(cc::RenderPassId(2, 0), output_rect, output_rect, 121 invert_pass->SetNew(cc::RenderPassId(2, 0), output_rect, output_rect,
122 gfx::Transform()); 122 gfx::Transform());
123 cc::SharedQuadState* shared_state = 123 cc::SharedQuadState* shared_state =
124 invert_pass->CreateAndAppendSharedQuadState(); 124 invert_pass->CreateAndAppendSharedQuadState();
125 shared_state->SetAll(gfx::Transform(), output_rect.size(), output_rect, 125 shared_state->SetAll(gfx::Transform(), output_rect.size(), output_rect,
126 output_rect, false, 1.f, SkXfermode::kSrcOver_Mode, 0); 126 output_rect, false, 1.f, SkBlendMode::kSrcOver, 0);
127 auto* quad = invert_pass->CreateAndAppendDrawQuad<cc::RenderPassDrawQuad>(); 127 auto* quad = invert_pass->CreateAndAppendDrawQuad<cc::RenderPassDrawQuad>();
128 cc::FilterOperations filters; 128 cc::FilterOperations filters;
129 filters.Append(cc::FilterOperation::CreateInvertFilter(1.f)); 129 filters.Append(cc::FilterOperation::CreateInvertFilter(1.f));
130 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id, 130 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id,
131 0 /* mask_resource_id */, gfx::Vector2dF() /* mask_uv_scale */, 131 0 /* mask_resource_id */, gfx::Vector2dF() /* mask_uv_scale */,
132 gfx::Size() /* mask_texture_size */, filters, 132 gfx::Size() /* mask_texture_size */, filters,
133 gfx::Vector2dF() /* filters_scale */, 133 gfx::Vector2dF() /* filters_scale */,
134 gfx::PointF() /* filters_origin */, 134 gfx::PointF() /* filters_origin */,
135 cc::FilterOperations() /* background_filters */); 135 cc::FilterOperations() /* background_filters */);
136 frame_data->render_pass_list.push_back(std::move(invert_pass)); 136 frame_data->render_pass_list.push_back(std::move(invert_pass));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 if (default_surface_id.is_valid()) { 175 if (default_surface_id.is_valid()) {
176 gfx::Transform quad_to_target_transform; 176 gfx::Transform quad_to_target_transform;
177 quad_to_target_transform.Translate(absolute_bounds.x(), 177 quad_to_target_transform.Translate(absolute_bounds.x(),
178 absolute_bounds.y()); 178 absolute_bounds.y());
179 179
180 cc::SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); 180 cc::SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState();
181 181
182 const gfx::Rect bounds_at_origin(window->bounds().size()); 182 const gfx::Rect bounds_at_origin(window->bounds().size());
183 // TODO(fsamuel): These clipping and visible rects are incorrect. They need 183 // TODO(fsamuel): These clipping and visible rects are incorrect. They need
184 // to be populated from CompositorFrame structs. 184 // to be populated from CompositorFrame structs.
185 sqs->SetAll(quad_to_target_transform, 185 sqs->SetAll(
186 bounds_at_origin.size() /* layer_bounds */, 186 quad_to_target_transform, bounds_at_origin.size() /* layer_bounds */,
187 bounds_at_origin /* visible_layer_bounds */, 187 bounds_at_origin /* visible_layer_bounds */,
188 bounds_at_origin /* clip_rect */, false /* is_clipped */, 188 bounds_at_origin /* clip_rect */, false /* is_clipped */,
189 combined_opacity, SkXfermode::kSrcOver_Mode, 189 combined_opacity, SkBlendMode::kSrcOver, 0 /* sorting-context_id */);
190 0 /* sorting-context_id */);
191 auto* quad = pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>(); 190 auto* quad = pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>();
192 AddOrUpdateSurfaceReference(mojom::CompositorFrameSinkType::DEFAULT, 191 AddOrUpdateSurfaceReference(mojom::CompositorFrameSinkType::DEFAULT,
193 window); 192 window);
194 quad->SetAll(sqs, bounds_at_origin /* rect */, 193 quad->SetAll(sqs, bounds_at_origin /* rect */,
195 gfx::Rect() /* opaque_rect */, 194 gfx::Rect() /* opaque_rect */,
196 bounds_at_origin /* visible_rect */, true /* needs_blending*/, 195 bounds_at_origin /* visible_rect */, true /* needs_blending*/,
197 default_surface_id); 196 default_surface_id);
198 } 197 }
199 if (underlay_surface_id.is_valid()) { 198 if (underlay_surface_id.is_valid()) {
200 const gfx::Rect underlay_absolute_bounds = 199 const gfx::Rect underlay_absolute_bounds =
201 absolute_bounds - window->underlay_offset(); 200 absolute_bounds - window->underlay_offset();
202 gfx::Transform quad_to_target_transform; 201 gfx::Transform quad_to_target_transform;
203 quad_to_target_transform.Translate(underlay_absolute_bounds.x(), 202 quad_to_target_transform.Translate(underlay_absolute_bounds.x(),
204 underlay_absolute_bounds.y()); 203 underlay_absolute_bounds.y());
205 cc::SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); 204 cc::SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState();
206 const gfx::Rect bounds_at_origin( 205 const gfx::Rect bounds_at_origin(
207 window->compositor_frame_sink_manager()->GetLatestFrameSize( 206 window->compositor_frame_sink_manager()->GetLatestFrameSize(
208 mojom::CompositorFrameSinkType::UNDERLAY)); 207 mojom::CompositorFrameSinkType::UNDERLAY));
209 sqs->SetAll(quad_to_target_transform, 208 sqs->SetAll(
210 bounds_at_origin.size() /* layer_bounds */, 209 quad_to_target_transform, bounds_at_origin.size() /* layer_bounds */,
211 bounds_at_origin /* visible_layer_bounds */, 210 bounds_at_origin /* visible_layer_bounds */,
212 bounds_at_origin /* clip_rect */, false /* is_clipped */, 211 bounds_at_origin /* clip_rect */, false /* is_clipped */,
213 combined_opacity, SkXfermode::kSrcOver_Mode, 212 combined_opacity, SkBlendMode::kSrcOver, 0 /* sorting-context_id */);
214 0 /* sorting-context_id */);
215 213
216 auto* quad = pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>(); 214 auto* quad = pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>();
217 AddOrUpdateSurfaceReference(mojom::CompositorFrameSinkType::UNDERLAY, 215 AddOrUpdateSurfaceReference(mojom::CompositorFrameSinkType::UNDERLAY,
218 window); 216 window);
219 quad->SetAll(sqs, bounds_at_origin /* rect */, 217 quad->SetAll(sqs, bounds_at_origin /* rect */,
220 gfx::Rect() /* opaque_rect */, 218 gfx::Rect() /* opaque_rect */,
221 bounds_at_origin /* visible_rect */, true /* needs_blending*/, 219 bounds_at_origin /* visible_rect */, true /* needs_blending*/,
222 underlay_surface_id); 220 underlay_surface_id);
223 } 221 }
224 } 222 }
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 cc::SurfaceId underlay_surface_id = 302 cc::SurfaceId underlay_surface_id =
305 window->compositor_frame_sink_manager()->GetLatestSurfaceId( 303 window->compositor_frame_sink_manager()->GetLatestSurfaceId(
306 mojom::CompositorFrameSinkType::UNDERLAY); 304 mojom::CompositorFrameSinkType::UNDERLAY);
307 if (underlay_surface_id.is_valid()) 305 if (underlay_surface_id.is_valid())
308 ReleaseFrameSinkReference(underlay_surface_id.frame_sink_id()); 306 ReleaseFrameSinkReference(underlay_surface_id.frame_sink_id());
309 } 307 }
310 308
311 } // namespace ws 309 } // namespace ws
312 310
313 } // namespace ui 311 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698