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

Side by Side Diff: components/mus/public/cpp/surfaces/surfaces_type_converters.cc

Issue 2008193002: Change mojo geometry structs from using type converters to StructTraits. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 6 months 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/mus/public/cpp/surfaces/surfaces_type_converters.h" 5 #include "components/mus/public/cpp/surfaces/surfaces_type_converters.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "cc/output/compositor_frame.h" 13 #include "cc/output/compositor_frame.h"
14 #include "cc/output/compositor_frame_metadata.h" 14 #include "cc/output/compositor_frame_metadata.h"
15 #include "cc/output/delegated_frame_data.h" 15 #include "cc/output/delegated_frame_data.h"
16 #include "cc/quads/debug_border_draw_quad.h" 16 #include "cc/quads/debug_border_draw_quad.h"
17 #include "cc/quads/draw_quad.h" 17 #include "cc/quads/draw_quad.h"
18 #include "cc/quads/render_pass.h" 18 #include "cc/quads/render_pass.h"
19 #include "cc/quads/render_pass_draw_quad.h" 19 #include "cc/quads/render_pass_draw_quad.h"
20 #include "cc/quads/shared_quad_state.h" 20 #include "cc/quads/shared_quad_state.h"
21 #include "cc/quads/solid_color_draw_quad.h" 21 #include "cc/quads/solid_color_draw_quad.h"
22 #include "cc/quads/surface_draw_quad.h" 22 #include "cc/quads/surface_draw_quad.h"
23 #include "cc/quads/texture_draw_quad.h" 23 #include "cc/quads/texture_draw_quad.h"
24 #include "cc/quads/tile_draw_quad.h" 24 #include "cc/quads/tile_draw_quad.h"
25 #include "cc/quads/yuv_video_draw_quad.h" 25 #include "cc/quads/yuv_video_draw_quad.h"
26 #include "cc/surfaces/surface_id_allocator.h" 26 #include "cc/surfaces/surface_id_allocator.h"
27 #include "components/mus/public/cpp/surfaces/custom_surface_converter.h" 27 #include "components/mus/public/cpp/surfaces/custom_surface_converter.h"
28 #include "ui/gfx/geometry/mojo/geometry_type_converters.h"
29 #include "ui/gfx/mojo/transform_type_converters.h" 28 #include "ui/gfx/mojo/transform_type_converters.h"
30 29
31 using mus::mojom::Color; 30 using mus::mojom::Color;
32 using mus::mojom::ColorPtr; 31 using mus::mojom::ColorPtr;
33 using mus::mojom::CompositorFrame; 32 using mus::mojom::CompositorFrame;
34 using mus::mojom::CompositorFramePtr; 33 using mus::mojom::CompositorFramePtr;
35 using mus::mojom::CompositorFrameMetadata; 34 using mus::mojom::CompositorFrameMetadata;
36 using mus::mojom::CompositorFrameMetadataPtr; 35 using mus::mojom::CompositorFrameMetadataPtr;
37 using mus::mojom::DebugBorderQuadState; 36 using mus::mojom::DebugBorderQuadState;
38 using mus::mojom::DebugBorderQuadStatePtr; 37 using mus::mojom::DebugBorderQuadStatePtr;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 // TODO(jamesr): Add REC_709 and JPEG to the YUVColorSpace enum upstream in 84 // TODO(jamesr): Add REC_709 and JPEG to the YUVColorSpace enum upstream in
86 // mojo. 85 // mojo.
87 86
88 namespace { 87 namespace {
89 88
90 cc::SharedQuadState* ConvertSharedQuadState( 89 cc::SharedQuadState* ConvertSharedQuadState(
91 const mus::mojom::SharedQuadStatePtr& input, 90 const mus::mojom::SharedQuadStatePtr& input,
92 cc::RenderPass* render_pass) { 91 cc::RenderPass* render_pass) {
93 cc::SharedQuadState* state = render_pass->CreateAndAppendSharedQuadState(); 92 cc::SharedQuadState* state = render_pass->CreateAndAppendSharedQuadState();
94 state->SetAll(input->quad_to_target_transform.To<gfx::Transform>(), 93 state->SetAll(input->quad_to_target_transform.To<gfx::Transform>(),
95 input->quad_layer_bounds.To<gfx::Size>(), 94 input->quad_layer_bounds, input->visible_quad_layer_rect,
96 input->visible_quad_layer_rect.To<gfx::Rect>(), 95 input->clip_rect, input->is_clipped, input->opacity,
97 input->clip_rect.To<gfx::Rect>(), input->is_clipped,
98 input->opacity,
99 static_cast<::SkXfermode::Mode>(input->blend_mode), 96 static_cast<::SkXfermode::Mode>(input->blend_mode),
100 input->sorting_context_id); 97 input->sorting_context_id);
101 return state; 98 return state;
102 } 99 }
103 100
104 bool ConvertDrawQuad(const QuadPtr& input, 101 bool ConvertDrawQuad(const QuadPtr& input,
105 const CompositorFrameMetadataPtr& metadata, 102 const CompositorFrameMetadataPtr& metadata,
106 cc::SharedQuadState* sqs, 103 cc::SharedQuadState* sqs,
107 cc::RenderPass* render_pass, 104 cc::RenderPass* render_pass,
108 CustomSurfaceConverter* custom_converter) { 105 CustomSurfaceConverter* custom_converter) {
109 switch (input->material) { 106 switch (input->material) {
110 case mus::mojom::Material::DEBUG_BORDER: { 107 case mus::mojom::Material::DEBUG_BORDER: {
111 cc::DebugBorderDrawQuad* debug_border_quad = 108 cc::DebugBorderDrawQuad* debug_border_quad =
112 render_pass->CreateAndAppendDrawQuad<cc::DebugBorderDrawQuad>(); 109 render_pass->CreateAndAppendDrawQuad<cc::DebugBorderDrawQuad>();
113 debug_border_quad->SetAll( 110 debug_border_quad->SetAll(
114 sqs, 111 sqs, input->rect, input->opaque_rect, input->visible_rect,
115 input->rect.To<gfx::Rect>(),
116 input->opaque_rect.To<gfx::Rect>(),
117 input->visible_rect.To<gfx::Rect>(),
118 input->needs_blending, 112 input->needs_blending,
119 input->debug_border_quad_state->color.To<SkColor>(), 113 input->debug_border_quad_state->color.To<SkColor>(),
120 input->debug_border_quad_state->width); 114 input->debug_border_quad_state->width);
121 break; 115 break;
122 } 116 }
123 case mus::mojom::Material::RENDER_PASS: { 117 case mus::mojom::Material::RENDER_PASS: {
124 cc::RenderPassDrawQuad* render_pass_quad = 118 cc::RenderPassDrawQuad* render_pass_quad =
125 render_pass->CreateAndAppendDrawQuad<cc::RenderPassDrawQuad>(); 119 render_pass->CreateAndAppendDrawQuad<cc::RenderPassDrawQuad>();
126 RenderPassQuadState* render_pass_quad_state = 120 RenderPassQuadState* render_pass_quad_state =
127 input->render_pass_quad_state.get(); 121 input->render_pass_quad_state.get();
128 gfx::PointF mask_uv_scale_as_point =
129 render_pass_quad_state->mask_uv_scale.To<gfx::PointF>();
130 gfx::PointF filter_scale_as_point =
131 render_pass_quad_state->filters_scale.To<gfx::PointF>();
132 render_pass_quad->SetAll( 122 render_pass_quad->SetAll(
133 sqs, input->rect.To<gfx::Rect>(), input->opaque_rect.To<gfx::Rect>(), 123 sqs, input->rect, input->opaque_rect, input->visible_rect,
134 input->visible_rect.To<gfx::Rect>(), input->needs_blending, 124 input->needs_blending, render_pass_quad_state->render_pass_id,
135 render_pass_quad_state->render_pass_id,
136 render_pass_quad_state->mask_resource_id, 125 render_pass_quad_state->mask_resource_id,
137 mask_uv_scale_as_point.OffsetFromOrigin(), 126 render_pass_quad_state->mask_uv_scale.OffsetFromOrigin(),
138 render_pass_quad_state->mask_texture_size.To<gfx::Size>(), 127 render_pass_quad_state->mask_texture_size,
139 cc::FilterOperations(), // TODO(jamesr): filters 128 cc::FilterOperations(), // TODO(jamesr): filters
140 filter_scale_as_point.OffsetFromOrigin(), 129 render_pass_quad_state->filters_scale.OffsetFromOrigin(),
141 cc::FilterOperations()); // TODO(jamesr): background_filters 130 cc::FilterOperations()); // TODO(jamesr): background_filters
142 break; 131 break;
143 } 132 }
144 case mus::mojom::Material::SOLID_COLOR: { 133 case mus::mojom::Material::SOLID_COLOR: {
145 if (input->solid_color_quad_state.is_null()) 134 if (input->solid_color_quad_state.is_null())
146 return false; 135 return false;
147 cc::SolidColorDrawQuad* color_quad = 136 cc::SolidColorDrawQuad* color_quad =
148 render_pass->CreateAndAppendDrawQuad<cc::SolidColorDrawQuad>(); 137 render_pass->CreateAndAppendDrawQuad<cc::SolidColorDrawQuad>();
149 color_quad->SetAll( 138 color_quad->SetAll(
150 sqs, 139 sqs, input->rect, input->opaque_rect, input->visible_rect,
151 input->rect.To<gfx::Rect>(),
152 input->opaque_rect.To<gfx::Rect>(),
153 input->visible_rect.To<gfx::Rect>(),
154 input->needs_blending, 140 input->needs_blending,
155 input->solid_color_quad_state->color.To<SkColor>(), 141 input->solid_color_quad_state->color.To<SkColor>(),
156 input->solid_color_quad_state->force_anti_aliasing_off); 142 input->solid_color_quad_state->force_anti_aliasing_off);
157 break; 143 break;
158 } 144 }
159 case mus::mojom::Material::SURFACE_CONTENT: { 145 case mus::mojom::Material::SURFACE_CONTENT: {
160 if (input->surface_quad_state.is_null()) 146 if (input->surface_quad_state.is_null())
161 return false; 147 return false;
162 148
163 if (custom_converter) { 149 if (custom_converter) {
164 return custom_converter->ConvertSurfaceDrawQuad(input, metadata, sqs, 150 return custom_converter->ConvertSurfaceDrawQuad(input, metadata, sqs,
165 render_pass); 151 render_pass);
166 } 152 }
167 cc::SurfaceDrawQuad* surface_quad = 153 cc::SurfaceDrawQuad* surface_quad =
168 render_pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>(); 154 render_pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>();
169 surface_quad->SetAll( 155 surface_quad->SetAll(
170 sqs, input->rect.To<gfx::Rect>(), input->opaque_rect.To<gfx::Rect>(), 156 sqs, input->rect, input->opaque_rect, input->visible_rect,
171 input->visible_rect.To<gfx::Rect>(), input->needs_blending, 157 input->needs_blending, input->surface_quad_state->surface);
172 input->surface_quad_state->surface);
173 break; 158 break;
174 } 159 }
175 case mus::mojom::Material::TEXTURE_CONTENT: { 160 case mus::mojom::Material::TEXTURE_CONTENT: {
176 TextureQuadStatePtr& texture_quad_state = 161 TextureQuadStatePtr& texture_quad_state =
177 input->texture_quad_state; 162 input->texture_quad_state;
178 if (texture_quad_state.is_null() || 163 if (texture_quad_state.is_null() ||
179 texture_quad_state->vertex_opacity.is_null() || 164 texture_quad_state->vertex_opacity.is_null() ||
180 texture_quad_state->background_color.is_null()) 165 texture_quad_state->background_color.is_null())
181 return false; 166 return false;
182 cc::TextureDrawQuad* texture_quad = 167 cc::TextureDrawQuad* texture_quad =
183 render_pass->CreateAndAppendDrawQuad<cc::TextureDrawQuad>(); 168 render_pass->CreateAndAppendDrawQuad<cc::TextureDrawQuad>();
184 texture_quad->SetAll( 169 texture_quad->SetAll(
185 sqs, input->rect.To<gfx::Rect>(), input->opaque_rect.To<gfx::Rect>(), 170 sqs, input->rect, input->opaque_rect, input->visible_rect,
186 input->visible_rect.To<gfx::Rect>(), input->needs_blending, 171 input->needs_blending, texture_quad_state->resource_id, gfx::Size(),
187 texture_quad_state->resource_id, gfx::Size(),
188 texture_quad_state->premultiplied_alpha, 172 texture_quad_state->premultiplied_alpha,
189 texture_quad_state->uv_top_left.To<gfx::PointF>(), 173 texture_quad_state->uv_top_left, texture_quad_state->uv_bottom_right,
190 texture_quad_state->uv_bottom_right.To<gfx::PointF>(),
191 texture_quad_state->background_color.To<SkColor>(), 174 texture_quad_state->background_color.To<SkColor>(),
192 &texture_quad_state->vertex_opacity.storage()[0], 175 &texture_quad_state->vertex_opacity.storage()[0],
193 texture_quad_state->y_flipped, texture_quad_state->nearest_neighbor, 176 texture_quad_state->y_flipped, texture_quad_state->nearest_neighbor,
194 texture_quad_state->secure_output_only); 177 texture_quad_state->secure_output_only);
195 break; 178 break;
196 } 179 }
197 case mus::mojom::Material::TILED_CONTENT: { 180 case mus::mojom::Material::TILED_CONTENT: {
198 TileQuadStatePtr& tile_state = input->tile_quad_state; 181 TileQuadStatePtr& tile_state = input->tile_quad_state;
199 if (tile_state.is_null()) 182 if (tile_state.is_null())
200 return false; 183 return false;
201 cc::TileDrawQuad* tile_quad = 184 cc::TileDrawQuad* tile_quad =
202 render_pass->CreateAndAppendDrawQuad<cc::TileDrawQuad>(); 185 render_pass->CreateAndAppendDrawQuad<cc::TileDrawQuad>();
203 tile_quad->SetAll(sqs, 186 tile_quad->SetAll(sqs, input->rect, input->opaque_rect,
204 input->rect.To<gfx::Rect>(), 187 input->visible_rect, input->needs_blending,
205 input->opaque_rect.To<gfx::Rect>(), 188 tile_state->resource_id, tile_state->tex_coord_rect,
206 input->visible_rect.To<gfx::Rect>(), 189 tile_state->texture_size, tile_state->swizzle_contents,
207 input->needs_blending,
208 tile_state->resource_id,
209 tile_state->tex_coord_rect.To<gfx::RectF>(),
210 tile_state->texture_size.To<gfx::Size>(),
211 tile_state->swizzle_contents,
212 tile_state->nearest_neighbor); 190 tile_state->nearest_neighbor);
213 break; 191 break;
214 } 192 }
215 case mus::mojom::Material::YUV_VIDEO_CONTENT: { 193 case mus::mojom::Material::YUV_VIDEO_CONTENT: {
216 YUVVideoQuadStatePtr& yuv_state = input->yuv_video_quad_state; 194 YUVVideoQuadStatePtr& yuv_state = input->yuv_video_quad_state;
217 if (yuv_state.is_null()) 195 if (yuv_state.is_null())
218 return false; 196 return false;
219 cc::YUVVideoDrawQuad* yuv_quad = 197 cc::YUVVideoDrawQuad* yuv_quad =
220 render_pass->CreateAndAppendDrawQuad<cc::YUVVideoDrawQuad>(); 198 render_pass->CreateAndAppendDrawQuad<cc::YUVVideoDrawQuad>();
221 yuv_quad->SetAll( 199 yuv_quad->SetAll(
222 sqs, input->rect.To<gfx::Rect>(), input->opaque_rect.To<gfx::Rect>(), 200 sqs, input->rect, input->opaque_rect, input->visible_rect,
223 input->visible_rect.To<gfx::Rect>(), input->needs_blending, 201 input->needs_blending, yuv_state->ya_tex_coord_rect,
224 yuv_state->ya_tex_coord_rect.To<gfx::RectF>(), 202 yuv_state->uv_tex_coord_rect, yuv_state->ya_tex_size,
225 yuv_state->uv_tex_coord_rect.To<gfx::RectF>(), 203 yuv_state->uv_tex_size, yuv_state->y_plane_resource_id,
226 yuv_state->ya_tex_size.To<gfx::Size>(), 204 yuv_state->u_plane_resource_id, yuv_state->v_plane_resource_id,
227 yuv_state->uv_tex_size.To<gfx::Size>(), 205 yuv_state->a_plane_resource_id,
228 yuv_state->y_plane_resource_id, yuv_state->u_plane_resource_id, 206 static_cast<cc::YUVVideoDrawQuad::ColorSpace>(yuv_state->color_space),
229 yuv_state->v_plane_resource_id, yuv_state->a_plane_resource_id, 207 yuv_state->resource_offset, yuv_state->resource_multiplier);
230 static_cast<cc::YUVVideoDrawQuad::ColorSpace>(
231 yuv_state->color_space),
232 yuv_state->resource_offset,
233 yuv_state->resource_multiplier);
234 break; 208 break;
235 } 209 }
236 default: 210 default:
237 NOTREACHED() << "Unsupported material " << input->material; 211 NOTREACHED() << "Unsupported material " << input->material;
238 return false; 212 return false;
239 } 213 }
240 return true; 214 return true;
241 } 215 }
242 216
243 } // namespace 217 } // namespace
244 218
245 // static 219 // static
246 ColorPtr TypeConverter<ColorPtr, SkColor>::Convert(const SkColor& input) { 220 ColorPtr TypeConverter<ColorPtr, SkColor>::Convert(const SkColor& input) {
247 ColorPtr color(Color::New()); 221 ColorPtr color(Color::New());
248 color->rgba = input; 222 color->rgba = input;
249 return color; 223 return color;
250 } 224 }
251 225
252 // static 226 // static
253 SkColor TypeConverter<SkColor, ColorPtr>::Convert(const ColorPtr& input) { 227 SkColor TypeConverter<SkColor, ColorPtr>::Convert(const ColorPtr& input) {
254 return input->rgba; 228 return input->rgba;
255 } 229 }
256 230
257 // static 231 // static
258 QuadPtr TypeConverter<QuadPtr, cc::DrawQuad>::Convert( 232 QuadPtr TypeConverter<QuadPtr, cc::DrawQuad>::Convert(
259 const cc::DrawQuad& input) { 233 const cc::DrawQuad& input) {
260 QuadPtr quad = Quad::New(); 234 QuadPtr quad = Quad::New();
261 quad->material = static_cast<mus::mojom::Material>(input.material); 235 quad->material = static_cast<mus::mojom::Material>(input.material);
262 quad->rect = Rect::From(input.rect); 236 quad->rect = input.rect;
263 quad->opaque_rect = Rect::From(input.opaque_rect); 237 quad->opaque_rect = input.opaque_rect;
264 quad->visible_rect = Rect::From(input.visible_rect); 238 quad->visible_rect = input.visible_rect;
265 quad->needs_blending = input.needs_blending; 239 quad->needs_blending = input.needs_blending;
266 // This is intentionally left set to an invalid value here. It's set when 240 // This is intentionally left set to an invalid value here. It's set when
267 // converting an entire pass since it's an index into the pass' shared quad 241 // converting an entire pass since it's an index into the pass' shared quad
268 // state list. 242 // state list.
269 quad->shared_quad_state_index = UINT32_MAX; 243 quad->shared_quad_state_index = UINT32_MAX;
270 switch (input.material) { 244 switch (input.material) {
271 case cc::DrawQuad::DEBUG_BORDER: { 245 case cc::DrawQuad::DEBUG_BORDER: {
272 const cc::DebugBorderDrawQuad* debug_border_quad = 246 const cc::DebugBorderDrawQuad* debug_border_quad =
273 cc::DebugBorderDrawQuad::MaterialCast(&input); 247 cc::DebugBorderDrawQuad::MaterialCast(&input);
274 DebugBorderQuadStatePtr debug_border_state = 248 DebugBorderQuadStatePtr debug_border_state =
275 DebugBorderQuadState::New(); 249 DebugBorderQuadState::New();
276 debug_border_state->color = Color::From(debug_border_quad->color); 250 debug_border_state->color = Color::From(debug_border_quad->color);
277 debug_border_state->width = debug_border_quad->width; 251 debug_border_state->width = debug_border_quad->width;
278 quad->debug_border_quad_state = std::move(debug_border_state); 252 quad->debug_border_quad_state = std::move(debug_border_state);
279 break; 253 break;
280 } 254 }
281 case cc::DrawQuad::RENDER_PASS: { 255 case cc::DrawQuad::RENDER_PASS: {
282 const cc::RenderPassDrawQuad* render_pass_quad = 256 const cc::RenderPassDrawQuad* render_pass_quad =
283 cc::RenderPassDrawQuad::MaterialCast(&input); 257 cc::RenderPassDrawQuad::MaterialCast(&input);
284 RenderPassQuadStatePtr pass_state = RenderPassQuadState::New(); 258 RenderPassQuadStatePtr pass_state = RenderPassQuadState::New();
285 pass_state->render_pass_id = render_pass_quad->render_pass_id; 259 pass_state->render_pass_id = render_pass_quad->render_pass_id;
286 pass_state->mask_resource_id = render_pass_quad->mask_resource_id(); 260 pass_state->mask_resource_id = render_pass_quad->mask_resource_id();
287 pass_state->mask_uv_scale = PointF::From( 261 pass_state->mask_uv_scale =
288 gfx::PointAtOffsetFromOrigin(render_pass_quad->mask_uv_scale)); 262 gfx::PointAtOffsetFromOrigin(render_pass_quad->mask_uv_scale);
289 pass_state->mask_texture_size = 263 pass_state->mask_texture_size = render_pass_quad->mask_texture_size;
290 Size::From(render_pass_quad->mask_texture_size);
291 // TODO(jamesr): pass_state->filters 264 // TODO(jamesr): pass_state->filters
292 pass_state->filters_scale = PointF::From( 265 pass_state->filters_scale =
293 gfx::PointAtOffsetFromOrigin(render_pass_quad->filters_scale)); 266 gfx::PointAtOffsetFromOrigin(render_pass_quad->filters_scale);
294 // TODO(jamesr): pass_state->background_filters 267 // TODO(jamesr): pass_state->background_filters
295 quad->render_pass_quad_state = std::move(pass_state); 268 quad->render_pass_quad_state = std::move(pass_state);
296 break; 269 break;
297 } 270 }
298 case cc::DrawQuad::SOLID_COLOR: { 271 case cc::DrawQuad::SOLID_COLOR: {
299 const cc::SolidColorDrawQuad* color_quad = 272 const cc::SolidColorDrawQuad* color_quad =
300 cc::SolidColorDrawQuad::MaterialCast(&input); 273 cc::SolidColorDrawQuad::MaterialCast(&input);
301 SolidColorQuadStatePtr color_state = SolidColorQuadState::New(); 274 SolidColorQuadStatePtr color_state = SolidColorQuadState::New();
302 color_state->color = Color::From(color_quad->color); 275 color_state->color = Color::From(color_quad->color);
303 color_state->force_anti_aliasing_off = 276 color_state->force_anti_aliasing_off =
304 color_quad->force_anti_aliasing_off; 277 color_quad->force_anti_aliasing_off;
305 quad->solid_color_quad_state = std::move(color_state); 278 quad->solid_color_quad_state = std::move(color_state);
306 break; 279 break;
307 } 280 }
308 case cc::DrawQuad::SURFACE_CONTENT: { 281 case cc::DrawQuad::SURFACE_CONTENT: {
309 const cc::SurfaceDrawQuad* surface_quad = 282 const cc::SurfaceDrawQuad* surface_quad =
310 cc::SurfaceDrawQuad::MaterialCast(&input); 283 cc::SurfaceDrawQuad::MaterialCast(&input);
311 SurfaceQuadStatePtr surface_state = 284 SurfaceQuadStatePtr surface_state =
312 SurfaceQuadState::New(); 285 SurfaceQuadState::New();
313 surface_state->surface = surface_quad->surface_id; 286 surface_state->surface = surface_quad->surface_id;
314 quad->surface_quad_state = std::move(surface_state); 287 quad->surface_quad_state = std::move(surface_state);
315 break; 288 break;
316 } 289 }
317 case cc::DrawQuad::TEXTURE_CONTENT: { 290 case cc::DrawQuad::TEXTURE_CONTENT: {
318 const cc::TextureDrawQuad* texture_quad = 291 const cc::TextureDrawQuad* texture_quad =
319 cc::TextureDrawQuad::MaterialCast(&input); 292 cc::TextureDrawQuad::MaterialCast(&input);
320 TextureQuadStatePtr texture_state = TextureQuadState::New(); 293 TextureQuadStatePtr texture_state = TextureQuadState::New();
321 texture_state->resource_id = texture_quad->resource_id(); 294 texture_state->resource_id = texture_quad->resource_id();
322 texture_state->premultiplied_alpha = texture_quad->premultiplied_alpha; 295 texture_state->premultiplied_alpha = texture_quad->premultiplied_alpha;
323 texture_state->uv_top_left = PointF::From(texture_quad->uv_top_left); 296 texture_state->uv_top_left = texture_quad->uv_top_left;
324 texture_state->uv_bottom_right = 297 texture_state->uv_bottom_right = texture_quad->uv_bottom_right;
325 PointF::From(texture_quad->uv_bottom_right);
326 texture_state->background_color = 298 texture_state->background_color =
327 Color::From(texture_quad->background_color); 299 Color::From(texture_quad->background_color);
328 Array<float> vertex_opacity(4); 300 Array<float> vertex_opacity(4);
329 for (size_t i = 0; i < 4; ++i) { 301 for (size_t i = 0; i < 4; ++i) {
330 vertex_opacity[i] = texture_quad->vertex_opacity[i]; 302 vertex_opacity[i] = texture_quad->vertex_opacity[i];
331 } 303 }
332 texture_state->vertex_opacity = std::move(vertex_opacity); 304 texture_state->vertex_opacity = std::move(vertex_opacity);
333 texture_state->y_flipped = texture_quad->y_flipped; 305 texture_state->y_flipped = texture_quad->y_flipped;
334 texture_state->secure_output_only = texture_quad->secure_output_only; 306 texture_state->secure_output_only = texture_quad->secure_output_only;
335 quad->texture_quad_state = std::move(texture_state); 307 quad->texture_quad_state = std::move(texture_state);
336 break; 308 break;
337 } 309 }
338 case cc::DrawQuad::TILED_CONTENT: { 310 case cc::DrawQuad::TILED_CONTENT: {
339 const cc::TileDrawQuad* tile_quad = 311 const cc::TileDrawQuad* tile_quad =
340 cc::TileDrawQuad::MaterialCast(&input); 312 cc::TileDrawQuad::MaterialCast(&input);
341 TileQuadStatePtr tile_state = TileQuadState::New(); 313 TileQuadStatePtr tile_state = TileQuadState::New();
342 tile_state->tex_coord_rect = RectF::From(tile_quad->tex_coord_rect); 314 tile_state->tex_coord_rect = tile_quad->tex_coord_rect;
343 tile_state->texture_size = Size::From(tile_quad->texture_size); 315 tile_state->texture_size = tile_quad->texture_size;
344 tile_state->swizzle_contents = tile_quad->swizzle_contents; 316 tile_state->swizzle_contents = tile_quad->swizzle_contents;
345 tile_state->nearest_neighbor = tile_quad->nearest_neighbor; 317 tile_state->nearest_neighbor = tile_quad->nearest_neighbor;
346 tile_state->resource_id = tile_quad->resource_id(); 318 tile_state->resource_id = tile_quad->resource_id();
347 quad->tile_quad_state = std::move(tile_state); 319 quad->tile_quad_state = std::move(tile_state);
348 break; 320 break;
349 } 321 }
350 case cc::DrawQuad::YUV_VIDEO_CONTENT: { 322 case cc::DrawQuad::YUV_VIDEO_CONTENT: {
351 const cc::YUVVideoDrawQuad* yuv_quad = 323 const cc::YUVVideoDrawQuad* yuv_quad =
352 cc::YUVVideoDrawQuad::MaterialCast(&input); 324 cc::YUVVideoDrawQuad::MaterialCast(&input);
353 YUVVideoQuadStatePtr yuv_state = YUVVideoQuadState::New(); 325 YUVVideoQuadStatePtr yuv_state = YUVVideoQuadState::New();
354 yuv_state->ya_tex_coord_rect = RectF::From(yuv_quad->ya_tex_coord_rect); 326 yuv_state->ya_tex_coord_rect = yuv_quad->ya_tex_coord_rect;
355 yuv_state->uv_tex_coord_rect = RectF::From(yuv_quad->uv_tex_coord_rect); 327 yuv_state->uv_tex_coord_rect = yuv_quad->uv_tex_coord_rect;
356 yuv_state->ya_tex_size = Size::From(yuv_quad->ya_tex_size); 328 yuv_state->ya_tex_size = yuv_quad->ya_tex_size;
357 yuv_state->uv_tex_size = Size::From(yuv_quad->uv_tex_size); 329 yuv_state->uv_tex_size = yuv_quad->uv_tex_size;
358 yuv_state->y_plane_resource_id = yuv_quad->y_plane_resource_id(); 330 yuv_state->y_plane_resource_id = yuv_quad->y_plane_resource_id();
359 yuv_state->u_plane_resource_id = yuv_quad->u_plane_resource_id(); 331 yuv_state->u_plane_resource_id = yuv_quad->u_plane_resource_id();
360 yuv_state->v_plane_resource_id = yuv_quad->v_plane_resource_id(); 332 yuv_state->v_plane_resource_id = yuv_quad->v_plane_resource_id();
361 yuv_state->a_plane_resource_id = yuv_quad->a_plane_resource_id(); 333 yuv_state->a_plane_resource_id = yuv_quad->a_plane_resource_id();
362 yuv_state->color_space = 334 yuv_state->color_space =
363 static_cast<YUVColorSpace>(yuv_quad->color_space); 335 static_cast<YUVColorSpace>(yuv_quad->color_space);
364 yuv_state->resource_offset = yuv_quad->resource_offset; 336 yuv_state->resource_offset = yuv_quad->resource_offset;
365 yuv_state->resource_multiplier = yuv_quad->resource_multiplier; 337 yuv_state->resource_multiplier = yuv_quad->resource_multiplier;
366 quad->yuv_video_quad_state = std::move(yuv_state); 338 quad->yuv_video_quad_state = std::move(yuv_state);
367 break; 339 break;
368 } 340 }
369 341
370 default: 342 default:
371 NOTREACHED() << "Unsupported material " << input.material; 343 NOTREACHED() << "Unsupported material " << input.material;
372 } 344 }
373 return quad; 345 return quad;
374 } 346 }
375 347
376 // static 348 // static
377 mus::mojom::SharedQuadStatePtr 349 mus::mojom::SharedQuadStatePtr
378 TypeConverter<mus::mojom::SharedQuadStatePtr, cc::SharedQuadState>::Convert( 350 TypeConverter<mus::mojom::SharedQuadStatePtr, cc::SharedQuadState>::Convert(
379 const cc::SharedQuadState& input) { 351 const cc::SharedQuadState& input) {
380 mus::mojom::SharedQuadStatePtr state = SharedQuadState::New(); 352 mus::mojom::SharedQuadStatePtr state = SharedQuadState::New();
381 state->quad_to_target_transform = 353 state->quad_to_target_transform =
382 Transform::From(input.quad_to_target_transform); 354 Transform::From(input.quad_to_target_transform);
383 state->quad_layer_bounds = Size::From(input.quad_layer_bounds); 355 state->quad_layer_bounds = input.quad_layer_bounds;
384 state->visible_quad_layer_rect = Rect::From(input.visible_quad_layer_rect); 356 state->visible_quad_layer_rect = input.visible_quad_layer_rect;
385 state->clip_rect = Rect::From(input.clip_rect); 357 state->clip_rect = input.clip_rect;
386 state->is_clipped = input.is_clipped; 358 state->is_clipped = input.is_clipped;
387 state->opacity = input.opacity; 359 state->opacity = input.opacity;
388 state->blend_mode = static_cast<mus::mojom::SkXfermode>(input.blend_mode); 360 state->blend_mode = static_cast<mus::mojom::SkXfermode>(input.blend_mode);
389 state->sorting_context_id = input.sorting_context_id; 361 state->sorting_context_id = input.sorting_context_id;
390 return state; 362 return state;
391 } 363 }
392 364
393 // static 365 // static
394 PassPtr TypeConverter<PassPtr, cc::RenderPass>::Convert( 366 PassPtr TypeConverter<PassPtr, cc::RenderPass>::Convert(
395 const cc::RenderPass& input) { 367 const cc::RenderPass& input) {
396 PassPtr pass = Pass::New(); 368 PassPtr pass = Pass::New();
397 pass->id = input.id; 369 pass->id = input.id;
398 pass->output_rect = Rect::From(input.output_rect); 370 pass->output_rect = input.output_rect;
399 pass->damage_rect = Rect::From(input.damage_rect); 371 pass->damage_rect = input.damage_rect;
400 pass->transform_to_root_target = 372 pass->transform_to_root_target =
401 Transform::From(input.transform_to_root_target); 373 Transform::From(input.transform_to_root_target);
402 pass->has_transparent_background = input.has_transparent_background; 374 pass->has_transparent_background = input.has_transparent_background;
403 Array<QuadPtr> quads(input.quad_list.size()); 375 Array<QuadPtr> quads(input.quad_list.size());
404 Array<mus::mojom::SharedQuadStatePtr> shared_quad_state( 376 Array<mus::mojom::SharedQuadStatePtr> shared_quad_state(
405 input.shared_quad_state_list.size()); 377 input.shared_quad_state_list.size());
406 const cc::SharedQuadState* last_sqs = nullptr; 378 const cc::SharedQuadState* last_sqs = nullptr;
407 cc::SharedQuadStateList::ConstIterator next_sqs_iter = 379 cc::SharedQuadStateList::ConstIterator next_sqs_iter =
408 input.shared_quad_state_list.begin(); 380 input.shared_quad_state_list.begin();
409 for (auto iter = input.quad_list.cbegin(); iter != input.quad_list.cend(); 381 for (auto iter = input.quad_list.cbegin(); iter != input.quad_list.cend();
(...skipping 17 matching lines...) Expand all
427 return pass; 399 return pass;
428 } 400 }
429 401
430 // static 402 // static
431 std::unique_ptr<cc::RenderPass> ConvertToRenderPass( 403 std::unique_ptr<cc::RenderPass> ConvertToRenderPass(
432 const PassPtr& input, 404 const PassPtr& input,
433 const CompositorFrameMetadataPtr& metadata, 405 const CompositorFrameMetadataPtr& metadata,
434 CustomSurfaceConverter* custom_converter) { 406 CustomSurfaceConverter* custom_converter) {
435 std::unique_ptr<cc::RenderPass> pass = cc::RenderPass::Create( 407 std::unique_ptr<cc::RenderPass> pass = cc::RenderPass::Create(
436 input->shared_quad_states.size(), input->quads.size()); 408 input->shared_quad_states.size(), input->quads.size());
437 pass->SetAll(input->id, input->output_rect.To<gfx::Rect>(), 409 pass->SetAll(input->id, input->output_rect, input->damage_rect,
438 input->damage_rect.To<gfx::Rect>(),
439 input->transform_to_root_target.To<gfx::Transform>(), 410 input->transform_to_root_target.To<gfx::Transform>(),
440 input->has_transparent_background); 411 input->has_transparent_background);
441 for (size_t i = 0; i < input->shared_quad_states.size(); ++i) { 412 for (size_t i = 0; i < input->shared_quad_states.size(); ++i) {
442 ConvertSharedQuadState(input->shared_quad_states[i], pass.get()); 413 ConvertSharedQuadState(input->shared_quad_states[i], pass.get());
443 } 414 }
444 cc::SharedQuadStateList::Iterator sqs_iter = 415 cc::SharedQuadStateList::Iterator sqs_iter =
445 pass->shared_quad_state_list.begin(); 416 pass->shared_quad_state_list.begin();
446 for (size_t i = 0; i < input->quads.size(); ++i) { 417 for (size_t i = 0; i < input->quads.size(); ++i) {
447 QuadPtr quad = std::move(input->quads[i]); 418 QuadPtr quad = std::move(input->quads[i]);
448 while (quad->shared_quad_state_index > sqs_iter.index()) { 419 while (quad->shared_quad_state_index > sqs_iter.index()) {
(...skipping 16 matching lines...) Expand all
465 } 436 }
466 437
467 // static 438 // static
468 TransferableResourcePtr 439 TransferableResourcePtr
469 TypeConverter<TransferableResourcePtr, cc::TransferableResource>::Convert( 440 TypeConverter<TransferableResourcePtr, cc::TransferableResource>::Convert(
470 const cc::TransferableResource& input) { 441 const cc::TransferableResource& input) {
471 TransferableResourcePtr transferable = TransferableResource::New(); 442 TransferableResourcePtr transferable = TransferableResource::New();
472 transferable->id = input.id; 443 transferable->id = input.id;
473 transferable->format = static_cast<ResourceFormat>(input.format); 444 transferable->format = static_cast<ResourceFormat>(input.format);
474 transferable->filter = input.filter; 445 transferable->filter = input.filter;
475 transferable->size = Size::From(input.size); 446 transferable->size = input.size;
476 transferable->mailbox_holder = input.mailbox_holder; 447 transferable->mailbox_holder = input.mailbox_holder;
477 transferable->read_lock_fences_enabled = input.read_lock_fences_enabled; 448 transferable->read_lock_fences_enabled = input.read_lock_fences_enabled;
478 transferable->is_software = input.is_software; 449 transferable->is_software = input.is_software;
479 transferable->is_overlay_candidate = input.is_overlay_candidate; 450 transferable->is_overlay_candidate = input.is_overlay_candidate;
480 return transferable; 451 return transferable;
481 } 452 }
482 453
483 // static 454 // static
484 cc::TransferableResource 455 cc::TransferableResource
485 TypeConverter<cc::TransferableResource, TransferableResourcePtr>::Convert( 456 TypeConverter<cc::TransferableResource, TransferableResourcePtr>::Convert(
486 const TransferableResourcePtr& input) { 457 const TransferableResourcePtr& input) {
487 cc::TransferableResource transferable; 458 cc::TransferableResource transferable;
488 transferable.id = input->id; 459 transferable.id = input->id;
489 transferable.format = static_cast<cc::ResourceFormat>(input->format); 460 transferable.format = static_cast<cc::ResourceFormat>(input->format);
490 transferable.filter = input->filter; 461 transferable.filter = input->filter;
491 transferable.size = input->size.To<gfx::Size>(); 462 transferable.size = input->size;
492 transferable.mailbox_holder = input->mailbox_holder; 463 transferable.mailbox_holder = input->mailbox_holder;
493 transferable.read_lock_fences_enabled = input->read_lock_fences_enabled; 464 transferable.read_lock_fences_enabled = input->read_lock_fences_enabled;
494 transferable.is_software = input->is_software; 465 transferable.is_software = input->is_software;
495 transferable.is_overlay_candidate = input->is_overlay_candidate; 466 transferable.is_overlay_candidate = input->is_overlay_candidate;
496 return transferable; 467 return transferable;
497 } 468 }
498 469
499 // static 470 // static
500 ReturnedResourcePtr 471 ReturnedResourcePtr
501 TypeConverter<ReturnedResourcePtr, cc::ReturnedResource>::Convert( 472 TypeConverter<ReturnedResourcePtr, cc::ReturnedResource>::Convert(
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 } 552 }
582 553
583 // static 554 // static
584 std::unique_ptr<cc::CompositorFrame> 555 std::unique_ptr<cc::CompositorFrame>
585 TypeConverter<std::unique_ptr<cc::CompositorFrame>, 556 TypeConverter<std::unique_ptr<cc::CompositorFrame>,
586 CompositorFramePtr>::Convert(const CompositorFramePtr& input) { 557 CompositorFramePtr>::Convert(const CompositorFramePtr& input) {
587 return ConvertToCompositorFrame(input, nullptr); 558 return ConvertToCompositorFrame(input, nullptr);
588 } 559 }
589 560
590 } // namespace mojo 561 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698