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

Side by Side Diff: cc/ipc/cc_render_pass_traits.cc

Issue 10915298: Add CCDelegatingRenderer, and corresponding IPCs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix clang Created 8 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « cc/ipc/cc_render_pass_traits.h ('k') | cc/transferable_resource.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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 #include "cc/ipc/cc_render_pass_traits.h"
6
7 #include "content/common/cc_messages.h"
8 #include "cc/compositor_frame.h"
9 #include "cc/ipc/cc_param_traits.h"
10
11 #undef LOG
12 #include "config.h"
13
14 #include "cc/CCCheckerboardDrawQuad.h"
15 #include "cc/CCDebugBorderDrawQuad.h"
16 #include "cc/CCRenderPass.h"
17 #include "cc/CCRenderPassDrawQuad.h"
18 #include "cc/CCResourceProvider.h"
19 #include "cc/CCSolidColorDrawQuad.h"
20 #include "cc/CCTextureDrawQuad.h"
21 #include "cc/CCTileDrawQuad.h"
22 #include "cc/CCYUVVideoDrawQuad.h"
23
24 namespace IPC {
25
26 void ParamTraits<cc::IntRect>::Write(Message* m, const param_type& p) {
27 WriteParam(m, p.location());
28 WriteParam(m, p.size());
29 }
30
31 bool ParamTraits<cc::IntRect>::Read(const Message* m,
32 PickleIterator* iter,
33 param_type* p) {
34 WebCore::IntPoint location;
35 WebCore::IntSize size;
36 if (!ReadParam(m, iter, &location) || !ReadParam(m, iter, &size))
37 return false;
38 p->setLocation(location);
39 p->setSize(size);
40 return true;
41 }
42
43 void ParamTraits<cc::IntRect>::Log(const param_type& p, std::string* l) {
44 // TODO
45 }
46
47 void ParamTraits<WebCore::IntPoint>::Write(Message* m, const param_type& p) {
48 WriteParam(m, p.x());
49 WriteParam(m, p.y());
50 }
51
52 bool ParamTraits<WebCore::IntPoint>::Read(const Message* m,
53 PickleIterator* iter,
54 param_type* p) {
55 int x;
56 int y;
57 if (!ReadParam(m, iter, &x) || !ReadParam(m, iter, &y))
58 return false;
59 p->setX(x);
60 p->setY(y);
61 return true;
62 }
63
64 void ParamTraits<WebCore::IntPoint>::Log(const param_type& p, std::string* l) {
65 // TODO
66 }
67
68 void ParamTraits<WebCore::IntSize>::Write(Message* m, const param_type& p) {
69 WriteParam(m, p.width());
70 WriteParam(m, p.height());
71 }
72
73 bool ParamTraits<WebCore::IntSize>::Read(const Message* m,
74 PickleIterator* iter,
75 param_type* p) {
76 int width;
77 int height;
78 if (!ReadParam(m, iter, &width) || !ReadParam(m, iter, &height))
79 return false;
80 p->setWidth(width);
81 p->setHeight(height);
82 return true;
83 }
84
85 void ParamTraits<WebCore::IntSize>::Log(const param_type& p, std::string* l) {
86 // TODO
87 }
88
89 void ParamTraits<cc::FloatRect>::Write(Message* m, const param_type& p) {
90 WriteParam(m, p.location());
91 WriteParam(m, p.size());
92 }
93
94 bool ParamTraits<cc::FloatRect>::Read(const Message* m,
95 PickleIterator* iter,
96 param_type* p) {
97 WebCore::FloatPoint location;
98 WebCore::FloatSize size;
99 if (!ReadParam(m, iter, &location) || !ReadParam(m, iter, &size))
100 return false;
101 p->setLocation(location);
102 p->setSize(size);
103 return true;
104 }
105
106 void ParamTraits<cc::FloatRect>::Log(const param_type& p, std::string* l) {
107 // TODO
108 }
109
110 void ParamTraits<WebCore::FloatPoint>::Write(Message* m, const param_type& p) {
111 WriteParam(m, p.x());
112 WriteParam(m, p.y());
113 }
114
115 bool ParamTraits<WebCore::FloatPoint>::Read(const Message* m,
116 PickleIterator* iter,
117 param_type* p) {
118 float x;
119 float y;
120 if (!ReadParam(m, iter, &x) || !ReadParam(m, iter, &y))
121 return false;
122 p->setX(x);
123 p->setY(y);
124 return true;
125 }
126
127 void ParamTraits<WebCore::FloatPoint>::Log(const param_type& p, std::string* l) {
128 // TODO
129 }
130
131 void ParamTraits<WebCore::FloatSize>::Write(Message* m, const param_type& p) {
132 WriteParam(m, p.width());
133 WriteParam(m, p.height());
134 }
135
136 bool ParamTraits<WebCore::FloatSize>::Read(const Message* m,
137 PickleIterator* iter,
138 param_type* p) {
139 float width;
140 float height;
141 if (!ReadParam(m, iter, &width) || !ReadParam(m, iter, &height))
142 return false;
143 p->setWidth(width);
144 p->setHeight(height);
145 return true;
146 }
147
148 void ParamTraits<WebCore::FloatSize>::Log(const param_type& p, std::string* l) {
149 // TODO
150 }
151
152 template<>
153 struct ParamTraits<cc::CCDrawQuad> {
154 static void WriteDrawQuad(Message* m, const cc::CCDrawQuad* p);
155 static cc::CCDrawQuad* ReadDrawQuad(const Message* m, PickleIterator* iter, co nst cc::CCSharedQuadStateList&);
156 };
157
158 void ParamTraits<cc::CCDrawQuad>::WriteDrawQuad(Message* m, const cc::CCDrawQuad * quad) {
159 m->WriteUInt32(quad->m_material);
160 WriteParam(m, quad->m_sharedQuadStateId);
161 WriteParam(m, quad->m_quadRect);
162 WriteParam(m, quad->m_quadVisibleRect);
163 WriteParam(m, quad->m_quadOpaque);
164 WriteParam(m, quad->m_needsBlending);
165 WriteParam(m, quad->m_opaqueRect);
166 switch (quad->material()) {
167 case cc::CCDrawQuad::Invalid:
168 NOTREACHED();
169 break;
170 case cc::CCDrawQuad::Checkerboard:
171 WriteParam(m, cc::CCCheckerboardDrawQuad::materialCast(quad)->color());
172 break;
173 case cc::CCDrawQuad::SolidColor:
174 WriteParam(m, cc::CCSolidColorDrawQuad::materialCast(quad)->color());
175 break;
176 case cc::CCDrawQuad::TiledContent: {
177 const cc::CCTileDrawQuad* tileQuad = cc::CCTileDrawQuad::materialCast(quad );
178 WriteParam(m, tileQuad->resourceId());
179 WriteParam<WebCore::IntPoint>(m, tileQuad->textureOffset());
180 WriteParam<WebCore::IntSize>(m, tileQuad->textureSize());
181 WriteParam(m, tileQuad->textureFilter());
182 WriteParam(m, tileQuad->swizzleContents());
183 WriteParam(m, tileQuad->leftEdgeAA());
184 WriteParam(m, tileQuad->topEdgeAA());
185 WriteParam(m, tileQuad->rightEdgeAA());
186 WriteParam(m, tileQuad->bottomEdgeAA());
187 break;
188 }
189 case cc::CCDrawQuad::TextureContent: {
190 const cc::CCTextureDrawQuad* textureQuad = cc::CCTextureDrawQuad::material Cast(quad);
191 WriteParam(m, textureQuad->resourceId());
192 WriteParam(m, textureQuad->uvRect());
193 WriteParam(m, textureQuad->premultipliedAlpha());
194 WriteParam(m, textureQuad->flipped());
195 break;
196 }
197 case cc::CCDrawQuad::DebugBorder:
198 case cc::CCDrawQuad::YUVVideoContent:
199 case cc::CCDrawQuad::RenderPass:
200 case cc::CCDrawQuad::IOSurfaceContent:
201 case cc::CCDrawQuad::StreamVideoContent:
202 // TODO
203 break;
204 }
205 }
206
207 cc::CCDrawQuad* ParamTraits<cc::CCDrawQuad>::ReadDrawQuad(
208 const Message* m,
209 PickleIterator* iter,
210 const cc::CCSharedQuadStateList& sharedQuadList) {
211 unsigned material;
212 int sharedQuadStateId;
213 cc::IntRect quadRect;
214 cc::IntRect quadVisibleRect;
215 bool quadOpaque;
216 bool needsBlending;
217 cc::IntRect opaqueRect;
218 if (!m->ReadUInt32(iter, &material) ||
219 !ReadParam(m, iter, &sharedQuadStateId) ||
220 !ReadParam(m, iter, &quadRect) ||
221 !ReadParam(m, iter, &quadVisibleRect) ||
222 !ReadParam(m, iter, &quadOpaque) ||
223 !ReadParam(m, iter, &needsBlending) ||
224 !ReadParam(m, iter, &opaqueRect))
225 return NULL;
226 scoped_ptr<cc::CCDrawQuad> quad;
227 const cc::CCSharedQuadState* state = NULL;
228 for (cc::CCSharedQuadStateList::const_iterator it = sharedQuadList.begin(); it != sharedQuadList.end(); ++it) {
229 if ((*it)->id == sharedQuadStateId)
230 state = *it;
231 }
232 if (!state)
233 return NULL;
234
235 switch (material) {
236 case cc::CCDrawQuad::Checkerboard:
237 SkColor color;
238 if (!ReadParam(m, iter, &color))
239 return NULL;
240 quad = cc::CCCheckerboardDrawQuad::create(state, quadRect, color).Pass();
241 break;
242 case cc::CCDrawQuad::SolidColor: {
243 SkColor color;
244 if (!ReadParam(m, iter, &color))
245 return NULL;
246 quad = cc::CCSolidColorDrawQuad::create(state, quadRect, color).Pass();
247 break;
248 }
249 case cc::CCDrawQuad::TiledContent: {
250 unsigned resourceId;
251 WebCore::IntPoint textureOffset;
252 WebCore::IntSize textureSize;
253 WebKit::WGC3Dint textureFilter;
254 bool swizzleContents;
255 bool leftEdgeAA;
256 bool topEdgeAA;
257 bool rightEdgeAA;
258 bool bottomEdgeAA;
259
260 if (!ReadParam(m, iter, &resourceId) ||
261 !ReadParam(m, iter, &textureOffset) ||
262 !ReadParam(m, iter, &textureSize) ||
263 !ReadParam(m, iter, &textureFilter) ||
264 !ReadParam(m, iter, &swizzleContents) ||
265 !ReadParam(m, iter, &leftEdgeAA) ||
266 !ReadParam(m, iter, &topEdgeAA) ||
267 !ReadParam(m, iter, &rightEdgeAA) ||
268 !ReadParam(m, iter, &bottomEdgeAA))
269 return NULL;
270 quad = cc::CCTileDrawQuad::create(state, quadRect, opaqueRect, resourceId, textureOffset, textureSize, textureFilter, swizzleContents, leftEdgeAA, topEdge AA, rightEdgeAA, bottomEdgeAA).Pass();
271 break;
272 }
273 case cc::CCDrawQuad::TextureContent: {
274 unsigned resourceId;
275 cc::FloatRect uvRect;
276 bool premultipliedAlpha;
277 bool flipped;
278 if (!ReadParam(m, iter, &resourceId) ||
279 !ReadParam(m, iter, &uvRect) ||
280 !ReadParam(m, iter, &premultipliedAlpha) ||
281 !ReadParam(m, iter, &flipped))
282 return NULL;
283 quad = cc::CCTextureDrawQuad::create(state, quadRect, resourceId, premulti pliedAlpha, uvRect, flipped).Pass();
284 break;
285 }
286 case cc::CCDrawQuad::DebugBorder:
287 case cc::CCDrawQuad::YUVVideoContent:
288 case cc::CCDrawQuad::RenderPass:
289 case cc::CCDrawQuad::IOSurfaceContent:
290 case cc::CCDrawQuad::StreamVideoContent:
291 // TODO
292 quad = cc::CCCheckerboardDrawQuad::create(state, quadRect, SK_ColorYELLOW) .Pass();
293 break;
294 case cc::CCDrawQuad::Invalid:
295 default:
296 NOTREACHED();
297 return NULL;
298 }
299 quad->m_quadVisibleRect = quadVisibleRect;
300 quad->m_quadOpaque = quadOpaque;
301 quad->m_needsBlending = needsBlending;
302 quad->m_opaqueRect = opaqueRect;
303 return quad.release();
304 }
305
306 void ParamTraits<cc::CCSharedQuadState>::Write(Message* m, const param_type& p) {
307 WriteParam(m, p.id);
308 WriteParam(m, p.quadTransform);
309 WriteParam(m, p.visibleContentRect);
310 WriteParam(m, p.clippedRectInTarget);
311 WriteParam(m, p.opacity);
312 WriteParam(m, p.opaque);
313 }
314
315 bool ParamTraits<cc::CCSharedQuadState>::Read(const Message* m,
316 PickleIterator* iter,
317 param_type* p) {
318 return ReadParam(m, iter, &p->id) &&
319 ReadParam(m, iter, &p->quadTransform) &&
320 ReadParam(m, iter, &p->visibleContentRect) &&
321 ReadParam(m, iter, &p->clippedRectInTarget) &&
322 ReadParam(m, iter, &p->opacity) &&
323 ReadParam(m, iter, &p->opaque);
324 }
325
326 void ParamTraits<cc::CCSharedQuadState>::Log(const param_type& p, std::string* l ) {
327 // TODO
328 }
329
330 void ParamTraits<cc::CCRenderPass>::Write(Message* m, const param_type& p) {
331 WriteParam(m, p.m_id.layerId);
332 WriteParam(m, p.m_id.index);
333 WriteParam(m, p.m_sharedQuadStateList.size());
334 WriteParam(m, p.m_quadList.size());
335 WriteParam(m, p.m_transformToRootTarget);
336 WriteParam(m, p.m_outputRect);
337 WriteParam(m, p.m_damageRect);
338 WriteParam(m, p.m_hasTransparentBackground);
339 WriteParam(m, p.m_hasOcclusionFromOutsideTargetSurface);
340 for (size_t i = 0; i < p.m_sharedQuadStateList.size(); ++i)
341 WriteParam(m, *p.m_sharedQuadStateList[i]);
342 for (size_t i = 0; i < p.m_quadList.size(); ++i)
343 ParamTraits<cc::CCDrawQuad>::WriteDrawQuad(m, p.m_quadList[i]);
344 // TODO m_filters, m_backgroundFilters
345 }
346
347 bool ParamTraits<cc::CCRenderPass>::Read(const Message* m,
348 PickleIterator* iter,
349 param_type* p) {
350 size_t sharedQuadStateListSize;
351 size_t quadListSize;
352 if (!ReadParam(m, iter, &p->m_id.layerId) ||
353 !ReadParam(m, iter, &p->m_id.index) ||
354 !ReadParam(m, iter, &sharedQuadStateListSize) ||
355 !ReadParam(m, iter, &quadListSize) ||
356 !ReadParam(m, iter, &p->m_transformToRootTarget) ||
357 !ReadParam(m, iter, &p->m_outputRect) ||
358 !ReadParam(m, iter, &p->m_damageRect) ||
359 !ReadParam(m, iter, &p->m_hasTransparentBackground) ||
360 !ReadParam(m, iter, &p->m_hasOcclusionFromOutsideTargetSurface))
361 return false;
362 for (size_t i = 0; i < sharedQuadStateListSize; ++i) {
363 scoped_ptr<cc::CCSharedQuadState> state(cc::CCSharedQuadState::create(WebKit ::WebTransformationMatrix(), cc::IntRect(), cc::IntRect(), 1.f, true));
364 if (!ReadParam(m, iter, state.get()))
365 return false;
366 p->m_sharedQuadStateList.append(state.Pass());
367 }
368 for (size_t i = 0; i < quadListSize; ++i) {
369 scoped_ptr<cc::CCDrawQuad> quad(ParamTraits<cc::CCDrawQuad>::ReadDrawQuad(m, iter, p->m_sharedQuadStateList));
370 if (!quad.get())
371 return false;
372 p->m_quadList.append(quad.Pass());
373 }
374 // TODO m_filters, m_backgroundFilters
375 return true;
376 }
377
378 cc::CCRenderPass* ParamTraits<cc::CCRenderPass>::ReadRenderPass(const Message* m ,
379 PickleIterator* iter) {
380 cc::CCRenderPass::Id id(1, 1);
381 scoped_ptr<cc::CCRenderPass> render_pass(cc::CCRenderPass::create(id, cc::In tRect(), WebKit::WebTransformationMatrix()));
382 if (!Read(m, iter, render_pass.get())) {
383 return NULL;
384 }
385 return render_pass.release();
386 }
387
388 void ParamTraits<cc::CCRenderPass>::Log(const param_type& p, std::string* l) {
389 // TODO
390 }
391
392 } // namespace IPC
OLDNEW
« no previous file with comments | « cc/ipc/cc_render_pass_traits.h ('k') | cc/transferable_resource.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698