1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4// 5// IPC Messages sent between compositor instances. 6 7#include "cc/output/begin_frame_args.h" 8#include "cc/output/compositor_frame.h" 9#include "cc/output/compositor_frame_ack.h" 10#include "cc/output/filter_operation.h" 11#include "cc/quads/checkerboard_draw_quad.h" 12#include "cc/quads/debug_border_draw_quad.h" 13#include "cc/quads/draw_quad.h" 14#include "cc/quads/io_surface_draw_quad.h" 15#include "cc/quads/picture_draw_quad.h" 16#include "cc/quads/render_pass.h" 17#include "cc/quads/render_pass_draw_quad.h" 18#include "cc/quads/shared_quad_state.h" 19#include "cc/quads/solid_color_draw_quad.h" 20#include "cc/quads/stream_video_draw_quad.h" 21#include "cc/quads/surface_draw_quad.h" 22#include "cc/quads/texture_draw_quad.h" 23#include "cc/quads/tile_draw_quad.h" 24#include "cc/quads/yuv_video_draw_quad.h" 25#include "cc/resources/resource_format.h" 26#include "cc/resources/returned_resource.h" 27#include "cc/resources/transferable_resource.h" 28#include "cc/surfaces/surface_id.h" 29#include "content/common/content_export.h" 30#include "gpu/ipc/gpu_command_buffer_traits.h" 31#include "ipc/ipc_message_macros.h" 32 33#ifndef CONTENT_COMMON_CC_MESSAGES_H_ 34#define CONTENT_COMMON_CC_MESSAGES_H_ 35 36namespace gfx { 37class Transform; 38} 39 40namespace cc { 41class FilterOperations; 42} 43 44namespace IPC { 45 46template <> 47struct ParamTraits<cc::FilterOperation> { 48 typedef cc::FilterOperation param_type; 49 static void Write(Message* m, const param_type& p); 50 static bool Read(const Message* m, PickleIterator* iter, param_type* r); 51 static void Log(const param_type& p, std::string* l); 52}; 53 54template <> 55struct ParamTraits<cc::FilterOperations> { 56 typedef cc::FilterOperations param_type; 57 static void Write(Message* m, const param_type& p); 58 static bool Read(const Message* m, PickleIterator* iter, param_type* r); 59 static void Log(const param_type& p, std::string* l); 60}; 61 62template <> 63struct ParamTraits<skia::RefPtr<SkImageFilter> > { 64 typedef skia::RefPtr<SkImageFilter> param_type; 65 static void Write(Message* m, const param_type& p); 66 static bool Read(const Message* m, PickleIterator* iter, param_type* r); 67 static void Log(const param_type& p, std::string* l); 68}; 69 70template <> 71struct ParamTraits<gfx::Transform> { 72 typedef gfx::Transform param_type; 73 static void Write(Message* m, const param_type& p); 74 static bool Read(const Message* m, PickleIterator* iter, param_type* r); 75 static void Log(const param_type& p, std::string* l); 76}; 77 78template <> 79struct CONTENT_EXPORT ParamTraits<cc::RenderPass> { 80 typedef cc::RenderPass param_type; 81 static void Write(Message* m, const param_type& p); 82 static bool Read(const Message* m, PickleIterator* iter, param_type* r); 83 static void Log(const param_type& p, std::string* l); 84}; 85 86template<> 87struct CONTENT_EXPORT ParamTraits<cc::CompositorFrame> { 88 typedef cc::CompositorFrame param_type; 89 static void Write(Message* m, const param_type& p); 90 static bool Read(const Message* m, PickleIterator* iter, param_type* p); 91 static void Log(const param_type& p, std::string* l); 92}; 93 94template<> 95struct CONTENT_EXPORT ParamTraits<cc::CompositorFrameAck> { 96 typedef cc::CompositorFrameAck param_type; 97 static void Write(Message* m, const param_type& p); 98 static bool Read(const Message* m, PickleIterator* iter, param_type* p); 99 static void Log(const param_type& p, std::string* l); 100}; 101 102template<> 103struct CONTENT_EXPORT ParamTraits<cc::DelegatedFrameData> { 104 typedef cc::DelegatedFrameData param_type; 105 static void Write(Message* m, const param_type& p); 106 static bool Read(const Message* m, PickleIterator* iter, param_type* p); 107 static void Log(const param_type& p, std::string* l); 108}; 109 110template <> 111struct CONTENT_EXPORT ParamTraits<cc::SoftwareFrameData> { 112 typedef cc::SoftwareFrameData param_type; 113 static void Write(Message* m, const param_type& p); 114 static bool Read(const Message* m, PickleIterator* iter, param_type* p); 115 static void Log(const param_type& p, std::string* l); 116}; 117 118} // namespace IPC 119 120#endif // CONTENT_COMMON_CC_MESSAGES_H_ 121 122// Multiply-included message file, hence no include guard. 123 124#define IPC_MESSAGE_START CCMsgStart 125#undef IPC_MESSAGE_EXPORT 126#define IPC_MESSAGE_EXPORT CONTENT_EXPORT 127 128IPC_ENUM_TRAITS_MAX_VALUE(cc::DrawQuad::Material, cc::DrawQuad::MATERIAL_LAST) 129IPC_ENUM_TRAITS_MAX_VALUE(cc::IOSurfaceDrawQuad::Orientation, 130 cc::IOSurfaceDrawQuad::ORIENTATION_LAST) 131IPC_ENUM_TRAITS_MAX_VALUE(cc::FilterOperation::FilterType, 132 cc::FilterOperation::FILTER_TYPE_LAST ) 133IPC_ENUM_TRAITS_MAX_VALUE(cc::ResourceFormat, cc::RESOURCE_FORMAT_MAX) 134IPC_ENUM_TRAITS_MAX_VALUE(SkXfermode::Mode, SkXfermode::kLastMode) 135IPC_ENUM_TRAITS_MAX_VALUE(cc::YUVVideoDrawQuad::ColorSpace, 136 cc::YUVVideoDrawQuad::COLOR_SPACE_LAST) 137 138IPC_STRUCT_TRAITS_BEGIN(cc::RenderPass::Id) 139 IPC_STRUCT_TRAITS_MEMBER(layer_id) 140 IPC_STRUCT_TRAITS_MEMBER(index) 141IPC_STRUCT_TRAITS_END() 142 143IPC_STRUCT_TRAITS_BEGIN(cc::SurfaceId) 144IPC_STRUCT_TRAITS_MEMBER(id) 145IPC_STRUCT_TRAITS_END() 146 147IPC_STRUCT_TRAITS_BEGIN(cc::DrawQuad) 148 IPC_STRUCT_TRAITS_MEMBER(material) 149 IPC_STRUCT_TRAITS_MEMBER(rect) 150 IPC_STRUCT_TRAITS_MEMBER(opaque_rect) 151 IPC_STRUCT_TRAITS_MEMBER(visible_rect) 152 IPC_STRUCT_TRAITS_MEMBER(needs_blending) 153IPC_STRUCT_TRAITS_END() 154 155IPC_STRUCT_TRAITS_BEGIN(cc::CheckerboardDrawQuad) 156 IPC_STRUCT_TRAITS_PARENT(cc::DrawQuad) 157 IPC_STRUCT_TRAITS_MEMBER(color) 158IPC_STRUCT_TRAITS_END() 159 160IPC_STRUCT_TRAITS_BEGIN(cc::DebugBorderDrawQuad) 161 IPC_STRUCT_TRAITS_PARENT(cc::DrawQuad) 162 IPC_STRUCT_TRAITS_MEMBER(color) 163 IPC_STRUCT_TRAITS_MEMBER(width) 164IPC_STRUCT_TRAITS_END() 165 166IPC_STRUCT_TRAITS_BEGIN(cc::IOSurfaceDrawQuad) 167 IPC_STRUCT_TRAITS_PARENT(cc::DrawQuad) 168 IPC_STRUCT_TRAITS_MEMBER(io_surface_size) 169 IPC_STRUCT_TRAITS_MEMBER(io_surface_resource_id) 170 IPC_STRUCT_TRAITS_MEMBER(orientation) 171IPC_STRUCT_TRAITS_END() 172 173IPC_STRUCT_TRAITS_BEGIN(cc::RenderPassDrawQuad) 174 IPC_STRUCT_TRAITS_PARENT(cc::DrawQuad) 175 IPC_STRUCT_TRAITS_MEMBER(render_pass_id) 176 IPC_STRUCT_TRAITS_MEMBER(is_replica) 177 IPC_STRUCT_TRAITS_MEMBER(mask_resource_id) 178 IPC_STRUCT_TRAITS_MEMBER(contents_changed_since_last_frame) 179 IPC_STRUCT_TRAITS_MEMBER(mask_uv_rect) 180 IPC_STRUCT_TRAITS_MEMBER(filters) 181 IPC_STRUCT_TRAITS_MEMBER(background_filters) 182IPC_STRUCT_TRAITS_END() 183 184IPC_STRUCT_TRAITS_BEGIN(cc::SolidColorDrawQuad) 185 IPC_STRUCT_TRAITS_PARENT(cc::DrawQuad) 186 IPC_STRUCT_TRAITS_MEMBER(color) 187 IPC_STRUCT_TRAITS_MEMBER(force_anti_aliasing_off) 188IPC_STRUCT_TRAITS_END() 189 190IPC_STRUCT_TRAITS_BEGIN(cc::StreamVideoDrawQuad) 191 IPC_STRUCT_TRAITS_PARENT(cc::DrawQuad) 192 IPC_STRUCT_TRAITS_MEMBER(resource_id) 193 IPC_STRUCT_TRAITS_MEMBER(matrix) 194IPC_STRUCT_TRAITS_END() 195 196IPC_STRUCT_TRAITS_BEGIN(cc::SurfaceDrawQuad) 197 IPC_STRUCT_TRAITS_PARENT(cc::DrawQuad) 198 IPC_STRUCT_TRAITS_MEMBER(surface_id) 199IPC_STRUCT_TRAITS_END() 200 201IPC_STRUCT_TRAITS_BEGIN(cc::TextureDrawQuad) 202 IPC_STRUCT_TRAITS_PARENT(cc::DrawQuad) 203 IPC_STRUCT_TRAITS_MEMBER(resource_id) 204 IPC_STRUCT_TRAITS_MEMBER(premultiplied_alpha) 205 IPC_STRUCT_TRAITS_MEMBER(uv_top_left) 206 IPC_STRUCT_TRAITS_MEMBER(uv_bottom_right) 207 IPC_STRUCT_TRAITS_MEMBER(background_color) 208 IPC_STRUCT_TRAITS_MEMBER(vertex_opacity[0]) 209 IPC_STRUCT_TRAITS_MEMBER(vertex_opacity[1]) 210 IPC_STRUCT_TRAITS_MEMBER(vertex_opacity[2]) 211 IPC_STRUCT_TRAITS_MEMBER(vertex_opacity[3]) 212 IPC_STRUCT_TRAITS_MEMBER(flipped) 213IPC_STRUCT_TRAITS_END() 214 215IPC_STRUCT_TRAITS_BEGIN(cc::TileDrawQuad) 216 IPC_STRUCT_TRAITS_PARENT(cc::DrawQuad) 217 IPC_STRUCT_TRAITS_MEMBER(resource_id) 218 IPC_STRUCT_TRAITS_MEMBER(tex_coord_rect) 219 IPC_STRUCT_TRAITS_MEMBER(texture_size) 220 IPC_STRUCT_TRAITS_MEMBER(swizzle_contents) 221IPC_STRUCT_TRAITS_END() 222 223IPC_STRUCT_TRAITS_BEGIN(cc::YUVVideoDrawQuad) 224 IPC_STRUCT_TRAITS_PARENT(cc::DrawQuad) 225 IPC_STRUCT_TRAITS_MEMBER(tex_coord_rect) 226 IPC_STRUCT_TRAITS_MEMBER(y_plane_resource_id) 227 IPC_STRUCT_TRAITS_MEMBER(u_plane_resource_id) 228 IPC_STRUCT_TRAITS_MEMBER(v_plane_resource_id) 229 IPC_STRUCT_TRAITS_MEMBER(a_plane_resource_id) 230 IPC_STRUCT_TRAITS_MEMBER(color_space) 231IPC_STRUCT_TRAITS_END() 232 233IPC_STRUCT_TRAITS_BEGIN(cc::SharedQuadState) 234 IPC_STRUCT_TRAITS_MEMBER(content_to_target_transform) 235 IPC_STRUCT_TRAITS_MEMBER(content_bounds) 236 IPC_STRUCT_TRAITS_MEMBER(visible_content_rect) 237 IPC_STRUCT_TRAITS_MEMBER(clip_rect) 238 IPC_STRUCT_TRAITS_MEMBER(is_clipped) 239 IPC_STRUCT_TRAITS_MEMBER(opacity) 240 IPC_STRUCT_TRAITS_MEMBER(blend_mode) 241 IPC_STRUCT_TRAITS_MEMBER(sorting_context_id) 242IPC_STRUCT_TRAITS_END() 243 244IPC_STRUCT_TRAITS_BEGIN(cc::TransferableResource) 245 IPC_STRUCT_TRAITS_MEMBER(id) 246 IPC_STRUCT_TRAITS_MEMBER(format) 247 IPC_STRUCT_TRAITS_MEMBER(filter) 248 IPC_STRUCT_TRAITS_MEMBER(size) 249 IPC_STRUCT_TRAITS_MEMBER(mailbox_holder) 250 IPC_STRUCT_TRAITS_MEMBER(is_repeated) 251 IPC_STRUCT_TRAITS_MEMBER(is_software) 252IPC_STRUCT_TRAITS_END() 253 254IPC_STRUCT_TRAITS_BEGIN(cc::ReturnedResource) 255 IPC_STRUCT_TRAITS_MEMBER(id) 256 IPC_STRUCT_TRAITS_MEMBER(sync_point) 257 IPC_STRUCT_TRAITS_MEMBER(count) 258 IPC_STRUCT_TRAITS_MEMBER(lost) 259IPC_STRUCT_TRAITS_END() 260 261IPC_STRUCT_TRAITS_BEGIN(cc::BeginFrameArgs) 262 IPC_STRUCT_TRAITS_MEMBER(frame_time) 263 IPC_STRUCT_TRAITS_MEMBER(deadline) 264 IPC_STRUCT_TRAITS_MEMBER(interval) 265IPC_STRUCT_TRAITS_END() 266 267IPC_STRUCT_TRAITS_BEGIN(cc::CompositorFrameMetadata) 268 IPC_STRUCT_TRAITS_MEMBER(device_scale_factor) 269 IPC_STRUCT_TRAITS_MEMBER(root_scroll_offset) 270 IPC_STRUCT_TRAITS_MEMBER(page_scale_factor) 271 IPC_STRUCT_TRAITS_MEMBER(viewport_size) 272 IPC_STRUCT_TRAITS_MEMBER(root_layer_size) 273 IPC_STRUCT_TRAITS_MEMBER(min_page_scale_factor) 274 IPC_STRUCT_TRAITS_MEMBER(max_page_scale_factor) 275 IPC_STRUCT_TRAITS_MEMBER(location_bar_offset) 276 IPC_STRUCT_TRAITS_MEMBER(location_bar_content_translation) 277 IPC_STRUCT_TRAITS_MEMBER(overdraw_bottom_height) 278 IPC_STRUCT_TRAITS_MEMBER(latency_info) 279IPC_STRUCT_TRAITS_END() 280 281IPC_STRUCT_TRAITS_BEGIN(cc::GLFrameData) 282 IPC_STRUCT_TRAITS_MEMBER(mailbox) 283 IPC_STRUCT_TRAITS_MEMBER(sync_point) 284 IPC_STRUCT_TRAITS_MEMBER(size) 285 IPC_STRUCT_TRAITS_MEMBER(sub_buffer_rect) 286IPC_STRUCT_TRAITS_END() 287