OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |