| OLD | NEW |
| (Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "cc/quads/render_pass.h" |
| 6 #include "cc/quads/solid_color_draw_quad.h" |
| 7 #include "cc/quads/surface_draw_quad.h" |
| 8 #include "cc/quads/texture_draw_quad.h" |
| 9 #include "gpu/command_buffer/common/mailbox.h" |
| 10 #include "gpu/command_buffer/common/mailbox_holder.h" |
| 11 #include "mojo/converters/geometry/geometry_type_converters.h" |
| 12 #include "mojo/converters/surfaces/surfaces_type_converters.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" |
| 14 #include "third_party/skia/include/core/SkColor.h" |
| 15 #include "third_party/skia/include/core/SkXfermode.h" |
| 16 |
| 17 namespace mojo { |
| 18 namespace { |
| 19 |
| 20 TEST(SurfaceLibTest, SurfaceIdConverterNullId) { |
| 21 cc::SurfaceId null_id; |
| 22 cc::SurfaceId round_trip = SurfaceId::From(null_id).To<cc::SurfaceId>(); |
| 23 EXPECT_TRUE(round_trip.is_null()); |
| 24 } |
| 25 |
| 26 TEST(SurfaceLibTest, SurfaceIdConverterValidId) { |
| 27 cc::SurfaceId valid_id(7); |
| 28 cc::SurfaceId round_trip = SurfaceId::From(valid_id).To<cc::SurfaceId>(); |
| 29 EXPECT_FALSE(round_trip.is_null()); |
| 30 EXPECT_EQ(valid_id, round_trip); |
| 31 } |
| 32 |
| 33 TEST(SurfaceLibTest, Color) { |
| 34 SkColor arbitrary_color = SK_ColorMAGENTA; |
| 35 SkColor round_trip = Color::From(arbitrary_color).To<SkColor>(); |
| 36 EXPECT_EQ(arbitrary_color, round_trip); |
| 37 } |
| 38 |
| 39 class SurfaceLibQuadTest : public testing::Test { |
| 40 public: |
| 41 SurfaceLibQuadTest() |
| 42 : rect(5, 7, 13, 19), |
| 43 opaque_rect(rect), |
| 44 visible_rect(9, 11, 5, 7), |
| 45 needs_blending(false) { |
| 46 pass = cc::RenderPass::Create(); |
| 47 sqs = pass->CreateAndAppendSharedQuadState(); |
| 48 } |
| 49 |
| 50 protected: |
| 51 gfx::Rect rect; |
| 52 gfx::Rect opaque_rect; |
| 53 gfx::Rect visible_rect; |
| 54 bool needs_blending; |
| 55 scoped_ptr<cc::RenderPass> pass; |
| 56 cc::SharedQuadState* sqs; |
| 57 }; |
| 58 |
| 59 TEST_F(SurfaceLibQuadTest, ColorQuad) { |
| 60 cc::SolidColorDrawQuad* color_quad = |
| 61 pass->CreateAndAppendDrawQuad<cc::SolidColorDrawQuad>(); |
| 62 SkColor arbitrary_color = SK_ColorGREEN; |
| 63 bool force_anti_aliasing_off = true; |
| 64 color_quad->SetAll(sqs, |
| 65 rect, |
| 66 opaque_rect, |
| 67 visible_rect, |
| 68 needs_blending, |
| 69 arbitrary_color, |
| 70 force_anti_aliasing_off); |
| 71 |
| 72 QuadPtr mojo_quad = Quad::From<cc::DrawQuad>(*color_quad); |
| 73 ASSERT_FALSE(mojo_quad.is_null()); |
| 74 EXPECT_EQ(Material::SOLID_COLOR, mojo_quad->material); |
| 75 EXPECT_TRUE(Rect::From(rect)->Equals(*mojo_quad->rect)); |
| 76 EXPECT_TRUE(Rect::From(opaque_rect)->Equals(*mojo_quad->opaque_rect)); |
| 77 EXPECT_TRUE(Rect::From(visible_rect)->Equals(*mojo_quad->visible_rect)); |
| 78 EXPECT_EQ(needs_blending, mojo_quad->needs_blending); |
| 79 ASSERT_TRUE(mojo_quad->solid_color_quad_state); |
| 80 SolidColorQuadStatePtr& mojo_color_state = mojo_quad->solid_color_quad_state; |
| 81 EXPECT_TRUE(Color::From(arbitrary_color)->Equals(*mojo_color_state->color)); |
| 82 EXPECT_EQ(force_anti_aliasing_off, mojo_color_state->force_anti_aliasing_off); |
| 83 } |
| 84 |
| 85 TEST_F(SurfaceLibQuadTest, SurfaceQuad) { |
| 86 cc::SurfaceDrawQuad* surface_quad = |
| 87 pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>(); |
| 88 cc::SurfaceId arbitrary_id(5); |
| 89 surface_quad->SetAll( |
| 90 sqs, rect, opaque_rect, visible_rect, needs_blending, arbitrary_id); |
| 91 |
| 92 QuadPtr mojo_quad = Quad::From<cc::DrawQuad>(*surface_quad); |
| 93 ASSERT_FALSE(mojo_quad.is_null()); |
| 94 EXPECT_EQ(Material::SURFACE_CONTENT, mojo_quad->material); |
| 95 ASSERT_TRUE(mojo_quad->surface_quad_state); |
| 96 SurfaceQuadStatePtr& mojo_surface_state = mojo_quad->surface_quad_state; |
| 97 EXPECT_TRUE( |
| 98 SurfaceId::From(arbitrary_id)->Equals(*mojo_surface_state->surface)); |
| 99 } |
| 100 |
| 101 TEST_F(SurfaceLibQuadTest, TextureQuad) { |
| 102 cc::TextureDrawQuad* texture_quad = |
| 103 pass->CreateAndAppendDrawQuad<cc::TextureDrawQuad>(); |
| 104 unsigned resource_id = 9; |
| 105 bool premultiplied_alpha = true; |
| 106 gfx::PointF uv_top_left(1.7f, 2.1f); |
| 107 gfx::PointF uv_bottom_right(-7.f, 16.3f); |
| 108 SkColor background_color = SK_ColorYELLOW; |
| 109 float vertex_opacity[4] = {0.1f, 0.5f, 0.4f, 0.8f}; |
| 110 bool flipped = false; |
| 111 bool nearest_neighbor = false; |
| 112 texture_quad->SetAll(sqs, |
| 113 rect, |
| 114 opaque_rect, |
| 115 visible_rect, |
| 116 needs_blending, |
| 117 resource_id, |
| 118 premultiplied_alpha, |
| 119 uv_top_left, |
| 120 uv_bottom_right, |
| 121 background_color, |
| 122 vertex_opacity, |
| 123 flipped, |
| 124 nearest_neighbor); |
| 125 |
| 126 QuadPtr mojo_quad = Quad::From<cc::DrawQuad>(*texture_quad); |
| 127 ASSERT_FALSE(mojo_quad.is_null()); |
| 128 EXPECT_EQ(Material::TEXTURE_CONTENT, mojo_quad->material); |
| 129 ASSERT_TRUE(mojo_quad->texture_quad_state); |
| 130 TextureQuadStatePtr& mojo_texture_state = mojo_quad->texture_quad_state; |
| 131 EXPECT_EQ(resource_id, mojo_texture_state->resource_id); |
| 132 EXPECT_EQ(premultiplied_alpha, mojo_texture_state->premultiplied_alpha); |
| 133 EXPECT_TRUE( |
| 134 PointF::From(uv_top_left)->Equals(*mojo_texture_state->uv_top_left)); |
| 135 EXPECT_TRUE(PointF::From(uv_bottom_right) |
| 136 ->Equals(*mojo_texture_state->uv_bottom_right)); |
| 137 EXPECT_TRUE(Color::From(background_color) |
| 138 ->Equals(*mojo_texture_state->background_color)); |
| 139 for (size_t i = 0; i < 4; ++i) { |
| 140 EXPECT_EQ(vertex_opacity[i], mojo_texture_state->vertex_opacity[i]) << i; |
| 141 } |
| 142 EXPECT_EQ(flipped, mojo_texture_state->flipped); |
| 143 } |
| 144 |
| 145 TEST_F(SurfaceLibQuadTest, TextureQuadEmptyVertexOpacity) { |
| 146 QuadPtr mojo_texture_quad = Quad::New(); |
| 147 mojo_texture_quad->material = Material::TEXTURE_CONTENT; |
| 148 TextureQuadStatePtr mojo_texture_state = TextureQuadState::New(); |
| 149 mojo_texture_state->background_color = Color::New(); |
| 150 mojo_texture_quad->texture_quad_state = mojo_texture_state.Pass(); |
| 151 PassPtr mojo_pass = Pass::New(); |
| 152 mojo_pass->quads.push_back(mojo_texture_quad.Pass()); |
| 153 SharedQuadStatePtr mojo_sqs = SharedQuadState::New(); |
| 154 mojo_pass->shared_quad_states.push_back(mojo_sqs.Pass()); |
| 155 |
| 156 scoped_ptr<cc::RenderPass> pass = mojo_pass.To<scoped_ptr<cc::RenderPass> >(); |
| 157 |
| 158 EXPECT_FALSE(pass); |
| 159 } |
| 160 |
| 161 TEST_F(SurfaceLibQuadTest, TextureQuadEmptyBackgroundColor) { |
| 162 QuadPtr mojo_texture_quad = Quad::New(); |
| 163 mojo_texture_quad->material = Material::TEXTURE_CONTENT; |
| 164 TextureQuadStatePtr mojo_texture_state = TextureQuadState::New(); |
| 165 mojo_texture_state->vertex_opacity = mojo::Array<float>::New(4); |
| 166 mojo_texture_quad->texture_quad_state = mojo_texture_state.Pass(); |
| 167 PassPtr mojo_pass = Pass::New(); |
| 168 mojo_pass->quads.push_back(mojo_texture_quad.Pass()); |
| 169 SharedQuadStatePtr mojo_sqs = SharedQuadState::New(); |
| 170 mojo_pass->shared_quad_states.push_back(mojo_sqs.Pass()); |
| 171 |
| 172 scoped_ptr<cc::RenderPass> pass = mojo_pass.To<scoped_ptr<cc::RenderPass> >(); |
| 173 EXPECT_FALSE(pass); |
| 174 } |
| 175 |
| 176 TEST(SurfaceLibTest, SharedQuadState) { |
| 177 gfx::Transform content_to_target_transform; |
| 178 content_to_target_transform.Scale3d(0.3f, 0.7f, 0.9f); |
| 179 gfx::Size content_bounds(57, 39); |
| 180 gfx::Rect visible_content_rect(3, 7, 28, 42); |
| 181 gfx::Rect clip_rect(9, 12, 21, 31); |
| 182 bool is_clipped = true; |
| 183 float opacity = 0.65f; |
| 184 int sorting_context_id = 13; |
| 185 ::SkXfermode::Mode blend_mode = ::SkXfermode::kSrcOver_Mode; |
| 186 scoped_ptr<cc::RenderPass> pass = cc::RenderPass::Create(); |
| 187 cc::SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); |
| 188 sqs->SetAll(content_to_target_transform, |
| 189 content_bounds, |
| 190 visible_content_rect, |
| 191 clip_rect, |
| 192 is_clipped, |
| 193 opacity, |
| 194 blend_mode, |
| 195 sorting_context_id); |
| 196 |
| 197 SharedQuadStatePtr mojo_sqs = SharedQuadState::From(*sqs); |
| 198 ASSERT_FALSE(mojo_sqs.is_null()); |
| 199 EXPECT_TRUE(Transform::From(content_to_target_transform) |
| 200 ->Equals(*mojo_sqs->content_to_target_transform)); |
| 201 EXPECT_TRUE(Size::From(content_bounds)->Equals(*mojo_sqs->content_bounds)); |
| 202 EXPECT_TRUE(Rect::From(visible_content_rect) |
| 203 ->Equals(*mojo_sqs->visible_content_rect)); |
| 204 EXPECT_TRUE(Rect::From(clip_rect)->Equals(*mojo_sqs->clip_rect)); |
| 205 EXPECT_EQ(is_clipped, mojo_sqs->is_clipped); |
| 206 EXPECT_EQ(opacity, mojo_sqs->opacity); |
| 207 EXPECT_EQ(sorting_context_id, mojo_sqs->sorting_context_id); |
| 208 } |
| 209 |
| 210 TEST(SurfaceLibTest, RenderPass) { |
| 211 scoped_ptr<cc::RenderPass> pass = cc::RenderPass::Create(); |
| 212 cc::RenderPassId pass_id(1, 6); |
| 213 gfx::Rect output_rect(4, 9, 13, 71); |
| 214 gfx::Rect damage_rect(9, 17, 41, 45); |
| 215 gfx::Transform transform_to_root_target; |
| 216 transform_to_root_target.SkewY(43.0); |
| 217 bool has_transparent_background = false; |
| 218 pass->SetAll(pass_id, |
| 219 output_rect, |
| 220 damage_rect, |
| 221 transform_to_root_target, |
| 222 has_transparent_background); |
| 223 |
| 224 gfx::Transform content_to_target_transform; |
| 225 content_to_target_transform.Scale3d(0.3f, 0.7f, 0.9f); |
| 226 gfx::Size content_bounds(57, 39); |
| 227 gfx::Rect visible_content_rect(3, 7, 28, 42); |
| 228 gfx::Rect clip_rect(9, 12, 21, 31); |
| 229 bool is_clipped = true; |
| 230 float opacity = 0.65f; |
| 231 int sorting_context_id = 13; |
| 232 ::SkXfermode::Mode blend_mode = ::SkXfermode::kSrcOver_Mode; |
| 233 cc::SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); |
| 234 sqs->SetAll(content_to_target_transform, |
| 235 content_bounds, |
| 236 visible_content_rect, |
| 237 clip_rect, |
| 238 is_clipped, |
| 239 opacity, |
| 240 blend_mode, |
| 241 sorting_context_id); |
| 242 |
| 243 gfx::Rect rect(5, 7, 13, 19); |
| 244 gfx::Rect opaque_rect(rect); |
| 245 gfx::Rect visible_rect(9, 11, 5, 7); |
| 246 bool needs_blending = false; |
| 247 |
| 248 cc::SolidColorDrawQuad* color_quad = |
| 249 pass->CreateAndAppendDrawQuad<cc::SolidColorDrawQuad>(); |
| 250 SkColor arbitrary_color = SK_ColorGREEN; |
| 251 bool force_anti_aliasing_off = true; |
| 252 color_quad->SetAll(pass->shared_quad_state_list.back(), |
| 253 rect, |
| 254 opaque_rect, |
| 255 visible_rect, |
| 256 needs_blending, |
| 257 arbitrary_color, |
| 258 force_anti_aliasing_off); |
| 259 |
| 260 cc::SurfaceDrawQuad* surface_quad = |
| 261 pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>(); |
| 262 cc::SurfaceId arbitrary_id(5); |
| 263 surface_quad->SetAll( |
| 264 sqs, rect, opaque_rect, visible_rect, needs_blending, arbitrary_id); |
| 265 |
| 266 cc::TextureDrawQuad* texture_quad = |
| 267 pass->CreateAndAppendDrawQuad<cc::TextureDrawQuad>(); |
| 268 unsigned resource_id = 9; |
| 269 bool premultiplied_alpha = true; |
| 270 gfx::PointF uv_top_left(1.7f, 2.1f); |
| 271 gfx::PointF uv_bottom_right(-7.f, 16.3f); |
| 272 SkColor background_color = SK_ColorYELLOW; |
| 273 float vertex_opacity[4] = {0.1f, 0.5f, 0.4f, 0.8f}; |
| 274 bool flipped = false; |
| 275 bool nearest_neighbor = false; |
| 276 texture_quad->SetAll(sqs, |
| 277 rect, |
| 278 opaque_rect, |
| 279 visible_rect, |
| 280 needs_blending, |
| 281 resource_id, |
| 282 premultiplied_alpha, |
| 283 uv_top_left, |
| 284 uv_bottom_right, |
| 285 background_color, |
| 286 vertex_opacity, |
| 287 flipped, |
| 288 nearest_neighbor); |
| 289 |
| 290 PassPtr mojo_pass = Pass::From(*pass); |
| 291 ASSERT_FALSE(mojo_pass.is_null()); |
| 292 EXPECT_EQ(6, mojo_pass->id); |
| 293 EXPECT_TRUE(Rect::From(output_rect)->Equals(*mojo_pass->output_rect)); |
| 294 EXPECT_TRUE(Rect::From(damage_rect)->Equals(*mojo_pass->damage_rect)); |
| 295 EXPECT_TRUE(Transform::From(transform_to_root_target) |
| 296 ->Equals(*mojo_pass->transform_to_root_target)); |
| 297 EXPECT_EQ(has_transparent_background, mojo_pass->has_transparent_background); |
| 298 ASSERT_EQ(1u, mojo_pass->shared_quad_states.size()); |
| 299 ASSERT_EQ(3u, mojo_pass->quads.size()); |
| 300 EXPECT_EQ(0u, mojo_pass->quads[0]->shared_quad_state_index); |
| 301 |
| 302 scoped_ptr<cc::RenderPass> round_trip_pass = |
| 303 mojo_pass.To<scoped_ptr<cc::RenderPass> >(); |
| 304 EXPECT_EQ(pass_id, round_trip_pass->id); |
| 305 EXPECT_EQ(output_rect, round_trip_pass->output_rect); |
| 306 EXPECT_EQ(damage_rect, round_trip_pass->damage_rect); |
| 307 EXPECT_EQ(transform_to_root_target, |
| 308 round_trip_pass->transform_to_root_target); |
| 309 EXPECT_EQ(has_transparent_background, |
| 310 round_trip_pass->has_transparent_background); |
| 311 ASSERT_EQ(1u, round_trip_pass->shared_quad_state_list.size()); |
| 312 ASSERT_EQ(3u, round_trip_pass->quad_list.size()); |
| 313 EXPECT_EQ(round_trip_pass->shared_quad_state_list.front(), |
| 314 round_trip_pass->quad_list.front()->shared_quad_state); |
| 315 |
| 316 cc::SharedQuadState* round_trip_sqs = |
| 317 round_trip_pass->shared_quad_state_list.front(); |
| 318 EXPECT_EQ(content_to_target_transform, |
| 319 round_trip_sqs->content_to_target_transform); |
| 320 EXPECT_EQ(content_bounds, round_trip_sqs->content_bounds); |
| 321 EXPECT_EQ(visible_content_rect, round_trip_sqs->visible_content_rect); |
| 322 EXPECT_EQ(clip_rect, round_trip_sqs->clip_rect); |
| 323 EXPECT_EQ(is_clipped, round_trip_sqs->is_clipped); |
| 324 EXPECT_EQ(opacity, round_trip_sqs->opacity); |
| 325 EXPECT_EQ(sorting_context_id, round_trip_sqs->sorting_context_id); |
| 326 |
| 327 cc::DrawQuad* round_trip_quad = round_trip_pass->quad_list.front(); |
| 328 // First is solid color quad. |
| 329 ASSERT_EQ(cc::DrawQuad::SOLID_COLOR, round_trip_quad->material); |
| 330 EXPECT_EQ(rect, round_trip_quad->rect); |
| 331 EXPECT_EQ(opaque_rect, round_trip_quad->opaque_rect); |
| 332 EXPECT_EQ(visible_rect, round_trip_quad->visible_rect); |
| 333 EXPECT_EQ(needs_blending, round_trip_quad->needs_blending); |
| 334 const cc::SolidColorDrawQuad* round_trip_color_quad = |
| 335 cc::SolidColorDrawQuad::MaterialCast(round_trip_quad); |
| 336 EXPECT_EQ(arbitrary_color, round_trip_color_quad->color); |
| 337 EXPECT_EQ(force_anti_aliasing_off, |
| 338 round_trip_color_quad->force_anti_aliasing_off); |
| 339 |
| 340 round_trip_quad = round_trip_pass->quad_list.ElementAt(1); |
| 341 // Second is surface quad. |
| 342 ASSERT_EQ(cc::DrawQuad::SURFACE_CONTENT, round_trip_quad->material); |
| 343 const cc::SurfaceDrawQuad* round_trip_surface_quad = |
| 344 cc::SurfaceDrawQuad::MaterialCast(round_trip_quad); |
| 345 EXPECT_EQ(arbitrary_id, round_trip_surface_quad->surface_id); |
| 346 |
| 347 round_trip_quad = round_trip_pass->quad_list.ElementAt(2); |
| 348 // Third is texture quad. |
| 349 ASSERT_EQ(cc::DrawQuad::TEXTURE_CONTENT, round_trip_quad->material); |
| 350 const cc::TextureDrawQuad* round_trip_texture_quad = |
| 351 cc::TextureDrawQuad::MaterialCast(round_trip_quad); |
| 352 EXPECT_EQ(resource_id, round_trip_texture_quad->resource_id); |
| 353 EXPECT_EQ(premultiplied_alpha, round_trip_texture_quad->premultiplied_alpha); |
| 354 EXPECT_EQ(uv_top_left, round_trip_texture_quad->uv_top_left); |
| 355 EXPECT_EQ(uv_bottom_right, round_trip_texture_quad->uv_bottom_right); |
| 356 EXPECT_EQ(background_color, round_trip_texture_quad->background_color); |
| 357 for (size_t i = 0; i < 4; ++i) { |
| 358 EXPECT_EQ(vertex_opacity[i], round_trip_texture_quad->vertex_opacity[i]) |
| 359 << i; |
| 360 } |
| 361 EXPECT_EQ(flipped, round_trip_texture_quad->flipped); |
| 362 } |
| 363 |
| 364 TEST(SurfaceLibTest, Mailbox) { |
| 365 gpu::Mailbox mailbox; |
| 366 mailbox.Generate(); |
| 367 |
| 368 MailboxPtr mojo_mailbox = Mailbox::From(mailbox); |
| 369 EXPECT_EQ(0, memcmp(mailbox.name, &mojo_mailbox->name.storage()[0], 64)); |
| 370 |
| 371 gpu::Mailbox round_trip_mailbox = mojo_mailbox.To<gpu::Mailbox>(); |
| 372 EXPECT_EQ(mailbox, round_trip_mailbox); |
| 373 } |
| 374 |
| 375 TEST(SurfaceLibTest, MailboxEmptyName) { |
| 376 MailboxPtr mojo_mailbox = Mailbox::New(); |
| 377 |
| 378 gpu::Mailbox converted_mailbox = mojo_mailbox.To<gpu::Mailbox>(); |
| 379 EXPECT_TRUE(converted_mailbox.IsZero()); |
| 380 } |
| 381 |
| 382 TEST(SurfaceLibTest, MailboxHolder) { |
| 383 gpu::Mailbox mailbox; |
| 384 mailbox.Generate(); |
| 385 uint32_t texture_target = GL_TEXTURE_2D; |
| 386 uint32_t sync_point = 7u; |
| 387 gpu::MailboxHolder holder(mailbox, texture_target, sync_point); |
| 388 |
| 389 MailboxHolderPtr mojo_holder = MailboxHolder::From(holder); |
| 390 EXPECT_EQ(texture_target, mojo_holder->texture_target); |
| 391 EXPECT_EQ(sync_point, mojo_holder->sync_point); |
| 392 |
| 393 gpu::MailboxHolder round_trip_holder = mojo_holder.To<gpu::MailboxHolder>(); |
| 394 EXPECT_EQ(mailbox, round_trip_holder.mailbox); |
| 395 EXPECT_EQ(texture_target, round_trip_holder.texture_target); |
| 396 EXPECT_EQ(sync_point, round_trip_holder.sync_point); |
| 397 } |
| 398 |
| 399 TEST(SurfaceLibTest, TransferableResource) { |
| 400 uint32_t id = 7u; |
| 401 cc::ResourceFormat format = cc::BGRA_8888; |
| 402 uint32_t filter = 123u; |
| 403 gfx::Size size(17, 18); |
| 404 gpu::MailboxHolder mailbox_holder; |
| 405 bool is_repeated = false; |
| 406 ; |
| 407 bool is_software = false; |
| 408 cc::TransferableResource resource; |
| 409 resource.id = id; |
| 410 resource.format = format; |
| 411 resource.filter = filter; |
| 412 resource.size = size; |
| 413 resource.mailbox_holder = mailbox_holder; |
| 414 resource.is_repeated = is_repeated; |
| 415 resource.is_software = is_software; |
| 416 |
| 417 TransferableResourcePtr mojo_resource = TransferableResource::From(resource); |
| 418 EXPECT_EQ(id, mojo_resource->id); |
| 419 EXPECT_EQ(static_cast<ResourceFormat>(format), |
| 420 mojo_resource->format); |
| 421 EXPECT_EQ(filter, mojo_resource->filter); |
| 422 EXPECT_TRUE(Size::From(size)->Equals(*mojo_resource->size)); |
| 423 EXPECT_EQ(is_repeated, mojo_resource->is_repeated); |
| 424 EXPECT_EQ(is_software, mojo_resource->is_software); |
| 425 |
| 426 cc::TransferableResource round_trip_resource = |
| 427 mojo_resource.To<cc::TransferableResource>(); |
| 428 EXPECT_EQ(id, round_trip_resource.id); |
| 429 EXPECT_EQ(format, round_trip_resource.format); |
| 430 EXPECT_EQ(filter, round_trip_resource.filter); |
| 431 EXPECT_EQ(size, round_trip_resource.size); |
| 432 EXPECT_EQ(mailbox_holder.mailbox, round_trip_resource.mailbox_holder.mailbox); |
| 433 EXPECT_EQ(mailbox_holder.texture_target, |
| 434 round_trip_resource.mailbox_holder.texture_target); |
| 435 EXPECT_EQ(mailbox_holder.sync_point, |
| 436 round_trip_resource.mailbox_holder.sync_point); |
| 437 EXPECT_EQ(is_repeated, round_trip_resource.is_repeated); |
| 438 EXPECT_EQ(is_software, round_trip_resource.is_software); |
| 439 } |
| 440 |
| 441 TEST(SurfaceLibTest, ReturnedResource) { |
| 442 uint32_t id = 5u; |
| 443 uint32_t sync_point = 24u; |
| 444 int count = 2; |
| 445 bool lost = false; |
| 446 cc::ReturnedResource resource; |
| 447 resource.id = id; |
| 448 resource.sync_point = sync_point; |
| 449 resource.count = count; |
| 450 resource.lost = lost; |
| 451 |
| 452 ReturnedResourcePtr mojo_resource = ReturnedResource::From(resource); |
| 453 EXPECT_EQ(id, mojo_resource->id); |
| 454 EXPECT_EQ(sync_point, mojo_resource->sync_point); |
| 455 EXPECT_EQ(count, mojo_resource->count); |
| 456 EXPECT_EQ(lost, mojo_resource->lost); |
| 457 |
| 458 cc::ReturnedResource round_trip_resource = |
| 459 mojo_resource.To<cc::ReturnedResource>(); |
| 460 EXPECT_EQ(id, round_trip_resource.id); |
| 461 EXPECT_EQ(sync_point, round_trip_resource.sync_point); |
| 462 EXPECT_EQ(count, round_trip_resource.count); |
| 463 EXPECT_EQ(lost, round_trip_resource.lost); |
| 464 } |
| 465 |
| 466 } // namespace |
| 467 } // namespace mojo |
| OLD | NEW |