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

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

Issue 1951193002: cc: Add mailbox support to ResourceProvider write locks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@worker_context_stream
Patch Set: compile error fix Created 4 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
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 3731 matching lines...) Expand 10 before | Expand all | Expand 10 after
3742 ResourceFormat format = RGBA_8888; 3742 ResourceFormat format = RGBA_8888;
3743 size_t pixel_size = TextureSizeBytes(size, format); 3743 size_t pixel_size = TextureSizeBytes(size, format);
3744 ASSERT_EQ(4U, pixel_size); 3744 ASSERT_EQ(4U, pixel_size);
3745 3745
3746 ResourceId id = resource_provider_->CreateResource( 3746 ResourceId id = resource_provider_->CreateResource(
3747 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); 3747 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format);
3748 resource_provider_->AllocateForTesting(id); 3748 resource_provider_->AllocateForTesting(id);
3749 { 3749 {
3750 ResourceProvider::ScopedReadLockGpuMemoryBuffer lock( 3750 ResourceProvider::ScopedReadLockGpuMemoryBuffer lock(
3751 resource_provider_.get(), id); 3751 resource_provider_.get(), id);
3752 EXPECT_FALSE(lock.GetGpuMemoryBuffer()); 3752 EXPECT_FALSE(lock.gpu_memory_buffer());
3753 } 3753 }
3754 } 3754 }
3755 3755
3756 TEST_P(ResourceProviderTest, GpuMemoryBufferReadLockSucceed) { 3756 TEST_P(ResourceProviderTest, GpuMemoryBufferReadLockSucceed) {
3757 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) 3757 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE)
3758 return; 3758 return;
3759 3759
3760 gfx::Size size(1, 1); 3760 gfx::Size size(1, 1);
3761 ResourceFormat format = RGBA_8888; 3761 ResourceFormat format = RGBA_8888;
3762 size_t pixel_size = TextureSizeBytes(size, format); 3762 size_t pixel_size = TextureSizeBytes(size, format);
3763 ASSERT_EQ(4U, pixel_size); 3763 ASSERT_EQ(4U, pixel_size);
3764 3764
3765 ResourceId id = resource_provider_->CreateResource( 3765 ResourceId id = resource_provider_->CreateResource(
3766 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); 3766 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format);
3767 gfx::GpuMemoryBuffer* gpu_memory_buffer = nullptr; 3767 gfx::GpuMemoryBuffer* gpu_memory_buffer = nullptr;
3768 { 3768 {
3769 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock( 3769 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock(
3770 resource_provider_.get(), id); 3770 resource_provider_.get(), id);
3771 gpu_memory_buffer = lock.GetGpuMemoryBuffer(); 3771 gpu_memory_buffer = lock.GetGpuMemoryBuffer();
3772 EXPECT_TRUE(lock.GetGpuMemoryBuffer()); 3772 EXPECT_TRUE(lock.GetGpuMemoryBuffer());
3773 } 3773 }
3774 { 3774 {
3775 ResourceProvider::ScopedReadLockGpuMemoryBuffer lock( 3775 ResourceProvider::ScopedReadLockGpuMemoryBuffer lock(
3776 resource_provider_.get(), id); 3776 resource_provider_.get(), id);
3777 EXPECT_EQ(gpu_memory_buffer, lock.GetGpuMemoryBuffer()); 3777 EXPECT_EQ(gpu_memory_buffer, lock.gpu_memory_buffer());
3778 } 3778 }
3779 } 3779 }
3780 3780
3781 TEST_P(ResourceProviderTest, ChildGpuMemoryBufferReadLock) { 3781 TEST_P(ResourceProviderTest, ChildGpuMemoryBufferReadLock) {
3782 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) 3782 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE)
3783 return; 3783 return;
3784 3784
3785 gfx::Size size(1, 1); 3785 gfx::Size size(1, 1);
3786 ResourceFormat format = RGBA_8888; 3786 ResourceFormat format = RGBA_8888;
3787 size_t pixel_size = TextureSizeBytes(size, format); 3787 size_t pixel_size = TextureSizeBytes(size, format);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3824 &list); 3824 &list);
3825 resource_provider_->ReceiveFromChild(child_id, list); 3825 resource_provider_->ReceiveFromChild(child_id, list);
3826 resource_provider_->WaitSyncTokenIfNeeded(list[0].id); 3826 resource_provider_->WaitSyncTokenIfNeeded(list[0].id);
3827 resource_provider_->WaitSyncTokenIfNeeded(list[1].id); 3827 resource_provider_->WaitSyncTokenIfNeeded(list[1].id);
3828 } 3828 }
3829 3829
3830 // The non-gmb resource should not have a GpuMemoryBuffer when locked. 3830 // The non-gmb resource should not have a GpuMemoryBuffer when locked.
3831 { 3831 {
3832 ResourceProvider::ScopedReadLockGpuMemoryBuffer lock( 3832 ResourceProvider::ScopedReadLockGpuMemoryBuffer lock(
3833 resource_provider_.get(), list[0].id); 3833 resource_provider_.get(), list[0].id);
3834 EXPECT_FALSE(lock.GetGpuMemoryBuffer()); 3834 EXPECT_FALSE(lock.gpu_memory_buffer());
3835 } 3835 }
3836 3836
3837 // The gmb resource should have a GpuMemoryBuffer when locked 3837 // The gmb resource should have a GpuMemoryBuffer when locked
3838 { 3838 {
3839 ResourceProvider::ScopedReadLockGpuMemoryBuffer lock( 3839 ResourceProvider::ScopedReadLockGpuMemoryBuffer lock(
3840 resource_provider_.get(), list[1].id); 3840 resource_provider_.get(), list[1].id);
3841 gfx::GpuMemoryBuffer* parent_gmb = lock.GetGpuMemoryBuffer(); 3841 gfx::GpuMemoryBuffer* parent_gmb = lock.gpu_memory_buffer();
3842 EXPECT_TRUE(parent_gmb); 3842 EXPECT_TRUE(parent_gmb);
3843 EXPECT_NE(child_gmb, parent_gmb); 3843 EXPECT_NE(child_gmb, parent_gmb);
3844 3844
3845 // Verify that the IsInUseByMacOSWindowServer signal is shared between 3845 // Verify that the IsInUseByMacOSWindowServer signal is shared between
3846 // parent and child. 3846 // parent and child.
3847 EXPECT_FALSE(parent_gmb->IsInUseByMacOSWindowServer()); 3847 EXPECT_FALSE(parent_gmb->IsInUseByMacOSWindowServer());
3848 child_gpu_memory_buffer_manager_ 3848 child_gpu_memory_buffer_manager_
3849 ->SetGpuMemoryBufferIsInUseByMacOSWindowServer(child_gmb, true); 3849 ->SetGpuMemoryBufferIsInUseByMacOSWindowServer(child_gmb, true);
3850 EXPECT_TRUE(parent_gmb->IsInUseByMacOSWindowServer()); 3850 EXPECT_TRUE(parent_gmb->IsInUseByMacOSWindowServer());
3851 child_gpu_memory_buffer_manager_ 3851 child_gpu_memory_buffer_manager_
3852 ->SetGpuMemoryBufferIsInUseByMacOSWindowServer(child_gmb, false); 3852 ->SetGpuMemoryBufferIsInUseByMacOSWindowServer(child_gmb, false);
3853 EXPECT_FALSE(parent_gmb->IsInUseByMacOSWindowServer()); 3853 EXPECT_FALSE(parent_gmb->IsInUseByMacOSWindowServer());
3854 } 3854 }
3855 3855
3856 // Transfer back to the child.{ 3856 // Transfer back to the child.{
3857 { 3857 {
3858 ResourceProvider::ResourceIdSet resource_ids_to_receive; 3858 ResourceProvider::ResourceIdSet resource_ids_to_receive;
3859 resource_ids_to_receive.insert(child_resource); 3859 resource_ids_to_receive.insert(child_resource);
3860 resource_ids_to_receive.insert(child_gmb_resource); 3860 resource_ids_to_receive.insert(child_gmb_resource);
3861 resource_provider_->DeclareUsedResourcesFromChild(child_id, 3861 resource_provider_->DeclareUsedResourcesFromChild(child_id,
3862 resource_ids_to_receive); 3862 resource_ids_to_receive);
3863 } 3863 }
3864 resource_provider_->DestroyChild(child_id); 3864 resource_provider_->DestroyChild(child_id);
3865 3865
3866 EXPECT_EQ(0u, resource_provider_->num_resources()); 3866 EXPECT_EQ(0u, resource_provider_->num_resources());
3867 } 3867 }
3868 3868
3869 } // namespace 3869 } // namespace
3870 } // namespace cc 3870 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698