diff options
Diffstat (limited to 'cc/resources')
-rw-r--r-- | cc/resources/resource_provider.cc | 177 | ||||
-rw-r--r-- | cc/resources/resource_provider.h | 11 | ||||
-rw-r--r-- | cc/resources/resource_provider_unittest.cc | 31 | ||||
-rw-r--r-- | cc/resources/returned_resource.h | 27 | ||||
-rw-r--r-- | cc/resources/transferable_resource.cc | 19 | ||||
-rw-r--r-- | cc/resources/transferable_resource.h | 11 |
6 files changed, 136 insertions, 140 deletions
diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc index b39908a..ff339e9 100644 --- a/cc/resources/resource_provider.cc +++ b/cc/resources/resource_provider.cc @@ -14,6 +14,7 @@ #include "base/strings/string_util.h" #include "cc/output/gl_renderer.h" // For the GLC() macro. #include "cc/resources/platform_color.h" +#include "cc/resources/returned_resource.h" #include "cc/resources/transferable_resource.h" #include "cc/scheduler/texture_uploader.h" #include "gpu/GLES2/gl2extchromium.h" @@ -183,10 +184,7 @@ ResourceProvider::~ResourceProvider() { } bool ResourceProvider::InUseByConsumer(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; + Resource* resource = GetResource(id); return resource->lock_for_read_count > 0 || resource->exported_count > 0; } @@ -377,10 +375,7 @@ void ResourceProvider::DeleteResourceInternal(ResourceMap::iterator it, ResourceProvider::ResourceType ResourceProvider::GetResourceType( ResourceId id) { - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; - return resource->type; + return GetResource(id)->type; } void ResourceProvider::SetPixels(ResourceId id, @@ -388,10 +383,7 @@ void ResourceProvider::SetPixels(ResourceId id, gfx::Rect image_rect, gfx::Rect source_rect, gfx::Vector2d dest_offset) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; + Resource* resource = GetResource(id); DCHECK(!resource->locked_for_write); DCHECK(!resource->lock_for_read_count); DCHECK(!resource->external); @@ -493,11 +485,15 @@ bool ResourceProvider::ShallowFlushIfSupported() { return true; } -const ResourceProvider::Resource* ResourceProvider::LockForRead(ResourceId id) { +ResourceProvider::Resource* ResourceProvider::GetResource(ResourceId id) { DCHECK(thread_checker_.CalledOnValidThread()); ResourceMap::iterator it = resources_.find(id); CHECK(it != resources_.end()); - Resource* resource = &it->second; + return &it->second; +} + +const ResourceProvider::Resource* ResourceProvider::LockForRead(ResourceId id) { + Resource* resource = GetResource(id); DCHECK(!resource->locked_for_write || resource->set_pixels_completion_forced) << "locked for write: " << resource->locked_for_write << @@ -533,10 +529,7 @@ const ResourceProvider::Resource* ResourceProvider::LockForRead(ResourceId id) { } void ResourceProvider::UnlockForRead(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; + Resource* resource = GetResource(id); DCHECK_GT(resource->lock_for_read_count, 0); DCHECK_EQ(resource->exported_count, 0); resource->lock_for_read_count--; @@ -544,10 +537,7 @@ void ResourceProvider::UnlockForRead(ResourceId id) { const ResourceProvider::Resource* ResourceProvider::LockForWrite( ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; + Resource* resource = GetResource(id); DCHECK(!resource->locked_for_write); DCHECK(!resource->lock_for_read_count); DCHECK_EQ(resource->exported_count, 0); @@ -560,10 +550,7 @@ const ResourceProvider::Resource* ResourceProvider::LockForWrite( } bool ResourceProvider::CanLockForWrite(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; + Resource* resource = GetResource(id); return !resource->locked_for_write && !resource->lock_for_read_count && !resource->exported_count && @@ -572,10 +559,7 @@ bool ResourceProvider::CanLockForWrite(ResourceId id) { } void ResourceProvider::UnlockForWrite(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; + Resource* resource = GetResource(id); DCHECK(resource->locked_for_write); DCHECK_EQ(resource->exported_count, 0); DCHECK(!resource->external); @@ -820,9 +804,10 @@ void ResourceProvider::PrepareSendToParent(const ResourceIdArray& resources, } } -void ResourceProvider::PrepareSendToChild(int child, - const ResourceIdArray& resources, - TransferableResourceArray* list) { +void ResourceProvider::PrepareSendReturnsToChild( + int child, + const ResourceIdArray& resources, + ReturnedResourceArray* list) { DCHECK(thread_checker_.CalledOnValidThread()); WebGraphicsContext3D* context3d = Context3d(); if (!context3d || !context3d->makeContextCurrent()) { @@ -832,27 +817,31 @@ void ResourceProvider::PrepareSendToChild(int child, Child& child_info = children_.find(child)->second; bool need_sync_point = false; for (ResourceIdArray::const_iterator it = resources.begin(); - it != resources.end(); - ++it) { - TransferableResource resource; - TransferResource(context3d, *it, &resource); - if (!resource.sync_point) - need_sync_point = true; + it != resources.end(); ++it) { + Resource* resource = GetResource(*it); + DCHECK(!resource->locked_for_write); + DCHECK(!resource->lock_for_read_count); DCHECK(child_info.parent_to_child_map.find(*it) != child_info.parent_to_child_map.end()); - resource.id = child_info.parent_to_child_map[*it]; + + ReturnedResource returned; + returned.id = child_info.parent_to_child_map[*it]; + returned.filter = resource->filter; + returned.sync_point = resource->mailbox.sync_point(); + if (!returned.sync_point) + need_sync_point = true; + returned.count = resource->imported_count; + list->push_back(returned); + child_info.parent_to_child_map.erase(*it); - child_info.child_to_parent_map.erase(resource.id); - for (int i = 0; i < resources_[*it].imported_count; ++i) - list->push_back(resource); + child_info.child_to_parent_map.erase(returned.id); resources_[*it].imported_count = 0; DeleteResource(*it); } if (need_sync_point) { unsigned int sync_point = context3d->insertSyncPoint(); - for (TransferableResourceArray::iterator it = list->begin(); - it != list->end(); - ++it) { + for (ReturnedResourceArray::iterator it = list->begin(); + it != list->end(); ++it) { if (!it->sync_point) it->sync_point = sync_point; } @@ -903,26 +892,25 @@ void ResourceProvider::ReceiveFromChild( } } -void ResourceProvider::ReceiveFromParent( - const TransferableResourceArray& resources) { +void ResourceProvider::ReceiveReturnsFromParent( + const ReturnedResourceArray& resources) { DCHECK(thread_checker_.CalledOnValidThread()); WebGraphicsContext3D* context3d = Context3d(); if (!context3d || !context3d->makeContextCurrent()) { // TODO(skaslev): Implement this path for software compositing. return; } - for (TransferableResourceArray::const_iterator it = resources.begin(); + for (ReturnedResourceArray::const_iterator it = resources.begin(); it != resources.end(); ++it) { ResourceMap::iterator map_iterator = resources_.find(it->id); DCHECK(map_iterator != resources_.end()); Resource* resource = &map_iterator->second; - DCHECK_GT(resource->exported_count, 0); - --resource->exported_count; + CHECK_GE(resource->exported_count, it->count); + resource->exported_count -= it->count; if (resource->exported_count) continue; resource->filter = it->filter; - DCHECK(resource->mailbox.ContainsMailbox(it->mailbox)); if (resource->gl_id) { if (it->sync_point) GLC(context3d, context3d->waitSyncPoint(it->sync_point)); @@ -939,10 +927,7 @@ void ResourceProvider::ReceiveFromParent( void ResourceProvider::TransferResource(WebGraphicsContext3D* context, ResourceId id, TransferableResource* resource) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* source = &it->second; + Resource* source = GetResource(id); DCHECK(!source->locked_for_write); DCHECK(!source->lock_for_read_count); DCHECK(!source->external || (source->external && source->mailbox.IsValid())); @@ -974,10 +959,7 @@ void ResourceProvider::TransferResource(WebGraphicsContext3D* context, } void ResourceProvider::AcquirePixelBuffer(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; + Resource* resource = GetResource(id); DCHECK(!resource->external); DCHECK_EQ(resource->exported_count, 0); DCHECK(!resource->image_id); @@ -1007,10 +989,7 @@ void ResourceProvider::AcquirePixelBuffer(ResourceId id) { } void ResourceProvider::ReleasePixelBuffer(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; + Resource* resource = GetResource(id); DCHECK(!resource->external); DCHECK_EQ(resource->exported_count, 0); DCHECK(!resource->image_id); @@ -1052,10 +1031,7 @@ void ResourceProvider::ReleasePixelBuffer(ResourceId id) { } uint8_t* ResourceProvider::MapPixelBuffer(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; + Resource* resource = GetResource(id); DCHECK(!resource->external); DCHECK_EQ(resource->exported_count, 0); DCHECK(!resource->image_id); @@ -1083,10 +1059,7 @@ uint8_t* ResourceProvider::MapPixelBuffer(ResourceId id) { } void ResourceProvider::UnmapPixelBuffer(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; + Resource* resource = GetResource(id); DCHECK(!resource->external); DCHECK_EQ(resource->exported_count, 0); DCHECK(!resource->image_id); @@ -1158,10 +1131,7 @@ void ResourceProvider::UnbindForSampling( } void ResourceProvider::BeginSetPixels(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; + Resource* resource = GetResource(id); DCHECK(!resource->pending_set_pixels); LazyCreate(resource); @@ -1226,10 +1196,7 @@ void ResourceProvider::BeginSetPixels(ResourceId id) { } void ResourceProvider::ForceSetPixelsToComplete(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; + Resource* resource = GetResource(id); DCHECK(resource->locked_for_write); DCHECK(resource->pending_set_pixels); DCHECK(!resource->set_pixels_completion_forced); @@ -1245,10 +1212,7 @@ void ResourceProvider::ForceSetPixelsToComplete(ResourceId id) { } bool ResourceProvider::DidSetPixelsComplete(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; + Resource* resource = GetResource(id); DCHECK(resource->locked_for_write); DCHECK(resource->pending_set_pixels); @@ -1272,10 +1236,7 @@ bool ResourceProvider::DidSetPixelsComplete(ResourceId id) { } void ResourceProvider::CreateForTesting(ResourceId id) { - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; - LazyCreate(resource); + LazyCreate(GetResource(id)); } void ResourceProvider::LazyCreate(Resource* resource) { @@ -1301,10 +1262,7 @@ void ResourceProvider::LazyCreate(Resource* resource) { } void ResourceProvider::AllocateForTesting(ResourceId id) { - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; - LazyAllocate(resource); + LazyAllocate(GetResource(id)); } void ResourceProvider::LazyAllocate(Resource* resource) { @@ -1341,19 +1299,12 @@ void ResourceProvider::LazyAllocate(Resource* resource) { void ResourceProvider::EnableReadLockFences(ResourceProvider::ResourceId id, bool enable) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; + Resource* resource = GetResource(id); resource->enable_read_lock_fences = enable; } void ResourceProvider::AcquireImage(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; - + Resource* resource = GetResource(id); DCHECK(!resource->external); DCHECK_EQ(resource->exported_count, 0); @@ -1373,11 +1324,7 @@ void ResourceProvider::AcquireImage(ResourceId id) { } void ResourceProvider::ReleaseImage(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; - + Resource* resource = GetResource(id); DCHECK(!resource->external); DCHECK_EQ(resource->exported_count, 0); @@ -1392,11 +1339,7 @@ void ResourceProvider::ReleaseImage(ResourceId id) { } uint8_t* ResourceProvider::MapImage(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; - + Resource* resource = GetResource(id); DCHECK(ReadLockFenceHasPassed(resource)); DCHECK(!resource->external); DCHECK_EQ(resource->exported_count, 0); @@ -1415,11 +1358,7 @@ uint8_t* ResourceProvider::MapImage(ResourceId id) { } void ResourceProvider::UnmapImage(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; - + Resource* resource = GetResource(id); DCHECK(!resource->external); DCHECK_EQ(resource->exported_count, 0); @@ -1431,11 +1370,7 @@ void ResourceProvider::UnmapImage(ResourceId id) { } int ResourceProvider::GetImageStride(ResourceId id) { - DCHECK(thread_checker_.CalledOnValidThread()); - ResourceMap::iterator it = resources_.find(id); - CHECK(it != resources_.end()); - Resource* resource = &it->second; - + Resource* resource = GetResource(id); DCHECK(!resource->external); DCHECK_EQ(resource->exported_count, 0); diff --git a/cc/resources/resource_provider.h b/cc/resources/resource_provider.h index c434b3a..73b6e2b 100644 --- a/cc/resources/resource_provider.h +++ b/cc/resources/resource_provider.h @@ -152,9 +152,9 @@ class CC_EXPORT ResourceProvider { // Resources are removed from the ResourceProvider. Note: the resource IDs // passed are in the parent namespace and will be translated to the child // namespace when returned. - void PrepareSendToChild(int child, - const ResourceIdArray& resources, - TransferableResourceArray* transferable_resources); + void PrepareSendReturnsToChild(int child, + const ResourceIdArray& resources, + ReturnedResourceArray* returned_resources); // Receives resources from a child, moving them from mailboxes. Resource IDs // passed are in the child namespace, and will be translated to the parent @@ -168,8 +168,8 @@ class CC_EXPORT ResourceProvider { // IDs passed are in the child namespace. // NOTE: if the sync_point is set on any TransferableResource, this will // wait on it. - void ReceiveFromParent( - const TransferableResourceArray& transferable_resources); + void ReceiveReturnsFromParent( + const ReturnedResourceArray& transferable_resources); // The following lock classes are part of the ResourceProvider API and are // needed to read and write the resource contents. The user must ensure @@ -392,6 +392,7 @@ class CC_EXPORT ResourceProvider { void CleanUpGLIfNeeded(); + Resource* GetResource(ResourceId id); const Resource* LockForRead(ResourceId id); void UnlockForRead(ResourceId id); const Resource* LockForWrite(ResourceId id); diff --git a/cc/resources/resource_provider_unittest.cc b/cc/resources/resource_provider_unittest.cc index 83e90b4..dec66d6 100644 --- a/cc/resources/resource_provider_unittest.cc +++ b/cc/resources/resource_provider_unittest.cc @@ -13,6 +13,7 @@ #include "cc/base/scoped_ptr_deque.h" #include "cc/debug/test_web_graphics_context_3d.h" #include "cc/output/output_surface.h" +#include "cc/resources/returned_resource.h" #include "cc/test/fake_output_surface.h" #include "cc/test/fake_output_surface_client.h" #include "gpu/GLES2/gl2extchromium.h" @@ -602,7 +603,9 @@ TEST_P(ResourceProviderTest, TransferResources) { &list); EXPECT_EQ(1u, list.size()); EXPECT_EQ(id1, list[0].id); - child_resource_provider->ReceiveFromParent(list); + ReturnedResourceArray returned; + TransferableResource::ReturnResources(list, &returned); + child_resource_provider->ReceiveReturnsFromParent(returned); // id1 was exported twice, we returned it only once, it should still be // in-use. EXPECT_TRUE(child_resource_provider->InUseByConsumer(id1)); @@ -612,13 +615,13 @@ TEST_P(ResourceProviderTest, TransferResources) { ResourceProvider::ResourceIdArray resource_ids_to_transfer; resource_ids_to_transfer.push_back(mapped_id1); resource_ids_to_transfer.push_back(mapped_id2); - TransferableResourceArray list; - resource_provider_->PrepareSendToChild( + ReturnedResourceArray list; + resource_provider_->PrepareSendReturnsToChild( child_id, resource_ids_to_transfer, &list); ASSERT_EQ(2u, list.size()); EXPECT_NE(0u, list[0].sync_point); EXPECT_NE(0u, list[1].sync_point); - child_resource_provider->ReceiveFromParent(list); + child_resource_provider->ReceiveReturnsFromParent(list); } EXPECT_FALSE(child_resource_provider->InUseByConsumer(id1)); EXPECT_FALSE(child_resource_provider->InUseByConsumer(id2)); @@ -711,12 +714,12 @@ TEST_P(ResourceProviderTest, DeleteTransferredResources) { EXPECT_NE(0u, mapped_id); ResourceProvider::ResourceIdArray resource_ids_to_transfer; resource_ids_to_transfer.push_back(mapped_id); - TransferableResourceArray list; - resource_provider_->PrepareSendToChild( + ReturnedResourceArray list; + resource_provider_->PrepareSendReturnsToChild( child_id, resource_ids_to_transfer, &list); ASSERT_EQ(1u, list.size()); EXPECT_NE(0u, list[0].sync_point); - child_resource_provider->ReceiveFromParent(list); + child_resource_provider->ReceiveReturnsFromParent(list); } EXPECT_EQ(0u, child_resource_provider->num_resources()); } @@ -783,12 +786,12 @@ TEST_P(ResourceProviderTest, TextureFilters) { // Transfer resources back from the parent to the child. ResourceProvider::ResourceIdArray resource_ids_to_transfer; resource_ids_to_transfer.push_back(mapped_id); - TransferableResourceArray list; - resource_provider_->PrepareSendToChild( + ReturnedResourceArray list; + resource_provider_->PrepareSendReturnsToChild( child_id, resource_ids_to_transfer, &list); ASSERT_EQ(1u, list.size()); EXPECT_EQ(static_cast<unsigned>(GL_LINEAR), list[0].filter); - child_resource_provider->ReceiveFromParent(list); + child_resource_provider->ReceiveReturnsFromParent(list); } EXPECT_EQ(static_cast<unsigned>(GL_LINEAR), GetResourceFilter(child_resource_provider.get(), @@ -861,7 +864,9 @@ TEST_P(ResourceProviderTest, TransferMailboxResources) { // Receive the resource, then delete it, expect the sync points to be // consistent. - resource_provider_->ReceiveFromParent(list); + ReturnedResourceArray returned; + TransferableResource::ReturnResources(list, &returned); + resource_provider_->ReceiveReturnsFromParent(returned); EXPECT_EQ(1, context()->texture_count()); EXPECT_EQ(0u, release_sync_point); @@ -910,7 +915,9 @@ TEST_P(ResourceProviderTest, TransferMailboxResources) { // Then receive the resource which should release the mailbox, expect the // sync points to be consistent. - resource_provider_->ReceiveFromParent(list); + ReturnedResourceArray returned; + TransferableResource::ReturnResources(list, &returned); + resource_provider_->ReceiveReturnsFromParent(returned); EXPECT_LE(list[0].sync_point, release_sync_point); EXPECT_FALSE(lost_resource); } diff --git a/cc/resources/returned_resource.h b/cc/resources/returned_resource.h new file mode 100644 index 0000000..aa6b99a --- /dev/null +++ b/cc/resources/returned_resource.h @@ -0,0 +1,27 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CC_RESOURCES_RETURNED_RESOURCE_H_ +#define CC_RESOURCES_RETURNED_RESOURCE_H_ + +#include <vector> + +#include "base/basictypes.h" +#include "cc/base/cc_export.h" + +namespace cc { + +struct CC_EXPORT ReturnedResource { + ReturnedResource() : id(0), sync_point(0), filter(0), count(0) {} + unsigned id; + unsigned sync_point; + uint32 filter; + int count; +}; + +typedef std::vector<ReturnedResource> ReturnedResourceArray; + +} // namespace cc + +#endif // CC_RESOURCES_RETURNED_RESOURCE_H_ diff --git a/cc/resources/transferable_resource.cc b/cc/resources/transferable_resource.cc index be2be1a..9e90696 100644 --- a/cc/resources/transferable_resource.cc +++ b/cc/resources/transferable_resource.cc @@ -3,6 +3,7 @@ // found in the LICENSE file. #include "base/logging.h" +#include "cc/resources/returned_resource.h" #include "cc/resources/transferable_resource.h" namespace cc { @@ -17,4 +18,22 @@ TransferableResource::TransferableResource() TransferableResource::~TransferableResource() { } +ReturnedResource TransferableResource::ToReturnedResource() const { + ReturnedResource returned; + returned.id = id; + returned.sync_point = sync_point; + returned.filter = filter; + returned.count = 1; + return returned; +} + +// static +void TransferableResource::ReturnResources( + const TransferableResourceArray& input, + ReturnedResourceArray* output) { + for (TransferableResourceArray::const_iterator it = input.begin(); + it != input.end(); ++it) + output->push_back(it->ToReturnedResource()); +} + } // namespace cc diff --git a/cc/resources/transferable_resource.h b/cc/resources/transferable_resource.h index 5c979433..be6902c 100644 --- a/cc/resources/transferable_resource.h +++ b/cc/resources/transferable_resource.h @@ -14,10 +14,19 @@ namespace cc { +struct ReturnedResource; +typedef std::vector<ReturnedResource> ReturnedResourceArray; +struct TransferableResource; +typedef std::vector<TransferableResource> TransferableResourceArray; + struct CC_EXPORT TransferableResource { TransferableResource(); ~TransferableResource(); + ReturnedResource ToReturnedResource() const; + static void ReturnResources(const TransferableResourceArray& input, + ReturnedResourceArray* output); + unsigned id; unsigned sync_point; uint32 format; @@ -26,8 +35,6 @@ struct CC_EXPORT TransferableResource { gpu::Mailbox mailbox; }; -typedef std::vector<TransferableResource> TransferableResourceArray; - } // namespace cc #endif // CC_RESOURCES_TRANSFERABLE_RESOURCE_H_ |