Skip to content

Commit

Permalink
viz: Move CompositorFrame's mojom from cc to services/viz
Browse files Browse the repository at this point in the history
TBR=sky@chromium.org
Bug=722935

Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I1fe2b3ab68a4bce06869ce3ea92ffd1b76dcd289
Reviewed-on: https://chromium-review.googlesource.com/601190
Commit-Queue: Saman Sami <samans@chromium.org>
Reviewed-by: Saman Sami <samans@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/master@{#492170}
  • Loading branch information
Saman Sami authored and Commit Bot committed Aug 4, 2017
1 parent 5e1171c commit 7839147
Show file tree
Hide file tree
Showing 21 changed files with 222 additions and 173 deletions.
1 change: 1 addition & 0 deletions cc/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -853,6 +853,7 @@ cc_test("cc_perftests") {
"//media",
"//mojo/edk/system",
"//mojo/public/cpp/bindings",
"//services/viz/public/interfaces/compositing",
"//skia",
"//testing/gmock",
"//testing/gtest",
Expand Down
1 change: 0 additions & 1 deletion cc/ipc/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ cc_component("ipc") {
mojom("interfaces") {
sources = [
"begin_frame_args.mojom",
"compositor_frame.mojom",
"compositor_frame_metadata.mojom",
"copy_output_request.mojom",
"copy_output_result.mojom",
Expand Down
1 change: 1 addition & 0 deletions cc/ipc/DEPS
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ include_rules = [
"+ui/gfx/geometry/mojo",
"+ui/latency/ipc",
"+ui/latency/mojo",
"+services/viz/public",
]
14 changes: 8 additions & 6 deletions cc/ipc/cc_serialization_perftest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
#include "cc/ipc/cc_param_traits.h"
#include "cc/ipc/compositor_frame.mojom.h"
#include "cc/ipc/compositor_frame_metadata_struct_traits.h"
#include "cc/ipc/compositor_frame_struct_traits.h"
#include "cc/ipc/render_pass_struct_traits.h"
#include "cc/ipc/selection_struct_traits.h"
#include "cc/ipc/shared_quad_state_struct_traits.h"
Expand All @@ -23,6 +22,8 @@
#include "gpu/ipc/common/sync_token_struct_traits.h"
#include "ipc/ipc_message.h"
#include "mojo/public/cpp/bindings/message.h"
#include "services/viz/public/cpp/compositing/compositor_frame_struct_traits.h"
#include "services/viz/public/interfaces/compositing/compositor_frame.mojom.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/perf/perf_test.h"
#include "third_party/skia/include/effects/SkBlurImageFilter.h"
Expand Down Expand Up @@ -141,10 +142,11 @@ class CCSerializationPerfTest : public testing::Test {
const std::string& test_name,
const CompositorFrame& frame,
UseSingleSharedQuadState single_sqs) {
mojo::Message message = mojom::CompositorFrame::SerializeAsMessage(&frame);
mojo::Message message =
viz::mojom::CompositorFrame::SerializeAsMessage(&frame);
for (int i = 0; i < kNumWarmupRuns; ++i) {
CompositorFrame compositor_frame;
mojom::CompositorFrame::Deserialize(
viz::mojom::CompositorFrame::Deserialize(
message.payload(), message.payload_num_bytes(), &compositor_frame);
}

Expand All @@ -157,7 +159,7 @@ class CCSerializationPerfTest : public testing::Test {
while (start < end) {
for (int i = 0; i < kTimeCheckInterval; ++i) {
CompositorFrame compositor_frame;
mojom::CompositorFrame::Deserialize(
viz::mojom::CompositorFrame::Deserialize(
message.payload(), message.payload_num_bytes(), &compositor_frame);
now = base::TimeTicks::Now();
// We don't count iterations after the end time.
Expand Down Expand Up @@ -191,7 +193,7 @@ class CCSerializationPerfTest : public testing::Test {
UseSingleSharedQuadState single_sqs) {
for (int i = 0; i < kNumWarmupRuns; ++i) {
mojo::Message message =
mojom::CompositorFrame::SerializeAsMessage(&frame);
viz::mojom::CompositorFrame::SerializeAsMessage(&frame);
}

base::TimeTicks start = base::TimeTicks::Now();
Expand All @@ -203,7 +205,7 @@ class CCSerializationPerfTest : public testing::Test {
while (start < end) {
for (int i = 0; i < kTimeCheckInterval; ++i) {
mojo::Message message =
mojom::CompositorFrame::SerializeAsMessage(&frame);
viz::mojom::CompositorFrame::SerializeAsMessage(&frame);
now = base::TimeTicks::Now();
// We don't count iterations after the end time.
if (now < end)
Expand Down
14 changes: 0 additions & 14 deletions cc/ipc/compositor_frame.typemap

This file was deleted.

127 changes: 0 additions & 127 deletions cc/ipc/struct_traits_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,6 @@ class StructTraitsTest : public testing::Test, public mojom::TraitsTestService {
std::move(callback).Run(b);
}

void EchoCompositorFrame(CompositorFrame c,
EchoCompositorFrameCallback callback) override {
std::move(callback).Run(std::move(c));
}

void EchoCompositorFrameMetadata(
CompositorFrameMetadata c,
EchoCompositorFrameMetadataCallback callback) override {
Expand Down Expand Up @@ -205,128 +200,6 @@ TEST_F(StructTraitsTest, BeginFrameAck) {
EXPECT_FALSE(output.has_damage);
}

// Note that this is a fairly trivial test of CompositorFrame serialization as
// most of the heavy lifting has already been done by CompositorFrameMetadata,
// RenderPass, and QuadListBasic unit tests.
TEST_F(StructTraitsTest, CompositorFrame) {
std::unique_ptr<RenderPass> render_pass = RenderPass::Create();
render_pass->SetNew(1, gfx::Rect(5, 6), gfx::Rect(2, 3), gfx::Transform());

// SharedQuadState.
const gfx::Transform sqs_quad_to_target_transform(
1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f, 13.f, 14.f,
15.f, 16.f);
const gfx::Rect sqs_layer_rect(1234, 5678);
const gfx::Rect sqs_visible_layer_rect(12, 34, 56, 78);
const gfx::Rect sqs_clip_rect(123, 456, 789, 101112);
const bool sqs_is_clipped = true;
const float sqs_opacity = 0.9f;
const SkBlendMode sqs_blend_mode = SkBlendMode::kSrcOver;
const int sqs_sorting_context_id = 1337;
SharedQuadState* sqs = render_pass->CreateAndAppendSharedQuadState();
sqs->SetAll(sqs_quad_to_target_transform, sqs_layer_rect,
sqs_visible_layer_rect, sqs_clip_rect, sqs_is_clipped,
sqs_opacity, sqs_blend_mode, sqs_sorting_context_id);

// DebugBorderDrawQuad.
const gfx::Rect rect1(1234, 4321, 1357, 7531);
const SkColor color1 = SK_ColorRED;
const int32_t width1 = 1337;
DebugBorderDrawQuad* debug_quad =
render_pass->CreateAndAppendDrawQuad<DebugBorderDrawQuad>();
debug_quad->SetNew(sqs, rect1, rect1, color1, width1);

// SolidColorDrawQuad.
const gfx::Rect rect2(2468, 8642, 4321, 1234);
const uint32_t color2 = 0xffffffff;
const bool force_anti_aliasing_off = true;
SolidColorDrawQuad* solid_quad =
render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
solid_quad->SetNew(sqs, rect2, rect2, color2, force_anti_aliasing_off);

// viz::TransferableResource constants.
const uint32_t tr_id = 1337;
const viz::ResourceFormat tr_format = viz::ALPHA_8;
const gfx::BufferFormat tr_buffer_format = gfx::BufferFormat::R_8;
const uint32_t tr_filter = 1234;
const gfx::Size tr_size(1234, 5678);
viz::TransferableResource resource;
resource.id = tr_id;
resource.format = tr_format;
resource.buffer_format = tr_buffer_format;
resource.filter = tr_filter;
resource.size = tr_size;

// CompositorFrameMetadata constants.
const float device_scale_factor = 2.6f;
const gfx::Vector2dF root_scroll_offset(1234.5f, 6789.1f);
const float page_scale_factor = 1337.5f;
const gfx::SizeF scrollable_viewport_size(1337.7f, 1234.5f);
const uint32_t content_source_id = 3;
const viz::BeginFrameAck begin_frame_ack(5, 10, false);

CompositorFrame input;
input.metadata.device_scale_factor = device_scale_factor;
input.metadata.root_scroll_offset = root_scroll_offset;
input.metadata.page_scale_factor = page_scale_factor;
input.metadata.scrollable_viewport_size = scrollable_viewport_size;
input.render_pass_list.push_back(std::move(render_pass));
input.resource_list.push_back(resource);
input.metadata.content_source_id = content_source_id;
input.metadata.begin_frame_ack = begin_frame_ack;

mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
CompositorFrame output;
proxy->EchoCompositorFrame(std::move(input), &output);

EXPECT_EQ(device_scale_factor, output.metadata.device_scale_factor);
EXPECT_EQ(root_scroll_offset, output.metadata.root_scroll_offset);
EXPECT_EQ(page_scale_factor, output.metadata.page_scale_factor);
EXPECT_EQ(scrollable_viewport_size, output.metadata.scrollable_viewport_size);
EXPECT_EQ(content_source_id, output.metadata.content_source_id);
EXPECT_EQ(begin_frame_ack, output.metadata.begin_frame_ack);

ASSERT_EQ(1u, output.resource_list.size());
viz::TransferableResource out_resource = output.resource_list[0];
EXPECT_EQ(tr_id, out_resource.id);
EXPECT_EQ(tr_format, out_resource.format);
EXPECT_EQ(tr_buffer_format, out_resource.buffer_format);
EXPECT_EQ(tr_filter, out_resource.filter);
EXPECT_EQ(tr_size, out_resource.size);

EXPECT_EQ(1u, output.render_pass_list.size());
const RenderPass* out_render_pass = output.render_pass_list[0].get();
ASSERT_EQ(2u, out_render_pass->quad_list.size());
ASSERT_EQ(1u, out_render_pass->shared_quad_state_list.size());

const SharedQuadState* out_sqs =
out_render_pass->shared_quad_state_list.ElementAt(0);
EXPECT_EQ(sqs_quad_to_target_transform, out_sqs->quad_to_target_transform);
EXPECT_EQ(sqs_layer_rect, out_sqs->quad_layer_rect);
EXPECT_EQ(sqs_visible_layer_rect, out_sqs->visible_quad_layer_rect);
EXPECT_EQ(sqs_clip_rect, out_sqs->clip_rect);
EXPECT_EQ(sqs_is_clipped, out_sqs->is_clipped);
EXPECT_EQ(sqs_opacity, out_sqs->opacity);
EXPECT_EQ(sqs_blend_mode, out_sqs->blend_mode);
EXPECT_EQ(sqs_sorting_context_id, out_sqs->sorting_context_id);

const DebugBorderDrawQuad* out_debug_border_draw_quad =
DebugBorderDrawQuad::MaterialCast(
out_render_pass->quad_list.ElementAt(0));
EXPECT_EQ(rect1, out_debug_border_draw_quad->rect);
EXPECT_EQ(rect1, out_debug_border_draw_quad->visible_rect);
EXPECT_EQ(color1, out_debug_border_draw_quad->color);
EXPECT_EQ(width1, out_debug_border_draw_quad->width);

const SolidColorDrawQuad* out_solid_color_draw_quad =
SolidColorDrawQuad::MaterialCast(out_render_pass->quad_list.ElementAt(1));
EXPECT_EQ(rect2, out_solid_color_draw_quad->rect);
EXPECT_EQ(rect2, out_solid_color_draw_quad->visible_rect);
EXPECT_EQ(color2, out_solid_color_draw_quad->color);
EXPECT_EQ(force_anti_aliasing_off,
out_solid_color_draw_quad->force_anti_aliasing_off);
}

TEST_F(StructTraitsTest, CompositorFrameMetadata) {
const float device_scale_factor = 2.6f;
const gfx::Vector2dF root_scroll_offset(1234.5f, 6789.1f);
Expand Down
4 changes: 0 additions & 4 deletions cc/ipc/traits_test_service.mojom
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
module cc.mojom;

import "cc/ipc/begin_frame_args.mojom";
import "cc/ipc/compositor_frame.mojom";
import "cc/ipc/compositor_frame_metadata.mojom";
import "cc/ipc/copy_output_request.mojom";
import "cc/ipc/copy_output_result.mojom";
Expand All @@ -30,9 +29,6 @@ interface TraitsTestService {
[Sync]
EchoBeginFrameAck(BeginFrameAck b) => (BeginFrameAck pass);

[Sync]
EchoCompositorFrame(CompositorFrame c) => (CompositorFrame pass);

[Sync]
EchoCompositorFrameMetadata(CompositorFrameMetadata c) =>
(CompositorFrameMetadata pass);
Expand Down
1 change: 0 additions & 1 deletion cc/ipc/typemaps.gni
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

typemaps = [
"//cc/ipc/begin_frame_args.typemap",
"//cc/ipc/compositor_frame.typemap",
"//cc/ipc/compositor_frame_metadata.typemap",
"//cc/ipc/copy_output_request.typemap",
"//cc/ipc/copy_output_result.typemap",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
#define SERVICES_UI_WS_SERVER_WINDOW_COMPOSITOR_FRAME_SINK_MANAGER_H_

#include "base/macros.h"
#include "cc/ipc/compositor_frame.mojom.h"
#include "components/viz/common/gpu/context_provider.h"
#include "components/viz/common/surfaces/surface_id.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "services/ui/public/interfaces/window_tree.mojom.h"
#include "services/viz/compositing/privileged/interfaces/frame_sink_manager.mojom.h"
#include "services/viz/public/interfaces/compositing/compositor_frame.mojom.h"

namespace ui {
namespace ws {
Expand Down
1 change: 1 addition & 0 deletions services/viz/public/cpp/compositing/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ source_set("tests") {
deps = [
"//base/test:test_support",
"//components/viz/common:common",
"//components/viz/test:test_support",
"//media/capture/mojo:capture_types",
"//services/service_manager/public/cpp",
"//services/service_manager/public/cpp:service_test_support",
Expand Down
6 changes: 6 additions & 0 deletions services/viz/public/cpp/compositing/DEPS
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
include_rules = [
"+ui/gfx/ipc",
"+ui/gfx/mojo",
"+ui/gfx/geometry/mojo",
"+cc",
"+gpu/ipc",
"+skia/public/interfaces",
"+ui/latency/mojo",
]
15 changes: 15 additions & 0 deletions services/viz/public/cpp/compositing/compositor_frame.typemap
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

mojom = "//services/viz/public/interfaces/compositing/compositor_frame.mojom"
public_headers = [ "//cc/output/compositor_frame.h" ]
traits_headers =
[ "//services/viz/public/cpp/compositing/compositor_frame_struct_traits.h" ]
sources = [
"//services/viz/public/cpp/compositing/compositor_frame_struct_traits.cc",
]
deps = [
"//cc",
]
type_mappings = [ "viz.mojom.CompositorFrame=cc::CompositorFrame[move_only]" ]
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

mojom = "//cc/ipc/compositor_frame.mojom"
mojom = "//services/viz/public/interfaces/compositing/compositor_frame.mojom"
public_headers = [ "//cc/output/compositor_frame.h" ]
traits_headers = [
"//cc/ipc/compositor_frame_metadata_struct_traits.h",
"//cc/ipc/compositor_frame_struct_traits.h",
"//cc/ipc/filter_operation_struct_traits.h",
"//cc/ipc/filter_operations_struct_traits.h",
"//cc/ipc/render_pass_struct_traits.h",
Expand All @@ -19,6 +18,7 @@ traits_headers = [
"//gpu/ipc/common/sync_token_struct_traits.h",
"//ipc/ipc_message_utils.h",
"//mojo/common/common_custom_types_struct_traits.h",
"//services/viz/public/cpp/compositing/compositor_frame_struct_traits.h",
"//skia/public/interfaces/image_filter_struct_traits.h",
"//ui/gfx/mojo/selection_bound_struct_traits.h",
"//ui/gfx/mojo/transform_struct_traits.h",
Expand All @@ -29,9 +29,10 @@ public_deps = [
"//cc/ipc:interfaces",
"//gpu/ipc/common:interfaces",
"//mojo/common:common_custom_types",
"//services/viz/public/interfaces/compositing",
"//skia/public/interfaces",
"//ui/gfx/geometry/mojo",
"//ui/gfx/mojo",
"//ui/latency/mojo:interfaces",
]
type_mappings = [ "cc.mojom.CompositorFrame=cc::CompositorFrame[move_only]" ]
type_mappings = [ "viz.mojom.CompositorFrame=cc::CompositorFrame[move_only]" ]
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,17 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "cc/ipc/compositor_frame_struct_traits.h"
#include "services/viz/public/cpp/compositing/compositor_frame_struct_traits.h"

#include "cc/ipc/compositor_frame_metadata_struct_traits.h"
#include "cc/ipc/render_pass_struct_traits.h"
#include "cc/ipc/transferable_resource_struct_traits.h"

namespace mojo {

// static
bool StructTraits<cc::mojom::CompositorFrameDataView,
cc::CompositorFrame>::Read(cc::mojom::CompositorFrameDataView
data,
cc::CompositorFrame* out) {
bool StructTraits<viz::mojom::CompositorFrameDataView, cc::CompositorFrame>::
Read(viz::mojom::CompositorFrameDataView data, cc::CompositorFrame* out) {
return data.ReadPasses(&out->render_pass_list) &&
!out->render_pass_list.empty() && data.ReadMetadata(&out->metadata) &&
data.ReadResources(&out->resource_list);
Expand Down
Loading

0 comments on commit 7839147

Please sign in to comment.