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

Side by Side Diff: cc/resources/video_resource_updater_unittest.cc

Issue 2763223003: Reland of cc: Don't use StreamVideoDrawQuad on any platform but Android. (Closed)
Patch Set: Fix tests. Created 3 years, 6 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
« no previous file with comments | « cc/resources/video_resource_updater.cc ('k') | cc/trees/layer_tree_settings.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/resources/video_resource_updater.h" 5 #include "cc/resources/video_resource_updater.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 } 242 }
243 243
244 WebGraphicsContext3DUploadCounter* context3d_; 244 WebGraphicsContext3DUploadCounter* context3d_;
245 scoped_refptr<TestContextProvider> context_provider_; 245 scoped_refptr<TestContextProvider> context_provider_;
246 std::unique_ptr<SharedBitmapManagerAllocationCounter> shared_bitmap_manager_; 246 std::unique_ptr<SharedBitmapManagerAllocationCounter> shared_bitmap_manager_;
247 std::unique_ptr<ResourceProvider> resource_provider3d_; 247 std::unique_ptr<ResourceProvider> resource_provider3d_;
248 std::unique_ptr<ResourceProvider> resource_provider_software_; 248 std::unique_ptr<ResourceProvider> resource_provider_software_;
249 }; 249 };
250 250
251 TEST_F(VideoResourceUpdaterTest, SoftwareFrame) { 251 TEST_F(VideoResourceUpdaterTest, SoftwareFrame) {
252 bool use_stream_video_draw_quad = false;
252 VideoResourceUpdater updater(context_provider_.get(), 253 VideoResourceUpdater updater(context_provider_.get(),
253 resource_provider3d_.get()); 254 resource_provider3d_.get(),
255 use_stream_video_draw_quad);
254 scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame(); 256 scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
255 257
256 VideoFrameExternalResources resources = 258 VideoFrameExternalResources resources =
257 updater.CreateExternalResourcesFromVideoFrame(video_frame); 259 updater.CreateExternalResourcesFromVideoFrame(video_frame);
258 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type); 260 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type);
259 } 261 }
260 262
261 TEST_F(VideoResourceUpdaterTest, HighBitFrameNoF16) { 263 TEST_F(VideoResourceUpdaterTest, HighBitFrameNoF16) {
264 bool use_stream_video_draw_quad = false;
262 VideoResourceUpdater updater(context_provider_.get(), 265 VideoResourceUpdater updater(context_provider_.get(),
263 resource_provider3d_.get()); 266 resource_provider3d_.get(),
267 use_stream_video_draw_quad);
264 scoped_refptr<media::VideoFrame> video_frame = CreateTestHighBitFrame(); 268 scoped_refptr<media::VideoFrame> video_frame = CreateTestHighBitFrame();
265 269
266 VideoFrameExternalResources resources = 270 VideoFrameExternalResources resources =
267 updater.CreateExternalResourcesFromVideoFrame(video_frame); 271 updater.CreateExternalResourcesFromVideoFrame(video_frame);
268 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type); 272 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type);
269 } 273 }
270 274
271 class VideoResourceUpdaterTestWithF16 : public VideoResourceUpdaterTest { 275 class VideoResourceUpdaterTestWithF16 : public VideoResourceUpdaterTest {
272 public: 276 public:
273 VideoResourceUpdaterTestWithF16() : VideoResourceUpdaterTest() { 277 VideoResourceUpdaterTestWithF16() : VideoResourceUpdaterTest() {
274 context3d_->set_support_texture_half_float_linear(true); 278 context3d_->set_support_texture_half_float_linear(true);
275 } 279 }
276 }; 280 };
277 281
278 TEST_F(VideoResourceUpdaterTestWithF16, HighBitFrame) { 282 TEST_F(VideoResourceUpdaterTestWithF16, HighBitFrame) {
283 bool use_stream_video_draw_quad = false;
279 VideoResourceUpdater updater(context_provider_.get(), 284 VideoResourceUpdater updater(context_provider_.get(),
280 resource_provider3d_.get()); 285 resource_provider3d_.get(),
286 use_stream_video_draw_quad);
281 scoped_refptr<media::VideoFrame> video_frame = CreateTestHighBitFrame(); 287 scoped_refptr<media::VideoFrame> video_frame = CreateTestHighBitFrame();
282 288
283 VideoFrameExternalResources resources = 289 VideoFrameExternalResources resources =
284 updater.CreateExternalResourcesFromVideoFrame(video_frame); 290 updater.CreateExternalResourcesFromVideoFrame(video_frame);
285 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type); 291 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type);
286 EXPECT_NEAR(resources.multiplier, 2.0, 0.1); 292 EXPECT_NEAR(resources.multiplier, 2.0, 0.1);
287 EXPECT_NEAR(resources.offset, 0.5, 0.1); 293 EXPECT_NEAR(resources.offset, 0.5, 0.1);
288 294
289 // Create the resource again, to test the path where the 295 // Create the resource again, to test the path where the
290 // resources are cached. 296 // resources are cached.
291 VideoFrameExternalResources resources2 = 297 VideoFrameExternalResources resources2 =
292 updater.CreateExternalResourcesFromVideoFrame(video_frame); 298 updater.CreateExternalResourcesFromVideoFrame(video_frame);
293 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources2.type); 299 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources2.type);
294 EXPECT_NEAR(resources2.multiplier, 2.0, 0.1); 300 EXPECT_NEAR(resources2.multiplier, 2.0, 0.1);
295 EXPECT_NEAR(resources2.offset, 0.5, 0.1); 301 EXPECT_NEAR(resources2.offset, 0.5, 0.1);
296 } 302 }
297 303
298 TEST_F(VideoResourceUpdaterTest, HighBitFrameSoftwareCompositor) { 304 TEST_F(VideoResourceUpdaterTest, HighBitFrameSoftwareCompositor) {
299 VideoResourceUpdater updater(nullptr, resource_provider_software_.get()); 305 bool use_stream_video_draw_quad = false;
306 VideoResourceUpdater updater(nullptr, resource_provider_software_.get(),
307 use_stream_video_draw_quad);
300 scoped_refptr<media::VideoFrame> video_frame = CreateTestHighBitFrame(); 308 scoped_refptr<media::VideoFrame> video_frame = CreateTestHighBitFrame();
301 309
302 VideoFrameExternalResources resources = 310 VideoFrameExternalResources resources =
303 updater.CreateExternalResourcesFromVideoFrame(video_frame); 311 updater.CreateExternalResourcesFromVideoFrame(video_frame);
304 EXPECT_EQ(VideoFrameExternalResources::SOFTWARE_RESOURCE, resources.type); 312 EXPECT_EQ(VideoFrameExternalResources::SOFTWARE_RESOURCE, resources.type);
305 } 313 }
306 314
307 TEST_F(VideoResourceUpdaterTest, WonkySoftwareFrame) { 315 TEST_F(VideoResourceUpdaterTest, WonkySoftwareFrame) {
316 bool use_stream_video_draw_quad = false;
308 VideoResourceUpdater updater(context_provider_.get(), 317 VideoResourceUpdater updater(context_provider_.get(),
309 resource_provider3d_.get()); 318 resource_provider3d_.get(),
319 use_stream_video_draw_quad);
310 scoped_refptr<media::VideoFrame> video_frame = CreateWonkyTestYUVVideoFrame(); 320 scoped_refptr<media::VideoFrame> video_frame = CreateWonkyTestYUVVideoFrame();
311 321
312 VideoFrameExternalResources resources = 322 VideoFrameExternalResources resources =
313 updater.CreateExternalResourcesFromVideoFrame(video_frame); 323 updater.CreateExternalResourcesFromVideoFrame(video_frame);
314 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type); 324 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type);
315 } 325 }
316 326
317 TEST_F(VideoResourceUpdaterTest, WonkySoftwareFrameSoftwareCompositor) { 327 TEST_F(VideoResourceUpdaterTest, WonkySoftwareFrameSoftwareCompositor) {
318 VideoResourceUpdater updater(nullptr, resource_provider_software_.get()); 328 bool use_stream_video_draw_quad = false;
329 VideoResourceUpdater updater(nullptr, resource_provider_software_.get(),
330 use_stream_video_draw_quad);
319 scoped_refptr<media::VideoFrame> video_frame = CreateWonkyTestYUVVideoFrame(); 331 scoped_refptr<media::VideoFrame> video_frame = CreateWonkyTestYUVVideoFrame();
320 332
321 VideoFrameExternalResources resources = 333 VideoFrameExternalResources resources =
322 updater.CreateExternalResourcesFromVideoFrame(video_frame); 334 updater.CreateExternalResourcesFromVideoFrame(video_frame);
323 EXPECT_EQ(VideoFrameExternalResources::SOFTWARE_RESOURCE, resources.type); 335 EXPECT_EQ(VideoFrameExternalResources::SOFTWARE_RESOURCE, resources.type);
324 } 336 }
325 337
326 TEST_F(VideoResourceUpdaterTest, ReuseResource) { 338 TEST_F(VideoResourceUpdaterTest, ReuseResource) {
339 bool use_stream_video_draw_quad = false;
327 VideoResourceUpdater updater(context_provider_.get(), 340 VideoResourceUpdater updater(context_provider_.get(),
328 resource_provider3d_.get()); 341 resource_provider3d_.get(),
342 use_stream_video_draw_quad);
329 scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame(); 343 scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
330 video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234)); 344 video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234));
331 345
332 // Allocate the resources for a YUV video frame. 346 // Allocate the resources for a YUV video frame.
333 context3d_->ResetUploadCount(); 347 context3d_->ResetUploadCount();
334 VideoFrameExternalResources resources = 348 VideoFrameExternalResources resources =
335 updater.CreateExternalResourcesFromVideoFrame(video_frame); 349 updater.CreateExternalResourcesFromVideoFrame(video_frame);
336 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type); 350 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type);
337 EXPECT_EQ(size_t(3), resources.mailboxes.size()); 351 EXPECT_EQ(size_t(3), resources.mailboxes.size());
338 EXPECT_EQ(size_t(3), resources.release_callbacks.size()); 352 EXPECT_EQ(size_t(3), resources.release_callbacks.size());
(...skipping 10 matching lines...) Expand all
349 context3d_->ResetUploadCount(); 363 context3d_->ResetUploadCount();
350 resources = updater.CreateExternalResourcesFromVideoFrame(video_frame); 364 resources = updater.CreateExternalResourcesFromVideoFrame(video_frame);
351 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type); 365 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type);
352 EXPECT_EQ(size_t(3), resources.mailboxes.size()); 366 EXPECT_EQ(size_t(3), resources.mailboxes.size());
353 EXPECT_EQ(size_t(3), resources.release_callbacks.size()); 367 EXPECT_EQ(size_t(3), resources.release_callbacks.size());
354 // The data should be reused so expect no texture uploads. 368 // The data should be reused so expect no texture uploads.
355 EXPECT_EQ(0, context3d_->UploadCount()); 369 EXPECT_EQ(0, context3d_->UploadCount());
356 } 370 }
357 371
358 TEST_F(VideoResourceUpdaterTest, ReuseResourceNoDelete) { 372 TEST_F(VideoResourceUpdaterTest, ReuseResourceNoDelete) {
373 bool use_stream_video_draw_quad = false;
359 VideoResourceUpdater updater(context_provider_.get(), 374 VideoResourceUpdater updater(context_provider_.get(),
360 resource_provider3d_.get()); 375 resource_provider3d_.get(),
376 use_stream_video_draw_quad);
361 scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame(); 377 scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
362 video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234)); 378 video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234));
363 379
364 // Allocate the resources for a YUV video frame. 380 // Allocate the resources for a YUV video frame.
365 context3d_->ResetUploadCount(); 381 context3d_->ResetUploadCount();
366 VideoFrameExternalResources resources = 382 VideoFrameExternalResources resources =
367 updater.CreateExternalResourcesFromVideoFrame(video_frame); 383 updater.CreateExternalResourcesFromVideoFrame(video_frame);
368 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type); 384 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type);
369 EXPECT_EQ(size_t(3), resources.mailboxes.size()); 385 EXPECT_EQ(size_t(3), resources.mailboxes.size());
370 EXPECT_EQ(size_t(3), resources.release_callbacks.size()); 386 EXPECT_EQ(size_t(3), resources.release_callbacks.size());
371 EXPECT_EQ(size_t(0), resources.software_resources.size()); 387 EXPECT_EQ(size_t(0), resources.software_resources.size());
372 // Expect exactly three texture uploads, one for each plane. 388 // Expect exactly three texture uploads, one for each plane.
373 EXPECT_EQ(3, context3d_->UploadCount()); 389 EXPECT_EQ(3, context3d_->UploadCount());
374 390
375 // Allocate resources for the same frame. 391 // Allocate resources for the same frame.
376 context3d_->ResetUploadCount(); 392 context3d_->ResetUploadCount();
377 resources = updater.CreateExternalResourcesFromVideoFrame(video_frame); 393 resources = updater.CreateExternalResourcesFromVideoFrame(video_frame);
378 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type); 394 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type);
379 EXPECT_EQ(size_t(3), resources.mailboxes.size()); 395 EXPECT_EQ(size_t(3), resources.mailboxes.size());
380 EXPECT_EQ(size_t(3), resources.release_callbacks.size()); 396 EXPECT_EQ(size_t(3), resources.release_callbacks.size());
381 // The data should be reused so expect no texture uploads. 397 // The data should be reused so expect no texture uploads.
382 EXPECT_EQ(0, context3d_->UploadCount()); 398 EXPECT_EQ(0, context3d_->UploadCount());
383 } 399 }
384 400
385 TEST_F(VideoResourceUpdaterTest, SoftwareFrameSoftwareCompositor) { 401 TEST_F(VideoResourceUpdaterTest, SoftwareFrameSoftwareCompositor) {
386 VideoResourceUpdater updater(nullptr, resource_provider_software_.get()); 402 bool use_stream_video_draw_quad = false;
403 VideoResourceUpdater updater(nullptr, resource_provider_software_.get(),
404 use_stream_video_draw_quad);
387 scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame(); 405 scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
388 406
389 VideoFrameExternalResources resources = 407 VideoFrameExternalResources resources =
390 updater.CreateExternalResourcesFromVideoFrame(video_frame); 408 updater.CreateExternalResourcesFromVideoFrame(video_frame);
391 EXPECT_EQ(VideoFrameExternalResources::SOFTWARE_RESOURCE, resources.type); 409 EXPECT_EQ(VideoFrameExternalResources::SOFTWARE_RESOURCE, resources.type);
392 } 410 }
393 411
394 TEST_F(VideoResourceUpdaterTest, ReuseResourceSoftwareCompositor) { 412 TEST_F(VideoResourceUpdaterTest, ReuseResourceSoftwareCompositor) {
395 VideoResourceUpdater updater(nullptr, resource_provider_software_.get()); 413 bool use_stream_video_draw_quad = false;
414 VideoResourceUpdater updater(nullptr, resource_provider_software_.get(),
415 use_stream_video_draw_quad);
396 scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame(); 416 scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
397 video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234)); 417 video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234));
398 418
399 // Allocate the resources for a software video frame. 419 // Allocate the resources for a software video frame.
400 shared_bitmap_manager_->ResetAllocationCount(); 420 shared_bitmap_manager_->ResetAllocationCount();
401 VideoFrameExternalResources resources = 421 VideoFrameExternalResources resources =
402 updater.CreateExternalResourcesFromVideoFrame(video_frame); 422 updater.CreateExternalResourcesFromVideoFrame(video_frame);
403 EXPECT_EQ(VideoFrameExternalResources::SOFTWARE_RESOURCE, resources.type); 423 EXPECT_EQ(VideoFrameExternalResources::SOFTWARE_RESOURCE, resources.type);
404 EXPECT_EQ(size_t(0), resources.mailboxes.size()); 424 EXPECT_EQ(size_t(0), resources.mailboxes.size());
405 EXPECT_EQ(size_t(0), resources.release_callbacks.size()); 425 EXPECT_EQ(size_t(0), resources.release_callbacks.size());
(...skipping 10 matching lines...) Expand all
416 resources = updater.CreateExternalResourcesFromVideoFrame(video_frame); 436 resources = updater.CreateExternalResourcesFromVideoFrame(video_frame);
417 EXPECT_EQ(VideoFrameExternalResources::SOFTWARE_RESOURCE, resources.type); 437 EXPECT_EQ(VideoFrameExternalResources::SOFTWARE_RESOURCE, resources.type);
418 EXPECT_EQ(size_t(0), resources.mailboxes.size()); 438 EXPECT_EQ(size_t(0), resources.mailboxes.size());
419 EXPECT_EQ(size_t(0), resources.release_callbacks.size()); 439 EXPECT_EQ(size_t(0), resources.release_callbacks.size());
420 EXPECT_EQ(size_t(1), resources.software_resources.size()); 440 EXPECT_EQ(size_t(1), resources.software_resources.size());
421 // The data should be reused so expect no new allocations. 441 // The data should be reused so expect no new allocations.
422 EXPECT_EQ(0, shared_bitmap_manager_->AllocationCount()); 442 EXPECT_EQ(0, shared_bitmap_manager_->AllocationCount());
423 } 443 }
424 444
425 TEST_F(VideoResourceUpdaterTest, ReuseResourceNoDeleteSoftwareCompositor) { 445 TEST_F(VideoResourceUpdaterTest, ReuseResourceNoDeleteSoftwareCompositor) {
426 VideoResourceUpdater updater(nullptr, resource_provider_software_.get()); 446 bool use_stream_video_draw_quad = false;
447 VideoResourceUpdater updater(nullptr, resource_provider_software_.get(),
448 use_stream_video_draw_quad);
427 scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame(); 449 scoped_refptr<media::VideoFrame> video_frame = CreateTestYUVVideoFrame();
428 video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234)); 450 video_frame->set_timestamp(base::TimeDelta::FromSeconds(1234));
429 451
430 // Allocate the resources for a software video frame. 452 // Allocate the resources for a software video frame.
431 shared_bitmap_manager_->ResetAllocationCount(); 453 shared_bitmap_manager_->ResetAllocationCount();
432 VideoFrameExternalResources resources = 454 VideoFrameExternalResources resources =
433 updater.CreateExternalResourcesFromVideoFrame(video_frame); 455 updater.CreateExternalResourcesFromVideoFrame(video_frame);
434 EXPECT_EQ(VideoFrameExternalResources::SOFTWARE_RESOURCE, resources.type); 456 EXPECT_EQ(VideoFrameExternalResources::SOFTWARE_RESOURCE, resources.type);
435 EXPECT_EQ(size_t(0), resources.mailboxes.size()); 457 EXPECT_EQ(size_t(0), resources.mailboxes.size());
436 EXPECT_EQ(size_t(0), resources.release_callbacks.size()); 458 EXPECT_EQ(size_t(0), resources.release_callbacks.size());
437 EXPECT_EQ(size_t(1), resources.software_resources.size()); 459 EXPECT_EQ(size_t(1), resources.software_resources.size());
438 // Expect exactly one allocated shared bitmap. 460 // Expect exactly one allocated shared bitmap.
439 EXPECT_EQ(1, shared_bitmap_manager_->AllocationCount()); 461 EXPECT_EQ(1, shared_bitmap_manager_->AllocationCount());
440 462
441 // Allocate resources for the same frame. 463 // Allocate resources for the same frame.
442 shared_bitmap_manager_->ResetAllocationCount(); 464 shared_bitmap_manager_->ResetAllocationCount();
443 resources = updater.CreateExternalResourcesFromVideoFrame(video_frame); 465 resources = updater.CreateExternalResourcesFromVideoFrame(video_frame);
444 EXPECT_EQ(VideoFrameExternalResources::SOFTWARE_RESOURCE, resources.type); 466 EXPECT_EQ(VideoFrameExternalResources::SOFTWARE_RESOURCE, resources.type);
445 EXPECT_EQ(size_t(0), resources.mailboxes.size()); 467 EXPECT_EQ(size_t(0), resources.mailboxes.size());
446 EXPECT_EQ(size_t(0), resources.release_callbacks.size()); 468 EXPECT_EQ(size_t(0), resources.release_callbacks.size());
447 EXPECT_EQ(size_t(1), resources.software_resources.size()); 469 EXPECT_EQ(size_t(1), resources.software_resources.size());
448 // The data should be reused so expect no new allocations. 470 // The data should be reused so expect no new allocations.
449 EXPECT_EQ(0, shared_bitmap_manager_->AllocationCount()); 471 EXPECT_EQ(0, shared_bitmap_manager_->AllocationCount());
450 } 472 }
451 473
452 TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes) { 474 TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes) {
475 bool use_stream_video_draw_quad = false;
453 VideoResourceUpdater updater(context_provider_.get(), 476 VideoResourceUpdater updater(context_provider_.get(),
454 resource_provider3d_.get()); 477 resource_provider3d_.get(),
478 use_stream_video_draw_quad);
455 479
456 scoped_refptr<media::VideoFrame> video_frame = 480 scoped_refptr<media::VideoFrame> video_frame =
457 CreateTestRGBAHardwareVideoFrame(); 481 CreateTestRGBAHardwareVideoFrame();
458 482
459 VideoFrameExternalResources resources = 483 VideoFrameExternalResources resources =
460 updater.CreateExternalResourcesFromVideoFrame(video_frame); 484 updater.CreateExternalResourcesFromVideoFrame(video_frame);
461 EXPECT_EQ(VideoFrameExternalResources::RGBA_PREMULTIPLIED_RESOURCE, 485 EXPECT_EQ(VideoFrameExternalResources::RGBA_PREMULTIPLIED_RESOURCE,
462 resources.type); 486 resources.type);
463 EXPECT_EQ(1u, resources.mailboxes.size()); 487 EXPECT_EQ(1u, resources.mailboxes.size());
464 EXPECT_EQ(1u, resources.release_callbacks.size()); 488 EXPECT_EQ(1u, resources.release_callbacks.size());
(...skipping 10 matching lines...) Expand all
475 499
476 video_frame = CreateTestYuvHardwareVideoFrame(); 500 video_frame = CreateTestYuvHardwareVideoFrame();
477 video_frame->metadata()->SetBoolean( 501 video_frame->metadata()->SetBoolean(
478 media::VideoFrameMetadata::READ_LOCK_FENCES_ENABLED, true); 502 media::VideoFrameMetadata::READ_LOCK_FENCES_ENABLED, true);
479 503
480 resources = updater.CreateExternalResourcesFromVideoFrame(video_frame); 504 resources = updater.CreateExternalResourcesFromVideoFrame(video_frame);
481 EXPECT_TRUE(resources.read_lock_fences_enabled); 505 EXPECT_TRUE(resources.read_lock_fences_enabled);
482 } 506 }
483 507
484 TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes_StreamTexture) { 508 TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes_StreamTexture) {
509 bool use_stream_video_draw_quad = true;
485 VideoResourceUpdater updater(context_provider_.get(), 510 VideoResourceUpdater updater(context_provider_.get(),
486 resource_provider3d_.get()); 511 resource_provider3d_.get(),
512 use_stream_video_draw_quad);
487 context3d_->ResetTextureCreationCount(); 513 context3d_->ResetTextureCreationCount();
488 scoped_refptr<media::VideoFrame> video_frame = 514 scoped_refptr<media::VideoFrame> video_frame =
489 CreateTestStreamTextureHardwareVideoFrame(false); 515 CreateTestStreamTextureHardwareVideoFrame(false);
490 516
491 VideoFrameExternalResources resources = 517 VideoFrameExternalResources resources =
492 updater.CreateExternalResourcesFromVideoFrame(video_frame); 518 updater.CreateExternalResourcesFromVideoFrame(video_frame);
493 EXPECT_EQ(VideoFrameExternalResources::STREAM_TEXTURE_RESOURCE, 519 EXPECT_EQ(VideoFrameExternalResources::STREAM_TEXTURE_RESOURCE,
494 resources.type); 520 resources.type);
495 EXPECT_EQ(1u, resources.mailboxes.size()); 521 EXPECT_EQ(1u, resources.mailboxes.size());
496 EXPECT_EQ((GLenum)GL_TEXTURE_EXTERNAL_OES, resources.mailboxes[0].target()); 522 EXPECT_EQ((GLenum)GL_TEXTURE_EXTERNAL_OES, resources.mailboxes[0].target());
497 EXPECT_EQ(1u, resources.release_callbacks.size()); 523 EXPECT_EQ(1u, resources.release_callbacks.size());
498 EXPECT_EQ(0u, resources.software_resources.size()); 524 EXPECT_EQ(0u, resources.software_resources.size());
499 EXPECT_EQ(0, context3d_->TextureCreationCount()); 525 EXPECT_EQ(0, context3d_->TextureCreationCount());
500 526
501 // A copied stream texture should return an RGBA resource in a new 527 // A copied stream texture should return an RGBA resource in a new
502 // GL_TEXTURE_2D texture. 528 // GL_TEXTURE_2D texture.
503 context3d_->ResetTextureCreationCount(); 529 context3d_->ResetTextureCreationCount();
504 video_frame = CreateTestStreamTextureHardwareVideoFrame(true); 530 video_frame = CreateTestStreamTextureHardwareVideoFrame(true);
505 context3d_->ResetImmutableTextureCreated(); 531 context3d_->ResetImmutableTextureCreated();
506 resources = updater.CreateExternalResourcesFromVideoFrame(video_frame); 532 resources = updater.CreateExternalResourcesFromVideoFrame(video_frame);
507 EXPECT_EQ(VideoFrameExternalResources::RGBA_RESOURCE, resources.type); 533 EXPECT_EQ(VideoFrameExternalResources::RGBA_PREMULTIPLIED_RESOURCE,
534 resources.type);
508 EXPECT_EQ(1u, resources.mailboxes.size()); 535 EXPECT_EQ(1u, resources.mailboxes.size());
509 EXPECT_EQ((GLenum)GL_TEXTURE_2D, resources.mailboxes[0].target()); 536 EXPECT_EQ((GLenum)GL_TEXTURE_2D, resources.mailboxes[0].target());
510 EXPECT_EQ(1u, resources.release_callbacks.size()); 537 EXPECT_EQ(1u, resources.release_callbacks.size());
511 EXPECT_EQ(0u, resources.software_resources.size()); 538 EXPECT_EQ(0u, resources.software_resources.size());
512 EXPECT_EQ(1, context3d_->TextureCreationCount()); 539 EXPECT_EQ(1, context3d_->TextureCreationCount());
513 540
514 // The texture copy path requires the use of CopyTextureCHROMIUM, which 541 // The texture copy path requires the use of CopyTextureCHROMIUM, which
515 // enforces that the target texture not be immutable, as it may need 542 // enforces that the target texture not be immutable, as it may need
516 // to alter the storage of the texture. Therefore, this test asserts 543 // to alter the storage of the texture. Therefore, this test asserts
517 // that an immutable texture wasn't created by glTexStorage2DEXT, when 544 // that an immutable texture wasn't created by glTexStorage2DEXT, when
518 // that extension is supported. 545 // that extension is supported.
519 EXPECT_FALSE(context3d_->WasImmutableTextureCreated()); 546 EXPECT_FALSE(context3d_->WasImmutableTextureCreated());
520 } 547 }
521 548
549 TEST_F(VideoResourceUpdaterTest, CreateForHardwarePlanes_TextureQuad) {
550 bool use_stream_video_draw_quad = false;
551 VideoResourceUpdater updater(context_provider_.get(),
552 resource_provider3d_.get(),
553 use_stream_video_draw_quad);
554 context3d_->ResetTextureCreationCount();
555 scoped_refptr<media::VideoFrame> video_frame =
556 CreateTestStreamTextureHardwareVideoFrame(false);
557
558 VideoFrameExternalResources resources =
559 updater.CreateExternalResourcesFromVideoFrame(video_frame);
560 EXPECT_EQ(VideoFrameExternalResources::RGBA_PREMULTIPLIED_RESOURCE,
561 resources.type);
562 EXPECT_EQ(1u, resources.mailboxes.size());
563 EXPECT_EQ((GLenum)GL_TEXTURE_EXTERNAL_OES, resources.mailboxes[0].target());
564 EXPECT_EQ(1u, resources.release_callbacks.size());
565 EXPECT_EQ(0u, resources.software_resources.size());
566 EXPECT_EQ(0, context3d_->TextureCreationCount());
567 }
568
522 } // namespace 569 } // namespace
523 } // namespace cc 570 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/video_resource_updater.cc ('k') | cc/trees/layer_tree_settings.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698