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

Side by Side Diff: mojo/services/public/cpp/surfaces/tests/surface_unittest.cc

Issue 393103003: Update Mojo surfaces type converters to use RP for generating DQ and SQS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@publicDQ
Patch Set: rebase Created 6 years, 5 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 "cc/quads/render_pass.h" 5 #include "cc/quads/render_pass.h"
6 #include "cc/quads/solid_color_draw_quad.h" 6 #include "cc/quads/solid_color_draw_quad.h"
7 #include "cc/quads/surface_draw_quad.h" 7 #include "cc/quads/surface_draw_quad.h"
8 #include "cc/quads/texture_draw_quad.h" 8 #include "cc/quads/texture_draw_quad.h"
9 #include "gpu/command_buffer/common/mailbox.h" 9 #include "gpu/command_buffer/common/mailbox.h"
10 #include "gpu/command_buffer/common/mailbox_holder.h" 10 #include "gpu/command_buffer/common/mailbox_holder.h"
(...skipping 23 matching lines...) Expand all
34 34
35 TEST(SurfaceLibTest, Color) { 35 TEST(SurfaceLibTest, Color) {
36 SkColor arbitrary_color = SK_ColorMAGENTA; 36 SkColor arbitrary_color = SK_ColorMAGENTA;
37 SkColor round_trip = surfaces::Color::From(arbitrary_color).To<SkColor>(); 37 SkColor round_trip = surfaces::Color::From(arbitrary_color).To<SkColor>();
38 EXPECT_EQ(arbitrary_color, round_trip); 38 EXPECT_EQ(arbitrary_color, round_trip);
39 } 39 }
40 40
41 class SurfaceLibQuadTest : public testing::Test { 41 class SurfaceLibQuadTest : public testing::Test {
42 public: 42 public:
43 SurfaceLibQuadTest() 43 SurfaceLibQuadTest()
44 : sqs(new cc::SharedQuadState), 44 : rect(5, 7, 13, 19),
45 rect(5, 7, 13, 19),
46 opaque_rect(rect), 45 opaque_rect(rect),
47 visible_rect(9, 11, 5, 7), 46 visible_rect(9, 11, 5, 7),
48 needs_blending(false) {} 47 needs_blending(false) {}
49 48
50 protected: 49 protected:
51 scoped_ptr<cc::SharedQuadState> sqs;
52 gfx::Rect rect; 50 gfx::Rect rect;
53 gfx::Rect opaque_rect; 51 gfx::Rect opaque_rect;
54 gfx::Rect visible_rect; 52 gfx::Rect visible_rect;
55 bool needs_blending; 53 bool needs_blending;
56 }; 54 };
57 55
58 TEST_F(SurfaceLibQuadTest, ColorQuad) { 56 TEST_F(SurfaceLibQuadTest, ColorQuad) {
59 scoped_ptr<cc::SolidColorDrawQuad> color_quad(new cc::SolidColorDrawQuad); 57 scoped_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create();
58 cc::SharedQuadState* sqs = render_pass->CreateAndAppendSharedQuadState();
59 cc::SolidColorDrawQuad* color_quad =
60 render_pass->CreateAndAppendDrawQuad<cc::SolidColorDrawQuad>();
60 SkColor arbitrary_color = SK_ColorGREEN; 61 SkColor arbitrary_color = SK_ColorGREEN;
61 bool force_anti_aliasing_off = true; 62 bool force_anti_aliasing_off = true;
62 color_quad->SetAll(sqs.get(), 63 color_quad->SetAll(sqs,
63 rect, 64 rect,
64 opaque_rect, 65 opaque_rect,
65 visible_rect, 66 visible_rect,
66 needs_blending, 67 needs_blending,
67 arbitrary_color, 68 arbitrary_color,
68 force_anti_aliasing_off); 69 force_anti_aliasing_off);
69 70
70 cc::DrawQuad* base_ptr = static_cast<cc::DrawQuad*>(color_quad.get()); 71 surfaces::QuadPtr mojo_quad =
71 surfaces::QuadPtr mojo_quad = surfaces::Quad::From(*base_ptr); 72 surfaces::Quad::From(*(render_pass->quad_list.back()));
72 ASSERT_FALSE(mojo_quad.is_null()); 73 ASSERT_FALSE(mojo_quad.is_null());
73 EXPECT_EQ(surfaces::MATERIAL_SOLID_COLOR, mojo_quad->material); 74 EXPECT_EQ(surfaces::MATERIAL_SOLID_COLOR, mojo_quad->material);
74 EXPECT_EQ(Rect::From(rect), mojo_quad->rect); 75 EXPECT_EQ(Rect::From(rect), mojo_quad->rect);
75 EXPECT_EQ(Rect::From(opaque_rect), mojo_quad->opaque_rect); 76 EXPECT_EQ(Rect::From(opaque_rect), mojo_quad->opaque_rect);
76 EXPECT_EQ(Rect::From(visible_rect), mojo_quad->visible_rect); 77 EXPECT_EQ(Rect::From(visible_rect), mojo_quad->visible_rect);
77 EXPECT_EQ(needs_blending, mojo_quad->needs_blending); 78 EXPECT_EQ(needs_blending, mojo_quad->needs_blending);
78 ASSERT_TRUE(mojo_quad->solid_color_quad_state); 79 ASSERT_TRUE(mojo_quad->solid_color_quad_state);
79 surfaces::SolidColorQuadStatePtr& mojo_color_state = 80 surfaces::SolidColorQuadStatePtr& mojo_color_state =
80 mojo_quad->solid_color_quad_state; 81 mojo_quad->solid_color_quad_state;
81 EXPECT_EQ(surfaces::Color::From(arbitrary_color), mojo_color_state->color); 82 EXPECT_EQ(surfaces::Color::From(arbitrary_color), mojo_color_state->color);
82 EXPECT_EQ(force_anti_aliasing_off, mojo_color_state->force_anti_aliasing_off); 83 EXPECT_EQ(force_anti_aliasing_off, mojo_color_state->force_anti_aliasing_off);
83
84 scoped_ptr<cc::DrawQuad> round_trip_quad =
85 ConvertTo(mojo_quad.Pass(), sqs.get());
86 EXPECT_EQ(rect, round_trip_quad->rect);
87 EXPECT_EQ(opaque_rect, round_trip_quad->opaque_rect);
88 EXPECT_EQ(visible_rect, round_trip_quad->visible_rect);
89 EXPECT_EQ(needs_blending, round_trip_quad->needs_blending);
90 ASSERT_EQ(cc::DrawQuad::SOLID_COLOR, round_trip_quad->material);
91 const cc::SolidColorDrawQuad* round_trip_color_quad =
92 cc::SolidColorDrawQuad::MaterialCast(round_trip_quad.get());
93 EXPECT_EQ(arbitrary_color, round_trip_color_quad->color);
94 EXPECT_EQ(force_anti_aliasing_off,
95 round_trip_color_quad->force_anti_aliasing_off);
96 } 84 }
97 85
98 TEST_F(SurfaceLibQuadTest, SurfaceQuad) { 86 TEST_F(SurfaceLibQuadTest, SurfaceQuad) {
99 scoped_ptr<cc::SurfaceDrawQuad> surface_quad(new cc::SurfaceDrawQuad); 87 scoped_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create();
88 cc::SharedQuadState* sqs = render_pass->CreateAndAppendSharedQuadState();
89 cc::SurfaceDrawQuad* surface_quad =
90 render_pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>();
100 cc::SurfaceId arbitrary_id(5); 91 cc::SurfaceId arbitrary_id(5);
101 surface_quad->SetAll( 92 surface_quad->SetAll(
102 sqs.get(), rect, opaque_rect, visible_rect, needs_blending, arbitrary_id); 93 sqs, rect, opaque_rect, visible_rect, needs_blending, arbitrary_id);
103 cc::DrawQuad* base_ptr = static_cast<cc::DrawQuad*>(surface_quad.get()); 94
104 surfaces::QuadPtr mojo_quad = surfaces::Quad::From(*base_ptr); 95 surfaces::QuadPtr mojo_quad =
96 surfaces::Quad::From(*(render_pass->quad_list.back()));
105 ASSERT_FALSE(mojo_quad.is_null()); 97 ASSERT_FALSE(mojo_quad.is_null());
106 EXPECT_EQ(surfaces::MATERIAL_SURFACE_CONTENT, mojo_quad->material); 98 EXPECT_EQ(surfaces::MATERIAL_SURFACE_CONTENT, mojo_quad->material);
107 ASSERT_TRUE(mojo_quad->surface_quad_state); 99 ASSERT_TRUE(mojo_quad->surface_quad_state);
108 surfaces::SurfaceQuadStatePtr& mojo_surface_state = 100 surfaces::SurfaceQuadStatePtr& mojo_surface_state =
109 mojo_quad->surface_quad_state; 101 mojo_quad->surface_quad_state;
110 EXPECT_EQ(surfaces::SurfaceId::From(arbitrary_id), 102 EXPECT_EQ(surfaces::SurfaceId::From(arbitrary_id),
111 mojo_surface_state->surface); 103 mojo_surface_state->surface);
112
113 scoped_ptr<cc::DrawQuad> round_trip_quad =
114 ConvertTo(mojo_quad.Pass(), sqs.get());
115 ASSERT_EQ(cc::DrawQuad::SURFACE_CONTENT, round_trip_quad->material);
116 const cc::SurfaceDrawQuad* round_trip_surface_quad =
117 cc::SurfaceDrawQuad::MaterialCast(round_trip_quad.get());
118 EXPECT_EQ(arbitrary_id, round_trip_surface_quad->surface_id);
119 } 104 }
120 105
121 TEST_F(SurfaceLibQuadTest, TextureQuad) { 106 TEST_F(SurfaceLibQuadTest, TextureQuad) {
122 scoped_ptr<cc::TextureDrawQuad> texture_quad(new cc::TextureDrawQuad); 107 scoped_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create();
108 cc::SharedQuadState* sqs = render_pass->CreateAndAppendSharedQuadState();
jamesr 2014/07/17 20:25:24 nit: you could probably move these two lines into
109 cc::TextureDrawQuad* texture_quad =
110 render_pass->CreateAndAppendDrawQuad<cc::TextureDrawQuad>();
123 unsigned resource_id = 9; 111 unsigned resource_id = 9;
124 bool premultiplied_alpha = true; 112 bool premultiplied_alpha = true;
125 gfx::PointF uv_top_left(1.7f, 2.1f); 113 gfx::PointF uv_top_left(1.7f, 2.1f);
126 gfx::PointF uv_bottom_right(-7.f, 16.3f); 114 gfx::PointF uv_bottom_right(-7.f, 16.3f);
127 SkColor background_color = SK_ColorYELLOW; 115 SkColor background_color = SK_ColorYELLOW;
128 float vertex_opacity[4] = {0.1f, 0.5f, 0.4f, 0.8f}; 116 float vertex_opacity[4] = {0.1f, 0.5f, 0.4f, 0.8f};
129 bool flipped = false; 117 bool flipped = false;
130 texture_quad->SetAll(sqs.get(), 118 texture_quad->SetAll(sqs,
131 rect, 119 rect,
132 opaque_rect, 120 opaque_rect,
133 visible_rect, 121 visible_rect,
134 needs_blending, 122 needs_blending,
135 resource_id, 123 resource_id,
136 premultiplied_alpha, 124 premultiplied_alpha,
137 uv_top_left, 125 uv_top_left,
138 uv_bottom_right, 126 uv_bottom_right,
139 background_color, 127 background_color,
140 vertex_opacity, 128 vertex_opacity,
141 flipped); 129 flipped);
142 130
143 cc::DrawQuad* base_ptr = static_cast<cc::DrawQuad*>(texture_quad.get()); 131 surfaces::QuadPtr mojo_quad =
144 surfaces::QuadPtr mojo_quad = surfaces::Quad::From(*base_ptr); 132 surfaces::Quad::From(*(render_pass->quad_list.back()));
145 ASSERT_FALSE(mojo_quad.is_null()); 133 ASSERT_FALSE(mojo_quad.is_null());
146 EXPECT_EQ(surfaces::MATERIAL_TEXTURE_CONTENT, mojo_quad->material); 134 EXPECT_EQ(surfaces::MATERIAL_TEXTURE_CONTENT, mojo_quad->material);
147 ASSERT_TRUE(mojo_quad->texture_quad_state); 135 ASSERT_TRUE(mojo_quad->texture_quad_state);
148 surfaces::TextureQuadStatePtr& mojo_texture_state = 136 surfaces::TextureQuadStatePtr& mojo_texture_state =
149 mojo_quad->texture_quad_state; 137 mojo_quad->texture_quad_state;
150 EXPECT_EQ(resource_id, mojo_texture_state->resource_id); 138 EXPECT_EQ(resource_id, mojo_texture_state->resource_id);
151 EXPECT_EQ(premultiplied_alpha, mojo_texture_state->premultiplied_alpha); 139 EXPECT_EQ(premultiplied_alpha, mojo_texture_state->premultiplied_alpha);
152 EXPECT_EQ(PointF::From(uv_top_left), mojo_texture_state->uv_top_left); 140 EXPECT_EQ(PointF::From(uv_top_left), mojo_texture_state->uv_top_left);
153 EXPECT_EQ(PointF::From(uv_bottom_right), mojo_texture_state->uv_bottom_right); 141 EXPECT_EQ(PointF::From(uv_bottom_right), mojo_texture_state->uv_bottom_right);
154 EXPECT_EQ(surfaces::Color::From(background_color), 142 EXPECT_EQ(surfaces::Color::From(background_color),
155 mojo_texture_state->background_color); 143 mojo_texture_state->background_color);
156 for (size_t i = 0; i < 4; ++i) { 144 for (size_t i = 0; i < 4; ++i) {
157 EXPECT_EQ(vertex_opacity[i], mojo_texture_state->vertex_opacity[i]) << i; 145 EXPECT_EQ(vertex_opacity[i], mojo_texture_state->vertex_opacity[i]) << i;
158 } 146 }
159 EXPECT_EQ(flipped, mojo_texture_state->flipped); 147 EXPECT_EQ(flipped, mojo_texture_state->flipped);
160
161 scoped_ptr<cc::DrawQuad> round_trip_quad =
162 ConvertTo(mojo_quad.Pass(), sqs.get());
163 ASSERT_EQ(cc::DrawQuad::TEXTURE_CONTENT, round_trip_quad->material);
164 const cc::TextureDrawQuad* round_trip_surface_quad =
165 cc::TextureDrawQuad::MaterialCast(round_trip_quad.get());
166 EXPECT_EQ(resource_id, round_trip_surface_quad->resource_id);
167 EXPECT_EQ(premultiplied_alpha, round_trip_surface_quad->premultiplied_alpha);
168 EXPECT_EQ(uv_top_left, round_trip_surface_quad->uv_top_left);
169 EXPECT_EQ(uv_bottom_right, round_trip_surface_quad->uv_bottom_right);
170 EXPECT_EQ(background_color, round_trip_surface_quad->background_color);
171 for (size_t i = 0; i < 4; ++i) {
172 EXPECT_EQ(vertex_opacity[i], round_trip_surface_quad->vertex_opacity[i])
173 << i;
174 }
175 EXPECT_EQ(flipped, round_trip_surface_quad->flipped);
176 } 148 }
177 149
178 TEST(SurfaceLibTest, SharedQuadState) { 150 TEST(SurfaceLibTest, SharedQuadState) {
179 gfx::Transform content_to_target_transform; 151 gfx::Transform content_to_target_transform;
180 content_to_target_transform.Scale3d(0.3f, 0.7f, 0.9f); 152 content_to_target_transform.Scale3d(0.3f, 0.7f, 0.9f);
181 gfx::Size content_bounds(57, 39); 153 gfx::Size content_bounds(57, 39);
182 gfx::Rect visible_content_rect(3, 7, 28, 42); 154 gfx::Rect visible_content_rect(3, 7, 28, 42);
183 gfx::Rect clip_rect(9, 12, 21, 31); 155 gfx::Rect clip_rect(9, 12, 21, 31);
184 bool is_clipped = true; 156 bool is_clipped = true;
185 float opacity = 0.65f; 157 float opacity = 0.65f;
186 int sorting_context_id = 13; 158 int sorting_context_id = 13;
187 SkXfermode::Mode blend_mode = SkXfermode::kSrcOver_Mode; 159 SkXfermode::Mode blend_mode = SkXfermode::kSrcOver_Mode;
188 scoped_ptr<cc::SharedQuadState> sqs(new cc::SharedQuadState); 160 scoped_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create();
161 cc::SharedQuadState* sqs = render_pass->CreateAndAppendSharedQuadState();
189 sqs->SetAll(content_to_target_transform, 162 sqs->SetAll(content_to_target_transform,
190 content_bounds, 163 content_bounds,
191 visible_content_rect, 164 visible_content_rect,
192 clip_rect, 165 clip_rect,
193 is_clipped, 166 is_clipped,
194 opacity, 167 opacity,
195 blend_mode, 168 blend_mode,
196 sorting_context_id); 169 sorting_context_id);
197 170
198 surfaces::SharedQuadStatePtr mojo_sqs = surfaces::SharedQuadState::From(*sqs); 171 surfaces::SharedQuadStatePtr mojo_sqs = surfaces::SharedQuadState::From(*sqs);
199 ASSERT_FALSE(mojo_sqs.is_null()); 172 ASSERT_FALSE(mojo_sqs.is_null());
200 EXPECT_EQ(Transform::From(content_to_target_transform), 173 EXPECT_EQ(Transform::From(content_to_target_transform),
201 mojo_sqs->content_to_target_transform); 174 mojo_sqs->content_to_target_transform);
202 EXPECT_EQ(Size::From(content_bounds), mojo_sqs->content_bounds); 175 EXPECT_EQ(Size::From(content_bounds), mojo_sqs->content_bounds);
203 EXPECT_EQ(Rect::From(visible_content_rect), mojo_sqs->visible_content_rect); 176 EXPECT_EQ(Rect::From(visible_content_rect), mojo_sqs->visible_content_rect);
204 EXPECT_EQ(Rect::From(clip_rect), mojo_sqs->clip_rect); 177 EXPECT_EQ(Rect::From(clip_rect), mojo_sqs->clip_rect);
205 EXPECT_EQ(is_clipped, mojo_sqs->is_clipped); 178 EXPECT_EQ(is_clipped, mojo_sqs->is_clipped);
206 EXPECT_EQ(opacity, mojo_sqs->opacity); 179 EXPECT_EQ(opacity, mojo_sqs->opacity);
207 EXPECT_EQ(sorting_context_id, mojo_sqs->sorting_context_id); 180 EXPECT_EQ(sorting_context_id, mojo_sqs->sorting_context_id);
208
209 scoped_ptr<cc::SharedQuadState> round_trip_sqs = ConvertTo(mojo_sqs.Pass());
210 EXPECT_EQ(content_to_target_transform,
211 round_trip_sqs->content_to_target_transform);
212 EXPECT_EQ(content_bounds, round_trip_sqs->content_bounds);
213 EXPECT_EQ(visible_content_rect, round_trip_sqs->visible_content_rect);
214 EXPECT_EQ(clip_rect, round_trip_sqs->clip_rect);
215 EXPECT_EQ(is_clipped, round_trip_sqs->is_clipped);
216 EXPECT_EQ(opacity, round_trip_sqs->opacity);
217 EXPECT_EQ(sorting_context_id, round_trip_sqs->sorting_context_id);
218 } 181 }
219 182
220 TEST_F(SurfaceLibQuadTest, RenderPass) { 183 TEST_F(SurfaceLibQuadTest, RenderPass) {
221 scoped_ptr<cc::RenderPass> pass = cc::RenderPass::Create(); 184 scoped_ptr<cc::RenderPass> pass = cc::RenderPass::Create();
222 cc::RenderPass::Id pass_id(1, 6); 185 cc::RenderPass::Id pass_id(1, 6);
223 gfx::Rect output_rect(4, 9, 13, 71); 186 gfx::Rect output_rect(4, 9, 13, 71);
224 gfx::Rect damage_rect(9, 17, 41, 45); 187 gfx::Rect damage_rect(9, 17, 41, 45);
225 gfx::Transform transform_to_root_target; 188 gfx::Transform transform_to_root_target;
226 transform_to_root_target.SkewY(43.0); 189 transform_to_root_target.SkewY(43.0);
227 bool has_transparent_background = false; 190 bool has_transparent_background = false;
228 pass->SetAll(pass_id, 191 pass->SetAll(pass_id,
weiliangc 2014/07/17 21:27:10 If set up SharedQuadState in SurfaceLibQuadTest, t
jamesr 2014/07/17 21:29:36 Or move this test out of the SurfaceLibQuadTest fi
229 output_rect, 192 output_rect,
230 damage_rect, 193 damage_rect,
231 transform_to_root_target, 194 transform_to_root_target,
232 has_transparent_background); 195 has_transparent_background);
233 196
234 gfx::Transform content_to_target_transform; 197 gfx::Transform content_to_target_transform;
235 content_to_target_transform.Scale3d(0.3f, 0.7f, 0.9f); 198 content_to_target_transform.Scale3d(0.3f, 0.7f, 0.9f);
236 gfx::Size content_bounds(57, 39); 199 gfx::Size content_bounds(57, 39);
237 gfx::Rect visible_content_rect(3, 7, 28, 42); 200 gfx::Rect visible_content_rect(3, 7, 28, 42);
238 gfx::Rect clip_rect(9, 12, 21, 31); 201 gfx::Rect clip_rect(9, 12, 21, 31);
(...skipping 16 matching lines...) Expand all
255 SkColor arbitrary_color = SK_ColorGREEN; 218 SkColor arbitrary_color = SK_ColorGREEN;
256 bool force_anti_aliasing_off = true; 219 bool force_anti_aliasing_off = true;
257 color_quad->SetAll(pass->shared_quad_state_list.back(), 220 color_quad->SetAll(pass->shared_quad_state_list.back(),
258 rect, 221 rect,
259 opaque_rect, 222 opaque_rect,
260 visible_rect, 223 visible_rect,
261 needs_blending, 224 needs_blending,
262 arbitrary_color, 225 arbitrary_color,
263 force_anti_aliasing_off); 226 force_anti_aliasing_off);
264 227
228 cc::SurfaceDrawQuad* surface_quad =
229 pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>();
230 cc::SurfaceId arbitrary_id(5);
231 surface_quad->SetAll(
232 sqs, rect, opaque_rect, visible_rect, needs_blending, arbitrary_id);
233
234 cc::TextureDrawQuad* texture_quad =
235 pass->CreateAndAppendDrawQuad<cc::TextureDrawQuad>();
236 unsigned resource_id = 9;
237 bool premultiplied_alpha = true;
238 gfx::PointF uv_top_left(1.7f, 2.1f);
239 gfx::PointF uv_bottom_right(-7.f, 16.3f);
240 SkColor background_color = SK_ColorYELLOW;
241 float vertex_opacity[4] = {0.1f, 0.5f, 0.4f, 0.8f};
242 bool flipped = false;
243 texture_quad->SetAll(sqs,
244 rect,
245 opaque_rect,
246 visible_rect,
247 needs_blending,
248 resource_id,
249 premultiplied_alpha,
250 uv_top_left,
251 uv_bottom_right,
252 background_color,
253 vertex_opacity,
254 flipped);
255
265 surfaces::PassPtr mojo_pass = surfaces::Pass::From(*pass); 256 surfaces::PassPtr mojo_pass = surfaces::Pass::From(*pass);
266 ASSERT_FALSE(mojo_pass.is_null()); 257 ASSERT_FALSE(mojo_pass.is_null());
267 EXPECT_EQ(6, mojo_pass->id); 258 EXPECT_EQ(6, mojo_pass->id);
268 EXPECT_EQ(Rect::From(output_rect), mojo_pass->output_rect); 259 EXPECT_EQ(Rect::From(output_rect), mojo_pass->output_rect);
269 EXPECT_EQ(Rect::From(damage_rect), mojo_pass->damage_rect); 260 EXPECT_EQ(Rect::From(damage_rect), mojo_pass->damage_rect);
270 EXPECT_EQ(Transform::From(transform_to_root_target), 261 EXPECT_EQ(Transform::From(transform_to_root_target),
271 mojo_pass->transform_to_root_target); 262 mojo_pass->transform_to_root_target);
272 EXPECT_EQ(has_transparent_background, mojo_pass->has_transparent_background); 263 EXPECT_EQ(has_transparent_background, mojo_pass->has_transparent_background);
273 ASSERT_EQ(1u, mojo_pass->shared_quad_states.size()); 264 ASSERT_EQ(1u, mojo_pass->shared_quad_states.size());
274 ASSERT_EQ(1u, mojo_pass->quads.size()); 265 ASSERT_EQ(3u, mojo_pass->quads.size());
275 EXPECT_EQ(0, mojo_pass->quads[0]->shared_quad_state_index); 266 EXPECT_EQ(0, mojo_pass->quads[0]->shared_quad_state_index);
276 267
277 scoped_ptr<cc::RenderPass> round_trip_pass = ConvertTo(mojo_pass.Pass()); 268 scoped_ptr<cc::RenderPass> round_trip_pass = ConvertTo(mojo_pass.Pass());
278 EXPECT_EQ(pass_id, round_trip_pass->id); 269 EXPECT_EQ(pass_id, round_trip_pass->id);
279 EXPECT_EQ(output_rect, round_trip_pass->output_rect); 270 EXPECT_EQ(output_rect, round_trip_pass->output_rect);
280 EXPECT_EQ(damage_rect, round_trip_pass->damage_rect); 271 EXPECT_EQ(damage_rect, round_trip_pass->damage_rect);
281 EXPECT_EQ(transform_to_root_target, 272 EXPECT_EQ(transform_to_root_target,
282 round_trip_pass->transform_to_root_target); 273 round_trip_pass->transform_to_root_target);
283 EXPECT_EQ(has_transparent_background, 274 EXPECT_EQ(has_transparent_background,
284 round_trip_pass->has_transparent_background); 275 round_trip_pass->has_transparent_background);
285 ASSERT_EQ(1u, round_trip_pass->shared_quad_state_list.size()); 276 ASSERT_EQ(1u, round_trip_pass->shared_quad_state_list.size());
286 ASSERT_EQ(1u, round_trip_pass->quad_list.size()); 277 ASSERT_EQ(3u, round_trip_pass->quad_list.size());
287 EXPECT_EQ(round_trip_pass->shared_quad_state_list.front(), 278 EXPECT_EQ(round_trip_pass->shared_quad_state_list.front(),
288 round_trip_pass->quad_list[0]->shared_quad_state); 279 round_trip_pass->quad_list.front()->shared_quad_state);
280
281 cc::SharedQuadState* round_trip_sqs =
282 round_trip_pass->shared_quad_state_list.front();
283 EXPECT_EQ(content_to_target_transform,
284 round_trip_sqs->content_to_target_transform);
285 EXPECT_EQ(content_bounds, round_trip_sqs->content_bounds);
286 EXPECT_EQ(visible_content_rect, round_trip_sqs->visible_content_rect);
287 EXPECT_EQ(clip_rect, round_trip_sqs->clip_rect);
288 EXPECT_EQ(is_clipped, round_trip_sqs->is_clipped);
289 EXPECT_EQ(opacity, round_trip_sqs->opacity);
290 EXPECT_EQ(sorting_context_id, round_trip_sqs->sorting_context_id);
291
292 cc::QuadList::iterator dq_iter = round_trip_pass->quad_list.begin();
293 // First is solid color quad.
294 ASSERT_EQ(cc::DrawQuad::SOLID_COLOR, (*dq_iter)->material);
295 EXPECT_EQ(rect, (*dq_iter)->rect);
296 EXPECT_EQ(opaque_rect, (*dq_iter)->opaque_rect);
297 EXPECT_EQ(visible_rect, (*dq_iter)->visible_rect);
298 EXPECT_EQ(needs_blending, (*dq_iter)->needs_blending);
299 const cc::SolidColorDrawQuad* round_trip_color_quad =
300 cc::SolidColorDrawQuad::MaterialCast(*dq_iter);
301 EXPECT_EQ(arbitrary_color, round_trip_color_quad->color);
302 EXPECT_EQ(force_anti_aliasing_off,
303 round_trip_color_quad->force_anti_aliasing_off);
304
305 ++dq_iter;
306 // Second is surface quad.
307 ASSERT_EQ(cc::DrawQuad::SURFACE_CONTENT, (*dq_iter)->material);
308 const cc::SurfaceDrawQuad* round_trip_surface_quad =
309 cc::SurfaceDrawQuad::MaterialCast(*dq_iter);
310 EXPECT_EQ(arbitrary_id, round_trip_surface_quad->surface_id);
311
312 ++dq_iter;
313 // Third is texture quad.
314 ASSERT_EQ(cc::DrawQuad::TEXTURE_CONTENT, (*dq_iter)->material);
315 const cc::TextureDrawQuad* round_trip_texture_quad =
316 cc::TextureDrawQuad::MaterialCast(*dq_iter);
317 EXPECT_EQ(resource_id, round_trip_texture_quad->resource_id);
318 EXPECT_EQ(premultiplied_alpha, round_trip_texture_quad->premultiplied_alpha);
319 EXPECT_EQ(uv_top_left, round_trip_texture_quad->uv_top_left);
320 EXPECT_EQ(uv_bottom_right, round_trip_texture_quad->uv_bottom_right);
321 EXPECT_EQ(background_color, round_trip_texture_quad->background_color);
322 for (size_t i = 0; i < 4; ++i) {
323 EXPECT_EQ(vertex_opacity[i], round_trip_texture_quad->vertex_opacity[i])
324 << i;
325 }
326 EXPECT_EQ(flipped, round_trip_texture_quad->flipped);
289 } 327 }
290 328
291 TEST(SurfaceLibTest, Mailbox) { 329 TEST(SurfaceLibTest, Mailbox) {
292 gpu::Mailbox mailbox; 330 gpu::Mailbox mailbox;
293 mailbox.Generate(); 331 mailbox.Generate();
294 332
295 surfaces::MailboxPtr mojo_mailbox = surfaces::Mailbox::From(mailbox); 333 surfaces::MailboxPtr mojo_mailbox = surfaces::Mailbox::From(mailbox);
296 EXPECT_EQ(0, memcmp(mailbox.name, mojo_mailbox->name.storage().data(), 64)); 334 EXPECT_EQ(0, memcmp(mailbox.name, mojo_mailbox->name.storage().data(), 64));
297 335
298 gpu::Mailbox round_trip_mailbox = mojo_mailbox.To<gpu::Mailbox>(); 336 gpu::Mailbox round_trip_mailbox = mojo_mailbox.To<gpu::Mailbox>();
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 cc::ReturnedResource round_trip_resource = 419 cc::ReturnedResource round_trip_resource =
382 mojo_resource.To<cc::ReturnedResource>(); 420 mojo_resource.To<cc::ReturnedResource>();
383 EXPECT_EQ(id, round_trip_resource.id); 421 EXPECT_EQ(id, round_trip_resource.id);
384 EXPECT_EQ(sync_point, round_trip_resource.sync_point); 422 EXPECT_EQ(sync_point, round_trip_resource.sync_point);
385 EXPECT_EQ(count, round_trip_resource.count); 423 EXPECT_EQ(count, round_trip_resource.count);
386 EXPECT_EQ(lost, round_trip_resource.lost); 424 EXPECT_EQ(lost, round_trip_resource.lost);
387 } 425 }
388 426
389 } // namespace 427 } // namespace
390 } // namespace mojo 428 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698