| Index: mojo/services/public/cpp/surfaces/lib/surfaces_type_converters.cc
|
| diff --git a/mojo/services/public/cpp/surfaces/lib/surfaces_type_converters.cc b/mojo/services/public/cpp/surfaces/lib/surfaces_type_converters.cc
|
| index b6b348df133385a8eb09d7a51a50c1d0cbdc7ff2..e86700e04a98a5816731a9218088cfc91e9c5364 100644
|
| --- a/mojo/services/public/cpp/surfaces/lib/surfaces_type_converters.cc
|
| +++ b/mojo/services/public/cpp/surfaces/lib/surfaces_type_converters.cc
|
| @@ -9,10 +9,12 @@
|
| #include "cc/output/delegated_frame_data.h"
|
| #include "cc/quads/draw_quad.h"
|
| #include "cc/quads/render_pass.h"
|
| +#include "cc/quads/render_pass_draw_quad.h"
|
| #include "cc/quads/shared_quad_state.h"
|
| #include "cc/quads/solid_color_draw_quad.h"
|
| #include "cc/quads/surface_draw_quad.h"
|
| #include "cc/quads/texture_draw_quad.h"
|
| +#include "cc/quads/tile_draw_quad.h"
|
| #include "mojo/services/public/cpp/geometry/geometry_type_converters.h"
|
|
|
| namespace mojo {
|
| @@ -54,6 +56,27 @@ bool ConvertDrawQuad(const QuadPtr& input,
|
| cc::SharedQuadState* sqs,
|
| cc::RenderPass* render_pass) {
|
| switch (input->material) {
|
| + case MATERIAL_RENDER_PASS: {
|
| + cc::RenderPassDrawQuad* render_pass_quad =
|
| + render_pass->CreateAndAppendDrawQuad<cc::RenderPassDrawQuad>();
|
| + RenderPassQuadState* render_pass_quad_state =
|
| + input->render_pass_quad_state.get();
|
| + gfx::PointF filter_scale_as_point =
|
| + render_pass_quad_state->filters_scale.To<gfx::PointF>();
|
| + render_pass_quad->SetAll(
|
| + sqs,
|
| + input->rect.To<gfx::Rect>(),
|
| + input->opaque_rect.To<gfx::Rect>(),
|
| + input->visible_rect.To<gfx::Rect>(),
|
| + input->needs_blending,
|
| + render_pass_quad_state->render_pass_id.To<cc::RenderPassId>(),
|
| + render_pass_quad_state->mask_resource_id,
|
| + render_pass_quad_state->mask_uv_rect.To<gfx::RectF>(),
|
| + cc::FilterOperations(), // TODO(jamesr): filters
|
| + gfx::Vector2dF(filter_scale_as_point.x(), filter_scale_as_point.y()),
|
| + cc::FilterOperations()); // TODO(jamesr): background_filters
|
| + break;
|
| + }
|
| case MATERIAL_SOLID_COLOR: {
|
| if (input->solid_color_quad_state.is_null())
|
| return false;
|
| @@ -107,6 +130,23 @@ bool ConvertDrawQuad(const QuadPtr& input,
|
| texture_quad_state->flipped);
|
| break;
|
| }
|
| + case MATERIAL_TILED_CONTENT: {
|
| + TileQuadStatePtr& tile_state = input->tile_quad_state;
|
| + if (tile_state.is_null())
|
| + return false;
|
| + cc::TileDrawQuad* tile_quad =
|
| + render_pass->CreateAndAppendDrawQuad<cc::TileDrawQuad>();
|
| + tile_quad->SetAll(sqs,
|
| + input->rect.To<gfx::Rect>(),
|
| + input->opaque_rect.To<gfx::Rect>(),
|
| + input->visible_rect.To<gfx::Rect>(),
|
| + input->needs_blending,
|
| + tile_state->resource_id,
|
| + tile_state->tex_coord_rect.To<gfx::RectF>(),
|
| + tile_state->texture_size.To<gfx::Size>(),
|
| + tile_state->swizzle_contents);
|
| + break;
|
| + }
|
| default:
|
| NOTREACHED() << "Unsupported material " << input->material;
|
| return false;
|
| @@ -143,6 +183,21 @@ SkColor TypeConverter<SkColor, ColorPtr>::Convert(const ColorPtr& input) {
|
| }
|
|
|
| // static
|
| +RenderPassIdPtr TypeConverter<RenderPassIdPtr, cc::RenderPassId>::Convert(
|
| + const cc::RenderPassId& input) {
|
| + RenderPassIdPtr pass_id(RenderPassId::New());
|
| + pass_id->layer_id = input.layer_id;
|
| + pass_id->index = input.index;
|
| + return pass_id.Pass();
|
| +}
|
| +
|
| +// static
|
| +cc::RenderPassId TypeConverter<cc::RenderPassId, RenderPassIdPtr>::Convert(
|
| + const RenderPassIdPtr& input) {
|
| + return cc::RenderPassId(input->layer_id, input->index);
|
| +}
|
| +
|
| +// static
|
| QuadPtr TypeConverter<QuadPtr, cc::DrawQuad>::Convert(
|
| const cc::DrawQuad& input) {
|
| QuadPtr quad = Quad::New();
|
| @@ -156,6 +211,21 @@ QuadPtr TypeConverter<QuadPtr, cc::DrawQuad>::Convert(
|
| // state list.
|
| quad->shared_quad_state_index = -1;
|
| switch (input.material) {
|
| + case cc::DrawQuad::RENDER_PASS: {
|
| + const cc::RenderPassDrawQuad* render_pass_quad =
|
| + cc::RenderPassDrawQuad::MaterialCast(&input);
|
| + RenderPassQuadStatePtr pass_state = RenderPassQuadState::New();
|
| + pass_state->render_pass_id =
|
| + RenderPassId::From(render_pass_quad->render_pass_id);
|
| + pass_state->mask_resource_id = render_pass_quad->mask_resource_id;
|
| + pass_state->mask_uv_rect = RectF::From(render_pass_quad->mask_uv_rect);
|
| + // TODO(jamesr): pass_state->filters
|
| + pass_state->filters_scale = PointF::From(
|
| + gfx::PointAtOffsetFromOrigin(render_pass_quad->filters_scale));
|
| + // TODO(jamesr): pass_state->background_filters
|
| + quad->render_pass_quad_state = pass_state.Pass();
|
| + break;
|
| + }
|
| case cc::DrawQuad::SOLID_COLOR: {
|
| const cc::SolidColorDrawQuad* color_quad =
|
| cc::SolidColorDrawQuad::MaterialCast(&input);
|
| @@ -179,7 +249,6 @@ QuadPtr TypeConverter<QuadPtr, cc::DrawQuad>::Convert(
|
| const cc::TextureDrawQuad* texture_quad =
|
| cc::TextureDrawQuad::MaterialCast(&input);
|
| TextureQuadStatePtr texture_state = TextureQuadState::New();
|
| - texture_state = TextureQuadState::New();
|
| texture_state->resource_id = texture_quad->resource_id;
|
| texture_state->premultiplied_alpha = texture_quad->premultiplied_alpha;
|
| texture_state->uv_top_left = PointF::From(texture_quad->uv_top_left);
|
| @@ -196,6 +265,17 @@ QuadPtr TypeConverter<QuadPtr, cc::DrawQuad>::Convert(
|
| quad->texture_quad_state = texture_state.Pass();
|
| break;
|
| }
|
| + case cc::DrawQuad::TILED_CONTENT: {
|
| + const cc::TileDrawQuad* tile_quad =
|
| + cc::TileDrawQuad::MaterialCast(&input);
|
| + TileQuadStatePtr tile_state = TileQuadState::New();
|
| + tile_state->tex_coord_rect = RectF::From(tile_quad->tex_coord_rect);
|
| + tile_state->texture_size = Size::From(tile_quad->texture_size);
|
| + tile_state->swizzle_contents = tile_quad->swizzle_contents;
|
| + tile_state->resource_id = tile_quad->resource_id;
|
| + quad->tile_quad_state = tile_state.Pass();
|
| + break;
|
| + }
|
| default:
|
| NOTREACHED() << "Unsupported material " << input.material;
|
| }
|
| @@ -240,7 +320,7 @@ PassPtr TypeConverter<PassPtr, cc::RenderPass>::Convert(
|
| if (quad.shared_quad_state != last_sqs) {
|
| sqs_i++;
|
| shared_quad_state[sqs_i] =
|
| - SharedQuadState::From(*input.shared_quad_state_list[i]);
|
| + SharedQuadState::From(*input.shared_quad_state_list[sqs_i]);
|
| last_sqs = quad.shared_quad_state;
|
| }
|
| quads[i]->shared_quad_state_index = sqs_i;
|
|
|