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