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

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

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