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

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

Issue 2007593005: Remove the concept of OutputSurface from ResourceProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: resourceprovider-no-outputsurface: moreccptcompile Created 4 years, 7 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/resource_provider.cc ('k') | cc/surfaces/display.cc » ('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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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/resource_provider.h" 5 #include "cc/resources/resource_provider.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 28 matching lines...) Expand all
39 39
40 using testing::Mock; 40 using testing::Mock;
41 using testing::NiceMock; 41 using testing::NiceMock;
42 using testing::Return; 42 using testing::Return;
43 using testing::StrictMock; 43 using testing::StrictMock;
44 using testing::_; 44 using testing::_;
45 45
46 namespace cc { 46 namespace cc {
47 namespace { 47 namespace {
48 48
49 static const bool kUseGpuMemoryBufferResources = false;
50 static const bool kDelegatedSyncPointsRequired = true;
51 static const std::vector<unsigned> kUseImageTextureTargets(
52 static_cast<size_t>(gfx::BufferFormat::LAST) + 1,
53 GL_TEXTURE_2D);
54
49 MATCHER_P(MatchesSyncToken, sync_token, "") { 55 MATCHER_P(MatchesSyncToken, sync_token, "") {
50 gpu::SyncToken other; 56 gpu::SyncToken other;
51 memcpy(&other, arg, sizeof(other)); 57 memcpy(&other, arg, sizeof(other));
52 return other == sync_token; 58 return other == sync_token;
53 } 59 }
54 60
55 static void EmptyReleaseCallback(const gpu::SyncToken& sync_token, 61 static void EmptyReleaseCallback(const gpu::SyncToken& sync_token,
56 bool lost_resource, 62 bool lost_resource,
57 BlockingTaskRunner* main_thread_task_runner) {} 63 BlockingTaskRunner* main_thread_task_runner) {}
58 64
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 break; 458 break;
453 } 459 }
454 CHECK(output_surface_->BindToClient(&output_surface_client_)); 460 CHECK(output_surface_->BindToClient(&output_surface_client_));
455 CHECK(child_output_surface_->BindToClient(&child_output_surface_client_)); 461 CHECK(child_output_surface_->BindToClient(&child_output_surface_client_));
456 462
457 shared_bitmap_manager_.reset(new TestSharedBitmapManager); 463 shared_bitmap_manager_.reset(new TestSharedBitmapManager);
458 gpu_memory_buffer_manager_.reset(new TestGpuMemoryBufferManager); 464 gpu_memory_buffer_manager_.reset(new TestGpuMemoryBufferManager);
459 child_gpu_memory_buffer_manager_ = 465 child_gpu_memory_buffer_manager_ =
460 gpu_memory_buffer_manager_->CreateClientGpuMemoryBufferManager(); 466 gpu_memory_buffer_manager_->CreateClientGpuMemoryBufferManager();
461 467
462 resource_provider_ = ResourceProvider::Create( 468 resource_provider_ = base::MakeUnique<ResourceProvider>(
463 output_surface_.get(), shared_bitmap_manager_.get(), 469 output_surface_->context_provider(), shared_bitmap_manager_.get(),
464 gpu_memory_buffer_manager_.get(), main_thread_task_runner_.get(), 0, 1, 470 gpu_memory_buffer_manager_.get(), main_thread_task_runner_.get(), 0, 1,
465 use_gpu_memory_buffer_resources_, use_image_texture_targets_); 471 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
466 child_resource_provider_ = ResourceProvider::Create( 472 kUseImageTextureTargets);
467 child_output_surface_.get(), shared_bitmap_manager_.get(), 473 child_resource_provider_ = base::MakeUnique<ResourceProvider>(
474 child_output_surface_->context_provider(), shared_bitmap_manager_.get(),
468 child_gpu_memory_buffer_manager_.get(), main_thread_task_runner_.get(), 475 child_gpu_memory_buffer_manager_.get(), main_thread_task_runner_.get(),
469 0, 1, use_gpu_memory_buffer_resources_, use_image_texture_targets_); 476 0, 1,
477 child_output_surface_->capabilities().delegated_sync_points_required,
478 kUseGpuMemoryBufferResources, kUseImageTextureTargets);
470 } 479 }
471 480
472 ResourceProviderTest() : ResourceProviderTest(true) {} 481 ResourceProviderTest() : ResourceProviderTest(true) {}
473 482
474 static void CollectResources(ReturnedResourceArray* array, 483 static void CollectResources(ReturnedResourceArray* array,
475 const ReturnedResourceArray& returned, 484 const ReturnedResourceArray& returned,
476 BlockingTaskRunner* main_thread_task_runner) { 485 BlockingTaskRunner* main_thread_task_runner) {
477 array->insert(array->end(), returned.begin(), returned.end()); 486 array->insert(array->end(), returned.begin(), returned.end());
478 } 487 }
479 488
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 SharedBitmap* shared_bitmap_ptr = shared_bitmap.get(); 529 SharedBitmap* shared_bitmap_ptr = shared_bitmap.get();
521 std::unique_ptr<SingleReleaseCallbackImpl> callback = 530 std::unique_ptr<SingleReleaseCallbackImpl> callback =
522 SingleReleaseCallbackImpl::Create(base::Bind( 531 SingleReleaseCallbackImpl::Create(base::Bind(
523 ReleaseSharedBitmapCallback, base::Passed(&shared_bitmap), 532 ReleaseSharedBitmapCallback, base::Passed(&shared_bitmap),
524 release_called, release_sync_token, lost_resource)); 533 release_called, release_sync_token, lost_resource));
525 return child_resource_provider_->CreateResourceFromTextureMailbox( 534 return child_resource_provider_->CreateResourceFromTextureMailbox(
526 TextureMailbox(shared_bitmap_ptr, size), std::move(callback)); 535 TextureMailbox(shared_bitmap_ptr, size), std::move(callback));
527 } 536 }
528 } 537 }
529 538
530 public:
531 static bool use_gpu_memory_buffer_resources() {
532 return use_gpu_memory_buffer_resources_;
533 }
534 static std::vector<unsigned> use_image_texture_targets() {
535 return use_image_texture_targets_;
536 }
537
538 protected: 539 protected:
539 static bool use_gpu_memory_buffer_resources_;
540 static std::vector<unsigned> use_image_texture_targets_;
541 std::unique_ptr<ContextSharedData> shared_data_; 540 std::unique_ptr<ContextSharedData> shared_data_;
542 ResourceProviderContext* context3d_; 541 ResourceProviderContext* context3d_;
543 ResourceProviderContext* child_context_; 542 ResourceProviderContext* child_context_;
544 FakeOutputSurfaceClient output_surface_client_; 543 FakeOutputSurfaceClient output_surface_client_;
545 FakeOutputSurfaceClient child_output_surface_client_; 544 FakeOutputSurfaceClient child_output_surface_client_;
546 std::unique_ptr<OutputSurface> output_surface_; 545 std::unique_ptr<OutputSurface> output_surface_;
547 std::unique_ptr<OutputSurface> child_output_surface_; 546 std::unique_ptr<OutputSurface> child_output_surface_;
548 std::unique_ptr<BlockingTaskRunner> main_thread_task_runner_; 547 std::unique_ptr<BlockingTaskRunner> main_thread_task_runner_;
549 std::unique_ptr<TestGpuMemoryBufferManager> gpu_memory_buffer_manager_; 548 std::unique_ptr<TestGpuMemoryBufferManager> gpu_memory_buffer_manager_;
550 std::unique_ptr<ResourceProvider> resource_provider_; 549 std::unique_ptr<ResourceProvider> resource_provider_;
551 std::unique_ptr<TestGpuMemoryBufferManager> child_gpu_memory_buffer_manager_; 550 std::unique_ptr<TestGpuMemoryBufferManager> child_gpu_memory_buffer_manager_;
552 std::unique_ptr<ResourceProvider> child_resource_provider_; 551 std::unique_ptr<ResourceProvider> child_resource_provider_;
553 std::unique_ptr<TestSharedBitmapManager> shared_bitmap_manager_; 552 std::unique_ptr<TestSharedBitmapManager> shared_bitmap_manager_;
554 }; 553 };
555 554
556 bool ResourceProviderTest::use_gpu_memory_buffer_resources_ = false;
557
558 std::vector<unsigned> ResourceProviderTest::use_image_texture_targets_ =
559 std::vector<unsigned>(static_cast<size_t>(gfx::BufferFormat::LAST) + 1,
560 GL_TEXTURE_2D);
561
562 void CheckCreateResource(ResourceProvider::ResourceType expected_default_type, 555 void CheckCreateResource(ResourceProvider::ResourceType expected_default_type,
563 ResourceProvider* resource_provider, 556 ResourceProvider* resource_provider,
564 ResourceProviderContext* context) { 557 ResourceProviderContext* context) {
565 DCHECK_EQ(expected_default_type, resource_provider->default_resource_type()); 558 DCHECK_EQ(expected_default_type, resource_provider->default_resource_type());
566 559
567 gfx::Size size(1, 1); 560 gfx::Size size(1, 1);
568 ResourceFormat format = RGBA_8888; 561 ResourceFormat format = RGBA_8888;
569 size_t pixel_size = TextureSizeBytes(size, format); 562 size_t pixel_size = TextureSizeBytes(size, format);
570 ASSERT_EQ(4U, pixel_size); 563 ASSERT_EQ(4U, pixel_size);
571 564
(...skipping 887 matching lines...) Expand 10 before | Expand all | Expand 10 after
1459 1452
1460 std::unique_ptr<ResourceProviderContext> child_context_owned( 1453 std::unique_ptr<ResourceProviderContext> child_context_owned(
1461 ResourceProviderContext::Create(shared_data_.get())); 1454 ResourceProviderContext::Create(shared_data_.get()));
1462 1455
1463 FakeOutputSurfaceClient child_output_surface_client; 1456 FakeOutputSurfaceClient child_output_surface_client;
1464 std::unique_ptr<OutputSurface> child_output_surface( 1457 std::unique_ptr<OutputSurface> child_output_surface(
1465 FakeOutputSurface::Create3d(std::move(child_context_owned))); 1458 FakeOutputSurface::Create3d(std::move(child_context_owned)));
1466 CHECK(child_output_surface->BindToClient(&child_output_surface_client)); 1459 CHECK(child_output_surface->BindToClient(&child_output_surface_client));
1467 1460
1468 std::unique_ptr<ResourceProvider> child_resource_provider( 1461 std::unique_ptr<ResourceProvider> child_resource_provider(
1469 ResourceProvider::Create( 1462 base::MakeUnique<ResourceProvider>(
1470 child_output_surface.get(), shared_bitmap_manager_.get(), 1463 child_output_surface->context_provider(),
1471 gpu_memory_buffer_manager_.get(), NULL, 0, 1, 1464 shared_bitmap_manager_.get(), gpu_memory_buffer_manager_.get(),
1472 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 1465 nullptr, 0, 1, kDelegatedSyncPointsRequired,
1466 kUseGpuMemoryBufferResources, kUseImageTextureTargets));
1473 1467
1474 gfx::Size size(1, 1); 1468 gfx::Size size(1, 1);
1475 ResourceFormat format = RGBA_8888; 1469 ResourceFormat format = RGBA_8888;
1476 size_t pixel_size = TextureSizeBytes(size, format); 1470 size_t pixel_size = TextureSizeBytes(size, format);
1477 ASSERT_EQ(4U, pixel_size); 1471 ASSERT_EQ(4U, pixel_size);
1478 1472
1479 ResourceId id1 = child_resource_provider->CreateResource( 1473 ResourceId id1 = child_resource_provider->CreateResource(
1480 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); 1474 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format);
1481 uint8_t data1[4] = { 1, 2, 3, 4 }; 1475 uint8_t data1[4] = { 1, 2, 3, 4 };
1482 child_resource_provider->CopyToResource(id1, data1, size); 1476 child_resource_provider->CopyToResource(id1, data1, size);
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after
1980 TextureStateTrackingContext* child_context = child_context_owned.get(); 1974 TextureStateTrackingContext* child_context = child_context_owned.get();
1981 1975
1982 FakeOutputSurfaceClient child_output_surface_client; 1976 FakeOutputSurfaceClient child_output_surface_client;
1983 std::unique_ptr<OutputSurface> child_output_surface( 1977 std::unique_ptr<OutputSurface> child_output_surface(
1984 FakeOutputSurface::Create3d(std::move(child_context_owned))); 1978 FakeOutputSurface::Create3d(std::move(child_context_owned)));
1985 CHECK(child_output_surface->BindToClient(&child_output_surface_client)); 1979 CHECK(child_output_surface->BindToClient(&child_output_surface_client));
1986 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( 1980 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager(
1987 new TestSharedBitmapManager()); 1981 new TestSharedBitmapManager());
1988 1982
1989 std::unique_ptr<ResourceProvider> child_resource_provider( 1983 std::unique_ptr<ResourceProvider> child_resource_provider(
1990 ResourceProvider::Create(child_output_surface.get(), 1984 base::MakeUnique<ResourceProvider>(
1991 shared_bitmap_manager.get(), NULL, NULL, 0, 1, 1985 child_output_surface->context_provider(),
1992 use_gpu_memory_buffer_resources_, 1986 shared_bitmap_manager.get(), nullptr, nullptr, 0, 1,
1993 use_image_texture_targets_)); 1987 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
1988 kUseImageTextureTargets));
1994 1989
1995 std::unique_ptr<TextureStateTrackingContext> parent_context_owned( 1990 std::unique_ptr<TextureStateTrackingContext> parent_context_owned(
1996 new TextureStateTrackingContext); 1991 new TextureStateTrackingContext);
1997 TextureStateTrackingContext* parent_context = parent_context_owned.get(); 1992 TextureStateTrackingContext* parent_context = parent_context_owned.get();
1998 1993
1999 FakeOutputSurfaceClient parent_output_surface_client; 1994 FakeOutputSurfaceClient parent_output_surface_client;
2000 std::unique_ptr<OutputSurface> parent_output_surface( 1995 std::unique_ptr<OutputSurface> parent_output_surface(
2001 FakeOutputSurface::Create3d(std::move(parent_context_owned))); 1996 FakeOutputSurface::Create3d(std::move(parent_context_owned)));
2002 CHECK(parent_output_surface->BindToClient(&parent_output_surface_client)); 1997 CHECK(parent_output_surface->BindToClient(&parent_output_surface_client));
2003 1998
2004 std::unique_ptr<ResourceProvider> parent_resource_provider( 1999 std::unique_ptr<ResourceProvider> parent_resource_provider(
2005 ResourceProvider::Create(parent_output_surface.get(), 2000 base::MakeUnique<ResourceProvider>(
2006 shared_bitmap_manager.get(), NULL, NULL, 0, 1, 2001 parent_output_surface->context_provider(),
2007 use_gpu_memory_buffer_resources_, 2002 shared_bitmap_manager.get(), nullptr, nullptr, 0, 1,
2008 use_image_texture_targets_)); 2003 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
2004 kUseImageTextureTargets));
2009 2005
2010 gfx::Size size(1, 1); 2006 gfx::Size size(1, 1);
2011 ResourceFormat format = RGBA_8888; 2007 ResourceFormat format = RGBA_8888;
2012 int child_texture_id = 1; 2008 int child_texture_id = 1;
2013 int parent_texture_id = 2; 2009 int parent_texture_id = 2;
2014 2010
2015 size_t pixel_size = TextureSizeBytes(size, format); 2011 size_t pixel_size = TextureSizeBytes(size, format);
2016 ASSERT_EQ(4U, pixel_size); 2012 ASSERT_EQ(4U, pixel_size);
2017 2013
2018 ResourceId id = child_resource_provider->CreateResource( 2014 ResourceId id = child_resource_provider->CreateResource(
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
2165 context()->produceTextureDirectCHROMIUM(texture, GL_TEXTURE_2D, mailbox.name); 2161 context()->produceTextureDirectCHROMIUM(texture, GL_TEXTURE_2D, mailbox.name);
2166 gpu::SyncToken sync_token; 2162 gpu::SyncToken sync_token;
2167 context()->genSyncToken(context()->insertFenceSync(), sync_token.GetData()); 2163 context()->genSyncToken(context()->insertFenceSync(), sync_token.GetData());
2168 EXPECT_TRUE(sync_token.HasData()); 2164 EXPECT_TRUE(sync_token.HasData());
2169 2165
2170 // All the logic below assumes that the sync token releases are all positive. 2166 // All the logic below assumes that the sync token releases are all positive.
2171 EXPECT_LT(0u, sync_token.release_count()); 2167 EXPECT_LT(0u, sync_token.release_count());
2172 2168
2173 gpu::SyncToken release_sync_token; 2169 gpu::SyncToken release_sync_token;
2174 bool lost_resource = false; 2170 bool lost_resource = false;
2175 BlockingTaskRunner* main_thread_task_runner = NULL; 2171 BlockingTaskRunner* main_thread_task_runner = nullptr;
2176 ReleaseCallbackImpl callback = 2172 ReleaseCallbackImpl callback =
2177 base::Bind(ReleaseCallback, &release_sync_token, &lost_resource, 2173 base::Bind(ReleaseCallback, &release_sync_token, &lost_resource,
2178 &main_thread_task_runner); 2174 &main_thread_task_runner);
2179 ResourceId resource = resource_provider_->CreateResourceFromTextureMailbox( 2175 ResourceId resource = resource_provider_->CreateResourceFromTextureMailbox(
2180 TextureMailbox(mailbox, sync_token, GL_TEXTURE_2D), 2176 TextureMailbox(mailbox, sync_token, GL_TEXTURE_2D),
2181 SingleReleaseCallbackImpl::Create(callback)); 2177 SingleReleaseCallbackImpl::Create(callback));
2182 EXPECT_EQ(1u, context()->NumTextures()); 2178 EXPECT_EQ(1u, context()->NumTextures());
2183 EXPECT_FALSE(release_sync_token.HasData()); 2179 EXPECT_FALSE(release_sync_token.HasData());
2184 { 2180 {
2185 // Transfer the resource, expect the sync points to be consistent. 2181 // Transfer the resource, expect the sync points to be consistent.
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
2600 gpu::Mailbox mailbox; 2596 gpu::Mailbox mailbox;
2601 context()->genMailboxCHROMIUM(mailbox.name); 2597 context()->genMailboxCHROMIUM(mailbox.name);
2602 context()->produceTextureDirectCHROMIUM(texture, GL_TEXTURE_2D, mailbox.name); 2598 context()->produceTextureDirectCHROMIUM(texture, GL_TEXTURE_2D, mailbox.name);
2603 gpu::SyncToken sync_token; 2599 gpu::SyncToken sync_token;
2604 context()->genSyncToken(context()->insertFenceSync(), sync_token.GetData()); 2600 context()->genSyncToken(context()->insertFenceSync(), sync_token.GetData());
2605 2601
2606 EXPECT_TRUE(sync_token.HasData()); 2602 EXPECT_TRUE(sync_token.HasData());
2607 2603
2608 gpu::SyncToken release_sync_token; 2604 gpu::SyncToken release_sync_token;
2609 bool lost_resource = false; 2605 bool lost_resource = false;
2610 BlockingTaskRunner* main_thread_task_runner = NULL; 2606 BlockingTaskRunner* main_thread_task_runner = nullptr;
2611 std::unique_ptr<SingleReleaseCallbackImpl> callback = 2607 std::unique_ptr<SingleReleaseCallbackImpl> callback =
2612 SingleReleaseCallbackImpl::Create( 2608 SingleReleaseCallbackImpl::Create(
2613 base::Bind(ReleaseCallback, &release_sync_token, &lost_resource, 2609 base::Bind(ReleaseCallback, &release_sync_token, &lost_resource,
2614 &main_thread_task_runner)); 2610 &main_thread_task_runner));
2615 resource_provider_->CreateResourceFromTextureMailbox( 2611 resource_provider_->CreateResourceFromTextureMailbox(
2616 TextureMailbox(mailbox, sync_token, GL_TEXTURE_2D), std::move(callback)); 2612 TextureMailbox(mailbox, sync_token, GL_TEXTURE_2D), std::move(callback));
2617 2613
2618 EXPECT_FALSE(release_sync_token.HasData()); 2614 EXPECT_FALSE(release_sync_token.HasData());
2619 EXPECT_FALSE(lost_resource); 2615 EXPECT_FALSE(lost_resource);
2620 EXPECT_EQ(NULL, main_thread_task_runner); 2616 EXPECT_FALSE(main_thread_task_runner);
2621 2617
2622 resource_provider_->DidLoseOutputSurface(); 2618 resource_provider_->DidLoseOutputSurface();
2623 resource_provider_ = nullptr; 2619 resource_provider_ = nullptr;
2624 2620
2625 EXPECT_LE(sync_token.release_count(), release_sync_token.release_count()); 2621 EXPECT_LE(sync_token.release_count(), release_sync_token.release_count());
2626 EXPECT_TRUE(lost_resource); 2622 EXPECT_TRUE(lost_resource);
2627 EXPECT_EQ(main_thread_task_runner_.get(), main_thread_task_runner); 2623 EXPECT_EQ(main_thread_task_runner_.get(), main_thread_task_runner);
2628 } 2624 }
2629 2625
2630 TEST_P(ResourceProviderTest, ScopedSampler) { 2626 TEST_P(ResourceProviderTest, ScopedSampler) {
2631 // Sampling is only supported for GL textures. 2627 // Sampling is only supported for GL textures.
2632 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) 2628 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE)
2633 return; 2629 return;
2634 2630
2635 std::unique_ptr<TextureStateTrackingContext> context_owned( 2631 std::unique_ptr<TextureStateTrackingContext> context_owned(
2636 new TextureStateTrackingContext); 2632 new TextureStateTrackingContext);
2637 TextureStateTrackingContext* context = context_owned.get(); 2633 TextureStateTrackingContext* context = context_owned.get();
2638 2634
2639 FakeOutputSurfaceClient output_surface_client; 2635 FakeOutputSurfaceClient output_surface_client;
2640 std::unique_ptr<OutputSurface> output_surface( 2636 std::unique_ptr<OutputSurface> output_surface(
2641 FakeOutputSurface::Create3d(std::move(context_owned))); 2637 FakeOutputSurface::Create3d(std::move(context_owned)));
2642 CHECK(output_surface->BindToClient(&output_surface_client)); 2638 CHECK(output_surface->BindToClient(&output_surface_client));
2643 2639
2644 std::unique_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 2640 std::unique_ptr<ResourceProvider> resource_provider(
2645 output_surface.get(), shared_bitmap_manager_.get(), 2641 base::MakeUnique<ResourceProvider>(
2646 gpu_memory_buffer_manager_.get(), NULL, 0, 1, 2642 output_surface->context_provider(), shared_bitmap_manager_.get(),
2647 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 2643 gpu_memory_buffer_manager_.get(), nullptr, 0, 1,
2644 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
2645 kUseImageTextureTargets));
2648 2646
2649 gfx::Size size(1, 1); 2647 gfx::Size size(1, 1);
2650 ResourceFormat format = RGBA_8888; 2648 ResourceFormat format = RGBA_8888;
2651 int texture_id = 1; 2649 int texture_id = 1;
2652 2650
2653 ResourceId id = resource_provider->CreateResource( 2651 ResourceId id = resource_provider->CreateResource(
2654 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); 2652 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format);
2655 2653
2656 // Check that the texture gets created with the right sampler settings. 2654 // Check that the texture gets created with the right sampler settings.
2657 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)) 2655 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id))
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
2713 2711
2714 std::unique_ptr<TextureStateTrackingContext> context_owned( 2712 std::unique_ptr<TextureStateTrackingContext> context_owned(
2715 new TextureStateTrackingContext); 2713 new TextureStateTrackingContext);
2716 TextureStateTrackingContext* context = context_owned.get(); 2714 TextureStateTrackingContext* context = context_owned.get();
2717 2715
2718 FakeOutputSurfaceClient output_surface_client; 2716 FakeOutputSurfaceClient output_surface_client;
2719 std::unique_ptr<OutputSurface> output_surface( 2717 std::unique_ptr<OutputSurface> output_surface(
2720 FakeOutputSurface::Create3d(std::move(context_owned))); 2718 FakeOutputSurface::Create3d(std::move(context_owned)));
2721 CHECK(output_surface->BindToClient(&output_surface_client)); 2719 CHECK(output_surface->BindToClient(&output_surface_client));
2722 2720
2723 std::unique_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 2721 std::unique_ptr<ResourceProvider> resource_provider(
2724 output_surface.get(), shared_bitmap_manager_.get(), 2722 base::MakeUnique<ResourceProvider>(
2725 gpu_memory_buffer_manager_.get(), NULL, 0, 1, 2723 output_surface->context_provider(), shared_bitmap_manager_.get(),
2726 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 2724 gpu_memory_buffer_manager_.get(), nullptr, 0, 1,
2725 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
2726 kUseImageTextureTargets));
2727 2727
2728 gfx::Size size(1, 1); 2728 gfx::Size size(1, 1);
2729 ResourceFormat format = RGBA_8888; 2729 ResourceFormat format = RGBA_8888;
2730 int texture_id = 1; 2730 int texture_id = 1;
2731 2731
2732 // Check that the texture gets created with the right sampler settings. 2732 // Check that the texture gets created with the right sampler settings.
2733 ResourceId id = resource_provider->CreateResource( 2733 ResourceId id = resource_provider->CreateResource(
2734 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); 2734 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format);
2735 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); 2735 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id));
2736 EXPECT_CALL(*context, 2736 EXPECT_CALL(*context,
(...skipping 19 matching lines...) Expand all
2756 2756
2757 std::unique_ptr<TextureStateTrackingContext> context_owned( 2757 std::unique_ptr<TextureStateTrackingContext> context_owned(
2758 new TextureStateTrackingContext); 2758 new TextureStateTrackingContext);
2759 TextureStateTrackingContext* context = context_owned.get(); 2759 TextureStateTrackingContext* context = context_owned.get();
2760 2760
2761 FakeOutputSurfaceClient output_surface_client; 2761 FakeOutputSurfaceClient output_surface_client;
2762 std::unique_ptr<OutputSurface> output_surface( 2762 std::unique_ptr<OutputSurface> output_surface(
2763 FakeOutputSurface::Create3d(std::move(context_owned))); 2763 FakeOutputSurface::Create3d(std::move(context_owned)));
2764 CHECK(output_surface->BindToClient(&output_surface_client)); 2764 CHECK(output_surface->BindToClient(&output_surface_client));
2765 2765
2766 std::unique_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 2766 std::unique_ptr<ResourceProvider> resource_provider(
2767 output_surface.get(), shared_bitmap_manager_.get(), 2767 base::MakeUnique<ResourceProvider>(
2768 gpu_memory_buffer_manager_.get(), NULL, 0, 1, 2768 output_surface->context_provider(), shared_bitmap_manager_.get(),
2769 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 2769 gpu_memory_buffer_manager_.get(), nullptr, 0, 1,
2770 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
2771 kUseImageTextureTargets));
2770 2772
2771 gfx::Size size(1, 1); 2773 gfx::Size size(1, 1);
2772 ResourceFormat format = RGBA_8888; 2774 ResourceFormat format = RGBA_8888;
2773 2775
2774 for (int texture_id = 1; texture_id <= 2; ++texture_id) { 2776 for (int texture_id = 1; texture_id <= 2; ++texture_id) {
2775 // Check that the texture gets created with the right sampler settings. 2777 // Check that the texture gets created with the right sampler settings.
2776 ResourceId id = resource_provider->CreateResource( 2778 ResourceId id = resource_provider->CreateResource(
2777 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); 2779 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format);
2778 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); 2780 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id));
2779 EXPECT_CALL(*context, 2781 EXPECT_CALL(*context,
(...skipping 20 matching lines...) Expand all
2800 new TextureStateTrackingContext); 2802 new TextureStateTrackingContext);
2801 TextureStateTrackingContext* context = context_owned.get(); 2803 TextureStateTrackingContext* context = context_owned.get();
2802 context->set_support_texture_storage(true); 2804 context->set_support_texture_storage(true);
2803 context->set_support_texture_usage(true); 2805 context->set_support_texture_usage(true);
2804 2806
2805 FakeOutputSurfaceClient output_surface_client; 2807 FakeOutputSurfaceClient output_surface_client;
2806 std::unique_ptr<OutputSurface> output_surface( 2808 std::unique_ptr<OutputSurface> output_surface(
2807 FakeOutputSurface::Create3d(std::move(context_owned))); 2809 FakeOutputSurface::Create3d(std::move(context_owned)));
2808 CHECK(output_surface->BindToClient(&output_surface_client)); 2810 CHECK(output_surface->BindToClient(&output_surface_client));
2809 2811
2810 std::unique_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 2812 std::unique_ptr<ResourceProvider> resource_provider(
2811 output_surface.get(), shared_bitmap_manager_.get(), 2813 base::MakeUnique<ResourceProvider>(
2812 gpu_memory_buffer_manager_.get(), NULL, 0, 1, 2814 output_surface->context_provider(), shared_bitmap_manager_.get(),
2813 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 2815 gpu_memory_buffer_manager_.get(), nullptr, 0, 1,
2816 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
2817 kUseImageTextureTargets));
2814 2818
2815 gfx::Size size(1, 1); 2819 gfx::Size size(1, 1);
2816 ResourceFormat format = RGBA_8888; 2820 ResourceFormat format = RGBA_8888;
2817 2821
2818 const ResourceProvider::TextureHint hints[4] = { 2822 const ResourceProvider::TextureHint hints[4] = {
2819 ResourceProvider::TEXTURE_HINT_DEFAULT, 2823 ResourceProvider::TEXTURE_HINT_DEFAULT,
2820 ResourceProvider::TEXTURE_HINT_IMMUTABLE, 2824 ResourceProvider::TEXTURE_HINT_IMMUTABLE,
2821 ResourceProvider::TEXTURE_HINT_FRAMEBUFFER, 2825 ResourceProvider::TEXTURE_HINT_FRAMEBUFFER,
2822 ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER, 2826 ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER,
2823 }; 2827 };
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2859 const uint32_t kBadBeef = 0xbadbeef; 2863 const uint32_t kBadBeef = 0xbadbeef;
2860 std::unique_ptr<SharedBitmap> shared_bitmap( 2864 std::unique_ptr<SharedBitmap> shared_bitmap(
2861 CreateAndFillSharedBitmap(shared_bitmap_manager_.get(), size, kBadBeef)); 2865 CreateAndFillSharedBitmap(shared_bitmap_manager_.get(), size, kBadBeef));
2862 2866
2863 FakeOutputSurfaceClient output_surface_client; 2867 FakeOutputSurfaceClient output_surface_client;
2864 std::unique_ptr<OutputSurface> output_surface( 2868 std::unique_ptr<OutputSurface> output_surface(
2865 FakeOutputSurface::CreateSoftware( 2869 FakeOutputSurface::CreateSoftware(
2866 base::WrapUnique(new SoftwareOutputDevice))); 2870 base::WrapUnique(new SoftwareOutputDevice)));
2867 CHECK(output_surface->BindToClient(&output_surface_client)); 2871 CHECK(output_surface->BindToClient(&output_surface_client));
2868 2872
2869 std::unique_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 2873 std::unique_ptr<ResourceProvider> resource_provider(
2870 output_surface.get(), shared_bitmap_manager_.get(), 2874 base::MakeUnique<ResourceProvider>(
2871 gpu_memory_buffer_manager_.get(), main_thread_task_runner_.get(), 0, 1, 2875 output_surface->context_provider(), shared_bitmap_manager_.get(),
2872 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 2876 gpu_memory_buffer_manager_.get(), main_thread_task_runner_.get(), 0,
2877 1, kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
2878 kUseImageTextureTargets));
2873 2879
2874 gpu::SyncToken release_sync_token; 2880 gpu::SyncToken release_sync_token;
2875 bool lost_resource = false; 2881 bool lost_resource = false;
2876 BlockingTaskRunner* main_thread_task_runner = NULL; 2882 BlockingTaskRunner* main_thread_task_runner = nullptr;
2877 std::unique_ptr<SingleReleaseCallbackImpl> callback = 2883 std::unique_ptr<SingleReleaseCallbackImpl> callback =
2878 SingleReleaseCallbackImpl::Create( 2884 SingleReleaseCallbackImpl::Create(
2879 base::Bind(&ReleaseCallback, &release_sync_token, &lost_resource, 2885 base::Bind(&ReleaseCallback, &release_sync_token, &lost_resource,
2880 &main_thread_task_runner)); 2886 &main_thread_task_runner));
2881 TextureMailbox mailbox(shared_bitmap.get(), size); 2887 TextureMailbox mailbox(shared_bitmap.get(), size);
2882 2888
2883 ResourceId id = resource_provider->CreateResourceFromTextureMailbox( 2889 ResourceId id = resource_provider->CreateResourceFromTextureMailbox(
2884 mailbox, std::move(callback)); 2890 mailbox, std::move(callback));
2885 EXPECT_NE(0u, id); 2891 EXPECT_NE(0u, id);
2886 2892
(...skipping 22 matching lines...) Expand all
2909 std::unique_ptr<TextureStateTrackingContext> context_owned( 2915 std::unique_ptr<TextureStateTrackingContext> context_owned(
2910 new TextureStateTrackingContext); 2916 new TextureStateTrackingContext);
2911 TextureStateTrackingContext* context = context_owned.get(); 2917 TextureStateTrackingContext* context = context_owned.get();
2912 2918
2913 FakeOutputSurfaceClient output_surface_client; 2919 FakeOutputSurfaceClient output_surface_client;
2914 std::unique_ptr<OutputSurface> output_surface( 2920 std::unique_ptr<OutputSurface> output_surface(
2915 FakeOutputSurface::Create3d(std::move(context_owned))); 2921 FakeOutputSurface::Create3d(std::move(context_owned)));
2916 CHECK(output_surface->BindToClient(&output_surface_client)); 2922 CHECK(output_surface->BindToClient(&output_surface_client));
2917 2923
2918 std::unique_ptr<ResourceProvider> resource_provider( 2924 std::unique_ptr<ResourceProvider> resource_provider(
2919 ResourceProvider::Create( 2925 base::MakeUnique<ResourceProvider>(
2920 output_surface.get(), shared_bitmap_manager, 2926 output_surface->context_provider(), shared_bitmap_manager,
2921 gpu_memory_buffer_manager, main_thread_task_runner, 0, 1, 2927 gpu_memory_buffer_manager, main_thread_task_runner, 0, 1,
2922 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 2928 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
2929 kUseImageTextureTargets));
2923 2930
2924 unsigned texture_id = 1; 2931 unsigned texture_id = 1;
2925 gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO, 0, 2932 gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO, 0,
2926 gpu::CommandBufferId::FromUnsafeValue(0x12), 2933 gpu::CommandBufferId::FromUnsafeValue(0x12),
2927 0x34); 2934 0x34);
2928 unsigned target = GL_TEXTURE_2D; 2935 unsigned target = GL_TEXTURE_2D;
2929 const GLuint64 current_fence_sync = context->GetNextFenceSync(); 2936 const GLuint64 current_fence_sync = context->GetNextFenceSync();
2930 2937
2931 EXPECT_CALL(*context, bindTexture(_, _)).Times(0); 2938 EXPECT_CALL(*context, bindTexture(_, _)).Times(0);
2932 EXPECT_CALL(*context, waitSyncToken(_)).Times(0); 2939 EXPECT_CALL(*context, waitSyncToken(_)).Times(0);
2933 EXPECT_CALL(*context, produceTextureDirectCHROMIUM(_, _, _)).Times(0); 2940 EXPECT_CALL(*context, produceTextureDirectCHROMIUM(_, _, _)).Times(0);
2934 EXPECT_CALL(*context, createAndConsumeTextureCHROMIUM(_, _)).Times(0); 2941 EXPECT_CALL(*context, createAndConsumeTextureCHROMIUM(_, _)).Times(0);
2935 2942
2936 gpu::Mailbox gpu_mailbox; 2943 gpu::Mailbox gpu_mailbox;
2937 memcpy(gpu_mailbox.name, "Hello world", strlen("Hello world") + 1); 2944 memcpy(gpu_mailbox.name, "Hello world", strlen("Hello world") + 1);
2938 gpu::SyncToken release_sync_token; 2945 gpu::SyncToken release_sync_token;
2939 bool lost_resource = false; 2946 bool lost_resource = false;
2940 BlockingTaskRunner* mailbox_task_runner = NULL; 2947 BlockingTaskRunner* mailbox_task_runner = nullptr;
2941 std::unique_ptr<SingleReleaseCallbackImpl> callback = 2948 std::unique_ptr<SingleReleaseCallbackImpl> callback =
2942 SingleReleaseCallbackImpl::Create( 2949 SingleReleaseCallbackImpl::Create(
2943 base::Bind(&ReleaseCallback, &release_sync_token, &lost_resource, 2950 base::Bind(&ReleaseCallback, &release_sync_token, &lost_resource,
2944 &mailbox_task_runner)); 2951 &mailbox_task_runner));
2945 2952
2946 TextureMailbox mailbox(gpu_mailbox, sync_token, target); 2953 TextureMailbox mailbox(gpu_mailbox, sync_token, target);
2947 mailbox.set_nearest_neighbor(mailbox_nearest_neighbor); 2954 mailbox.set_nearest_neighbor(mailbox_nearest_neighbor);
2948 2955
2949 ResourceId id = resource_provider->CreateResourceFromTextureMailbox( 2956 ResourceId id = resource_provider->CreateResourceFromTextureMailbox(
2950 mailbox, std::move(callback)); 2957 mailbox, std::move(callback));
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
3054 3061
3055 std::unique_ptr<TextureStateTrackingContext> context_owned( 3062 std::unique_ptr<TextureStateTrackingContext> context_owned(
3056 new TextureStateTrackingContext); 3063 new TextureStateTrackingContext);
3057 TextureStateTrackingContext* context = context_owned.get(); 3064 TextureStateTrackingContext* context = context_owned.get();
3058 3065
3059 FakeOutputSurfaceClient output_surface_client; 3066 FakeOutputSurfaceClient output_surface_client;
3060 std::unique_ptr<OutputSurface> output_surface( 3067 std::unique_ptr<OutputSurface> output_surface(
3061 FakeOutputSurface::Create3d(std::move(context_owned))); 3068 FakeOutputSurface::Create3d(std::move(context_owned)));
3062 CHECK(output_surface->BindToClient(&output_surface_client)); 3069 CHECK(output_surface->BindToClient(&output_surface_client));
3063 3070
3064 std::unique_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 3071 std::unique_ptr<ResourceProvider> resource_provider(
3065 output_surface.get(), shared_bitmap_manager_.get(), 3072 base::MakeUnique<ResourceProvider>(
3066 gpu_memory_buffer_manager_.get(), NULL, 0, 1, 3073 output_surface->context_provider(), shared_bitmap_manager_.get(),
3067 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 3074 gpu_memory_buffer_manager_.get(), nullptr, 0, 1,
3075 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
3076 kUseImageTextureTargets));
3068 3077
3069 gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO, 0, 3078 gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO, 0,
3070 gpu::CommandBufferId::FromUnsafeValue(0x12), 0x34); 3079 gpu::CommandBufferId::FromUnsafeValue(0x12), 0x34);
3071 const GLuint64 current_fence_sync = context->GetNextFenceSync(); 3080 const GLuint64 current_fence_sync = context->GetNextFenceSync();
3072 unsigned target = GL_TEXTURE_EXTERNAL_OES; 3081 unsigned target = GL_TEXTURE_EXTERNAL_OES;
3073 3082
3074 EXPECT_CALL(*context, bindTexture(_, _)).Times(0); 3083 EXPECT_CALL(*context, bindTexture(_, _)).Times(0);
3075 EXPECT_CALL(*context, waitSyncToken(_)).Times(0); 3084 EXPECT_CALL(*context, waitSyncToken(_)).Times(0);
3076 EXPECT_CALL(*context, produceTextureDirectCHROMIUM(_, _, _)).Times(0); 3085 EXPECT_CALL(*context, produceTextureDirectCHROMIUM(_, _, _)).Times(0);
3077 EXPECT_CALL(*context, createAndConsumeTextureCHROMIUM(_, _)).Times(0); 3086 EXPECT_CALL(*context, createAndConsumeTextureCHROMIUM(_, _)).Times(0);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
3124 3133
3125 std::unique_ptr<TextureStateTrackingContext> context_owned( 3134 std::unique_ptr<TextureStateTrackingContext> context_owned(
3126 new TextureStateTrackingContext); 3135 new TextureStateTrackingContext);
3127 TextureStateTrackingContext* context = context_owned.get(); 3136 TextureStateTrackingContext* context = context_owned.get();
3128 3137
3129 FakeOutputSurfaceClient output_surface_client; 3138 FakeOutputSurfaceClient output_surface_client;
3130 std::unique_ptr<OutputSurface> output_surface( 3139 std::unique_ptr<OutputSurface> output_surface(
3131 FakeOutputSurface::Create3d(std::move(context_owned))); 3140 FakeOutputSurface::Create3d(std::move(context_owned)));
3132 CHECK(output_surface->BindToClient(&output_surface_client)); 3141 CHECK(output_surface->BindToClient(&output_surface_client));
3133 3142
3134 std::unique_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 3143 std::unique_ptr<ResourceProvider> resource_provider(
3135 output_surface.get(), shared_bitmap_manager_.get(), 3144 base::MakeUnique<ResourceProvider>(
3136 gpu_memory_buffer_manager_.get(), NULL, 0, 1, 3145 output_surface->context_provider(), shared_bitmap_manager_.get(),
3137 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 3146 gpu_memory_buffer_manager_.get(), nullptr, 0, 1,
3147 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
3148 kUseImageTextureTargets));
3138 3149
3139 gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO, 0, 3150 gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO, 0,
3140 gpu::CommandBufferId::FromUnsafeValue(0x12), 0x34); 3151 gpu::CommandBufferId::FromUnsafeValue(0x12), 0x34);
3141 const GLuint64 current_fence_sync = context->GetNextFenceSync(); 3152 const GLuint64 current_fence_sync = context->GetNextFenceSync();
3142 unsigned target = GL_TEXTURE_2D; 3153 unsigned target = GL_TEXTURE_2D;
3143 3154
3144 EXPECT_CALL(*context, bindTexture(_, _)).Times(0); 3155 EXPECT_CALL(*context, bindTexture(_, _)).Times(0);
3145 EXPECT_CALL(*context, waitSyncToken(_)).Times(0); 3156 EXPECT_CALL(*context, waitSyncToken(_)).Times(0);
3146 EXPECT_CALL(*context, produceTextureDirectCHROMIUM(_, _, _)).Times(0); 3157 EXPECT_CALL(*context, produceTextureDirectCHROMIUM(_, _, _)).Times(0);
3147 EXPECT_CALL(*context, createAndConsumeTextureCHROMIUM(_, _)).Times(0); 3158 EXPECT_CALL(*context, createAndConsumeTextureCHROMIUM(_, _)).Times(0);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
3180 3191
3181 std::unique_ptr<TextureStateTrackingContext> context_owned( 3192 std::unique_ptr<TextureStateTrackingContext> context_owned(
3182 new TextureStateTrackingContext); 3193 new TextureStateTrackingContext);
3183 TextureStateTrackingContext* context = context_owned.get(); 3194 TextureStateTrackingContext* context = context_owned.get();
3184 3195
3185 FakeOutputSurfaceClient output_surface_client; 3196 FakeOutputSurfaceClient output_surface_client;
3186 std::unique_ptr<OutputSurface> output_surface( 3197 std::unique_ptr<OutputSurface> output_surface(
3187 FakeOutputSurface::Create3d(std::move(context_owned))); 3198 FakeOutputSurface::Create3d(std::move(context_owned)));
3188 CHECK(output_surface->BindToClient(&output_surface_client)); 3199 CHECK(output_surface->BindToClient(&output_surface_client));
3189 3200
3190 std::unique_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 3201 std::unique_ptr<ResourceProvider> resource_provider(
3191 output_surface.get(), shared_bitmap_manager_.get(), 3202 base::MakeUnique<ResourceProvider>(
3192 gpu_memory_buffer_manager_.get(), NULL, 0, 1, 3203 output_surface->context_provider(), shared_bitmap_manager_.get(),
3193 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 3204 gpu_memory_buffer_manager_.get(), nullptr, 0, 1,
3205 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
3206 kUseImageTextureTargets));
3194 3207
3195 gpu::SyncToken sync_token; 3208 gpu::SyncToken sync_token;
3196 const GLuint64 current_fence_sync = context->GetNextFenceSync(); 3209 const GLuint64 current_fence_sync = context->GetNextFenceSync();
3197 unsigned target = GL_TEXTURE_2D; 3210 unsigned target = GL_TEXTURE_2D;
3198 3211
3199 EXPECT_CALL(*context, bindTexture(_, _)).Times(0); 3212 EXPECT_CALL(*context, bindTexture(_, _)).Times(0);
3200 EXPECT_CALL(*context, waitSyncToken(_)).Times(0); 3213 EXPECT_CALL(*context, waitSyncToken(_)).Times(0);
3201 EXPECT_CALL(*context, produceTextureDirectCHROMIUM(_, _, _)).Times(0); 3214 EXPECT_CALL(*context, produceTextureDirectCHROMIUM(_, _, _)).Times(0);
3202 EXPECT_CALL(*context, createAndConsumeTextureCHROMIUM(_, _)).Times(0); 3215 EXPECT_CALL(*context, createAndConsumeTextureCHROMIUM(_, _)).Times(0);
3203 3216
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
3302 return; 3315 return;
3303 std::unique_ptr<AllocationTrackingContext3D> context_owned( 3316 std::unique_ptr<AllocationTrackingContext3D> context_owned(
3304 new StrictMock<AllocationTrackingContext3D>); 3317 new StrictMock<AllocationTrackingContext3D>);
3305 AllocationTrackingContext3D* context = context_owned.get(); 3318 AllocationTrackingContext3D* context = context_owned.get();
3306 3319
3307 FakeOutputSurfaceClient output_surface_client; 3320 FakeOutputSurfaceClient output_surface_client;
3308 std::unique_ptr<OutputSurface> output_surface( 3321 std::unique_ptr<OutputSurface> output_surface(
3309 FakeOutputSurface::Create3d(std::move(context_owned))); 3322 FakeOutputSurface::Create3d(std::move(context_owned)));
3310 CHECK(output_surface->BindToClient(&output_surface_client)); 3323 CHECK(output_surface->BindToClient(&output_surface_client));
3311 3324
3312 std::unique_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 3325 std::unique_ptr<ResourceProvider> resource_provider(
3313 output_surface.get(), shared_bitmap_manager_.get(), 3326 base::MakeUnique<ResourceProvider>(
3314 gpu_memory_buffer_manager_.get(), NULL, 0, 1, 3327 output_surface->context_provider(), shared_bitmap_manager_.get(),
3315 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 3328 gpu_memory_buffer_manager_.get(), nullptr, 0, 1,
3329 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
3330 kUseImageTextureTargets));
3316 3331
3317 gfx::Size size(2, 2); 3332 gfx::Size size(2, 2);
3318 gfx::Vector2d offset(0, 0); 3333 gfx::Vector2d offset(0, 0);
3319 ResourceFormat format = RGBA_8888; 3334 ResourceFormat format = RGBA_8888;
3320 ResourceId id = 0; 3335 ResourceId id = 0;
3321 uint8_t pixels[16] = { 0 }; 3336 uint8_t pixels[16] = { 0 };
3322 int texture_id = 123; 3337 int texture_id = 123;
3323 3338
3324 // Lazy allocation. Don't allocate when creating the resource. 3339 // Lazy allocation. Don't allocate when creating the resource.
3325 id = resource_provider->CreateResource( 3340 id = resource_provider->CreateResource(
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
3358 new StrictMock<AllocationTrackingContext3D>); 3373 new StrictMock<AllocationTrackingContext3D>);
3359 AllocationTrackingContext3D* context = context_owned.get(); 3374 AllocationTrackingContext3D* context = context_owned.get();
3360 context->set_support_texture_storage(true); 3375 context->set_support_texture_storage(true);
3361 context->set_support_texture_usage(true); 3376 context->set_support_texture_usage(true);
3362 3377
3363 FakeOutputSurfaceClient output_surface_client; 3378 FakeOutputSurfaceClient output_surface_client;
3364 std::unique_ptr<OutputSurface> output_surface( 3379 std::unique_ptr<OutputSurface> output_surface(
3365 FakeOutputSurface::Create3d(std::move(context_owned))); 3380 FakeOutputSurface::Create3d(std::move(context_owned)));
3366 CHECK(output_surface->BindToClient(&output_surface_client)); 3381 CHECK(output_surface->BindToClient(&output_surface_client));
3367 3382
3368 std::unique_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 3383 std::unique_ptr<ResourceProvider> resource_provider(
3369 output_surface.get(), shared_bitmap_manager_.get(), 3384 base::MakeUnique<ResourceProvider>(
3370 gpu_memory_buffer_manager_.get(), NULL, 0, 1, 3385 output_surface->context_provider(), shared_bitmap_manager_.get(),
3371 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 3386 gpu_memory_buffer_manager_.get(), nullptr, 0, 1,
3387 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
3388 kUseImageTextureTargets));
3372 3389
3373 gfx::Size size(2, 2); 3390 gfx::Size size(2, 2);
3374 3391
3375 const ResourceFormat formats[2] = {RGBA_8888, BGRA_8888}; 3392 const ResourceFormat formats[2] = {RGBA_8888, BGRA_8888};
3376 const ResourceProvider::TextureHint hints[4] = { 3393 const ResourceProvider::TextureHint hints[4] = {
3377 ResourceProvider::TEXTURE_HINT_DEFAULT, 3394 ResourceProvider::TEXTURE_HINT_DEFAULT,
3378 ResourceProvider::TEXTURE_HINT_IMMUTABLE, 3395 ResourceProvider::TEXTURE_HINT_IMMUTABLE,
3379 ResourceProvider::TEXTURE_HINT_FRAMEBUFFER, 3396 ResourceProvider::TEXTURE_HINT_FRAMEBUFFER,
3380 ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER, 3397 ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER,
3381 }; 3398 };
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
3414 AllocationTrackingContext3D* context = context_owned.get(); 3431 AllocationTrackingContext3D* context = context_owned.get();
3415 context->set_support_texture_format_bgra8888(true); 3432 context->set_support_texture_format_bgra8888(true);
3416 context->set_support_texture_storage(true); 3433 context->set_support_texture_storage(true);
3417 context->set_support_texture_usage(true); 3434 context->set_support_texture_usage(true);
3418 3435
3419 FakeOutputSurfaceClient output_surface_client; 3436 FakeOutputSurfaceClient output_surface_client;
3420 std::unique_ptr<OutputSurface> output_surface( 3437 std::unique_ptr<OutputSurface> output_surface(
3421 FakeOutputSurface::Create3d(std::move(context_owned))); 3438 FakeOutputSurface::Create3d(std::move(context_owned)));
3422 CHECK(output_surface->BindToClient(&output_surface_client)); 3439 CHECK(output_surface->BindToClient(&output_surface_client));
3423 3440
3424 std::unique_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 3441 std::unique_ptr<ResourceProvider> resource_provider(
3425 output_surface.get(), shared_bitmap_manager_.get(), 3442 base::MakeUnique<ResourceProvider>(
3426 gpu_memory_buffer_manager_.get(), NULL, 0, 1, 3443 output_surface->context_provider(), shared_bitmap_manager_.get(),
3427 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 3444 gpu_memory_buffer_manager_.get(), nullptr, 0, 1,
3445 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
3446 kUseImageTextureTargets));
3428 3447
3429 gfx::Size size(2, 2); 3448 gfx::Size size(2, 2);
3430 const ResourceFormat formats[2] = {RGBA_8888, BGRA_8888}; 3449 const ResourceFormat formats[2] = {RGBA_8888, BGRA_8888};
3431 3450
3432 const ResourceProvider::TextureHint hints[4] = { 3451 const ResourceProvider::TextureHint hints[4] = {
3433 ResourceProvider::TEXTURE_HINT_DEFAULT, 3452 ResourceProvider::TEXTURE_HINT_DEFAULT,
3434 ResourceProvider::TEXTURE_HINT_IMMUTABLE, 3453 ResourceProvider::TEXTURE_HINT_IMMUTABLE,
3435 ResourceProvider::TEXTURE_HINT_FRAMEBUFFER, 3454 ResourceProvider::TEXTURE_HINT_FRAMEBUFFER,
3436 ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER, 3455 ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER,
3437 }; 3456 };
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
3473 CHECK(output_surface->BindToClient(&output_surface_client)); 3492 CHECK(output_surface->BindToClient(&output_surface_client));
3474 3493
3475 const int kWidth = 2; 3494 const int kWidth = 2;
3476 const int kHeight = 2; 3495 const int kHeight = 2;
3477 gfx::Size size(kWidth, kHeight); 3496 gfx::Size size(kWidth, kHeight);
3478 ResourceFormat format = RGBA_8888; 3497 ResourceFormat format = RGBA_8888;
3479 ResourceId id = 0; 3498 ResourceId id = 0;
3480 const unsigned kTextureId = 123u; 3499 const unsigned kTextureId = 123u;
3481 const unsigned kImageId = 234u; 3500 const unsigned kImageId = 234u;
3482 3501
3483 std::unique_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 3502 std::unique_ptr<ResourceProvider> resource_provider(
3484 output_surface.get(), shared_bitmap_manager_.get(), 3503 base::MakeUnique<ResourceProvider>(
3485 gpu_memory_buffer_manager_.get(), NULL, 0, 1, 3504 output_surface->context_provider(), shared_bitmap_manager_.get(),
3486 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 3505 gpu_memory_buffer_manager_.get(), nullptr, 0, 1,
3506 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
3507 kUseImageTextureTargets));
3487 3508
3488 id = resource_provider->CreateResource( 3509 id = resource_provider->CreateResource(
3489 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); 3510 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format);
3490 3511
3491 EXPECT_CALL(*context, NextTextureId()) 3512 EXPECT_CALL(*context, NextTextureId())
3492 .WillOnce(Return(kTextureId)) 3513 .WillOnce(Return(kTextureId))
3493 .RetiresOnSaturation(); 3514 .RetiresOnSaturation();
3494 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, kTextureId)) 3515 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, kTextureId))
3495 .Times(3) 3516 .Times(3)
3496 .RetiresOnSaturation(); 3517 .RetiresOnSaturation();
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
3551 new AllocationTrackingContext3D); 3572 new AllocationTrackingContext3D);
3552 AllocationTrackingContext3D* context = context_owned.get(); 3573 AllocationTrackingContext3D* context = context_owned.get();
3553 context_owned->set_support_compressed_texture_etc1(true); 3574 context_owned->set_support_compressed_texture_etc1(true);
3554 3575
3555 FakeOutputSurfaceClient output_surface_client; 3576 FakeOutputSurfaceClient output_surface_client;
3556 std::unique_ptr<OutputSurface> output_surface( 3577 std::unique_ptr<OutputSurface> output_surface(
3557 FakeOutputSurface::Create3d(std::move(context_owned))); 3578 FakeOutputSurface::Create3d(std::move(context_owned)));
3558 CHECK(output_surface->BindToClient(&output_surface_client)); 3579 CHECK(output_surface->BindToClient(&output_surface_client));
3559 3580
3560 gfx::Size size(4, 4); 3581 gfx::Size size(4, 4);
3561 std::unique_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 3582 std::unique_ptr<ResourceProvider> resource_provider(
3562 output_surface.get(), shared_bitmap_manager_.get(), 3583 base::MakeUnique<ResourceProvider>(
3563 gpu_memory_buffer_manager_.get(), NULL, 0, 1, 3584 output_surface->context_provider(), shared_bitmap_manager_.get(),
3564 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 3585 gpu_memory_buffer_manager_.get(), nullptr, 0, 1,
3586 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
3587 kUseImageTextureTargets));
3565 int texture_id = 123; 3588 int texture_id = 123;
3566 3589
3567 ResourceId id = resource_provider->CreateResource( 3590 ResourceId id = resource_provider->CreateResource(
3568 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, ETC1); 3591 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, ETC1);
3569 EXPECT_NE(0u, id); 3592 EXPECT_NE(0u, id);
3570 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); 3593 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id));
3571 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); 3594 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2);
3572 resource_provider->AllocateForTesting(id); 3595 resource_provider->AllocateForTesting(id);
3573 3596
3574 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); 3597 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1);
3575 resource_provider->DeleteResource(id); 3598 resource_provider->DeleteResource(id);
3576 } 3599 }
3577 3600
3578 TEST_P(ResourceProviderTest, CompressedTextureETC1Upload) { 3601 TEST_P(ResourceProviderTest, CompressedTextureETC1Upload) {
3579 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) 3602 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE)
3580 return; 3603 return;
3581 3604
3582 std::unique_ptr<AllocationTrackingContext3D> context_owned( 3605 std::unique_ptr<AllocationTrackingContext3D> context_owned(
3583 new AllocationTrackingContext3D); 3606 new AllocationTrackingContext3D);
3584 AllocationTrackingContext3D* context = context_owned.get(); 3607 AllocationTrackingContext3D* context = context_owned.get();
3585 context_owned->set_support_compressed_texture_etc1(true); 3608 context_owned->set_support_compressed_texture_etc1(true);
3586 3609
3587 FakeOutputSurfaceClient output_surface_client; 3610 FakeOutputSurfaceClient output_surface_client;
3588 std::unique_ptr<OutputSurface> output_surface( 3611 std::unique_ptr<OutputSurface> output_surface(
3589 FakeOutputSurface::Create3d(std::move(context_owned))); 3612 FakeOutputSurface::Create3d(std::move(context_owned)));
3590 CHECK(output_surface->BindToClient(&output_surface_client)); 3613 CHECK(output_surface->BindToClient(&output_surface_client));
3591 3614
3592 gfx::Size size(4, 4); 3615 gfx::Size size(4, 4);
3593 std::unique_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 3616 std::unique_ptr<ResourceProvider> resource_provider(
3594 output_surface.get(), shared_bitmap_manager_.get(), 3617 base::MakeUnique<ResourceProvider>(
3595 gpu_memory_buffer_manager_.get(), NULL, 0, 1, 3618 output_surface->context_provider(), shared_bitmap_manager_.get(),
3596 use_gpu_memory_buffer_resources_, use_image_texture_targets_)); 3619 gpu_memory_buffer_manager_.get(), nullptr, 0, 1,
3620 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
3621 kUseImageTextureTargets));
3597 int texture_id = 123; 3622 int texture_id = 123;
3598 uint8_t pixels[8]; 3623 uint8_t pixels[8];
3599 3624
3600 ResourceId id = resource_provider->CreateResource( 3625 ResourceId id = resource_provider->CreateResource(
3601 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, ETC1); 3626 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, ETC1);
3602 EXPECT_NE(0u, id); 3627 EXPECT_NE(0u, id);
3603 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); 3628 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id));
3604 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(3); 3629 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(3);
3605 EXPECT_CALL(*context, 3630 EXPECT_CALL(*context,
3606 compressedTexImage2D( 3631 compressedTexImage2D(
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
3641 CHECK(output_surface->BindToClient(&output_surface_client)); 3666 CHECK(output_surface->BindToClient(&output_surface_client));
3642 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( 3667 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager(
3643 new TestSharedBitmapManager()); 3668 new TestSharedBitmapManager());
3644 3669
3645 gfx::Size size(1, 1); 3670 gfx::Size size(1, 1);
3646 ResourceFormat format = RGBA_8888; 3671 ResourceFormat format = RGBA_8888;
3647 3672
3648 { 3673 {
3649 size_t kTextureAllocationChunkSize = 1; 3674 size_t kTextureAllocationChunkSize = 1;
3650 std::unique_ptr<ResourceProvider> resource_provider( 3675 std::unique_ptr<ResourceProvider> resource_provider(
3651 ResourceProvider::Create( 3676 base::MakeUnique<ResourceProvider>(
3652 output_surface.get(), shared_bitmap_manager.get(), NULL, NULL, 0, 3677 output_surface->context_provider(), shared_bitmap_manager.get(),
3653 kTextureAllocationChunkSize, 3678 nullptr, nullptr, 0, kTextureAllocationChunkSize,
3654 ResourceProviderTest::use_gpu_memory_buffer_resources(), 3679 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
3655 ResourceProviderTest::use_image_texture_targets())); 3680 kUseImageTextureTargets));
3656 3681
3657 ResourceId id = resource_provider->CreateResource( 3682 ResourceId id = resource_provider->CreateResource(
3658 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); 3683 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format);
3659 resource_provider->AllocateForTesting(id); 3684 resource_provider->AllocateForTesting(id);
3660 Mock::VerifyAndClearExpectations(context); 3685 Mock::VerifyAndClearExpectations(context);
3661 3686
3662 DCHECK_EQ(2u, context->PeekTextureId()); 3687 DCHECK_EQ(2u, context->PeekTextureId());
3663 resource_provider->DeleteResource(id); 3688 resource_provider->DeleteResource(id);
3664 } 3689 }
3665 3690
3666 { 3691 {
3667 size_t kTextureAllocationChunkSize = 8; 3692 size_t kTextureAllocationChunkSize = 8;
3668 std::unique_ptr<ResourceProvider> resource_provider( 3693 std::unique_ptr<ResourceProvider> resource_provider(
3669 ResourceProvider::Create( 3694 base::MakeUnique<ResourceProvider>(
3670 output_surface.get(), shared_bitmap_manager.get(), NULL, NULL, 0, 3695 output_surface->context_provider(), shared_bitmap_manager.get(),
3671 kTextureAllocationChunkSize, 3696 nullptr, nullptr, 0, kTextureAllocationChunkSize,
3672 ResourceProviderTest::use_gpu_memory_buffer_resources(), 3697 kDelegatedSyncPointsRequired, kUseGpuMemoryBufferResources,
3673 ResourceProviderTest::use_image_texture_targets())); 3698 kUseImageTextureTargets));
3674 3699
3675 ResourceId id = resource_provider->CreateResource( 3700 ResourceId id = resource_provider->CreateResource(
3676 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); 3701 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format);
3677 resource_provider->AllocateForTesting(id); 3702 resource_provider->AllocateForTesting(id);
3678 Mock::VerifyAndClearExpectations(context); 3703 Mock::VerifyAndClearExpectations(context);
3679 3704
3680 DCHECK_EQ(10u, context->PeekTextureId()); 3705 DCHECK_EQ(10u, context->PeekTextureId());
3681 resource_provider->DeleteResource(id); 3706 resource_provider->DeleteResource(id);
3682 } 3707 }
3683 } 3708 }
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
3836 resource_provider_->DeclareUsedResourcesFromChild(child_id, 3861 resource_provider_->DeclareUsedResourcesFromChild(child_id,
3837 resource_ids_to_receive); 3862 resource_ids_to_receive);
3838 } 3863 }
3839 resource_provider_->DestroyChild(child_id); 3864 resource_provider_->DestroyChild(child_id);
3840 3865
3841 EXPECT_EQ(0u, resource_provider_->num_resources()); 3866 EXPECT_EQ(0u, resource_provider_->num_resources());
3842 } 3867 }
3843 3868
3844 } // namespace 3869 } // namespace
3845 } // namespace cc 3870 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/resource_provider.cc ('k') | cc/surfaces/display.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698