| OLD | NEW |
| 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 652 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 663 Resource* resource = InsertResource( | 663 Resource* resource = InsertResource( |
| 664 id, | 664 id, |
| 665 Resource(pixels, bitmap.release(), size, Resource::INTERNAL, GL_LINEAR)); | 665 Resource(pixels, bitmap.release(), size, Resource::INTERNAL, GL_LINEAR)); |
| 666 resource->allocated = true; | 666 resource->allocated = true; |
| 667 resource->color_space = color_space; | 667 resource->color_space = color_space; |
| 668 return id; | 668 return id; |
| 669 } | 669 } |
| 670 | 670 |
| 671 ResourceId ResourceProvider::CreateResourceFromTextureMailbox( | 671 ResourceId ResourceProvider::CreateResourceFromTextureMailbox( |
| 672 const TextureMailbox& mailbox, | 672 const TextureMailbox& mailbox, |
| 673 gfx::BufferFormat buffer_format, |
| 673 std::unique_ptr<SingleReleaseCallbackImpl> release_callback_impl, | 674 std::unique_ptr<SingleReleaseCallbackImpl> release_callback_impl, |
| 674 bool read_lock_fences_enabled) { | 675 bool read_lock_fences_enabled) { |
| 675 DCHECK(thread_checker_.CalledOnValidThread()); | 676 DCHECK(thread_checker_.CalledOnValidThread()); |
| 676 // Just store the information. Mailbox will be consumed in LockForRead(). | 677 // Just store the information. Mailbox will be consumed in LockForRead(). |
| 677 ResourceId id = next_id_++; | 678 ResourceId id = next_id_++; |
| 678 DCHECK(mailbox.IsValid()); | 679 DCHECK(mailbox.IsValid()); |
| 679 Resource* resource = nullptr; | 680 Resource* resource = nullptr; |
| 680 if (mailbox.IsTexture()) { | 681 if (mailbox.IsTexture()) { |
| 681 resource = InsertResource( | 682 resource = InsertResource( |
| 682 id, | 683 id, |
| 683 Resource(0, mailbox.size_in_pixels(), Resource::EXTERNAL, | 684 Resource(0, mailbox.size_in_pixels(), Resource::EXTERNAL, |
| 684 mailbox.target(), | 685 mailbox.target(), |
| 685 mailbox.nearest_neighbor() ? GL_NEAREST : GL_LINEAR, | 686 mailbox.nearest_neighbor() ? GL_NEAREST : GL_LINEAR, |
| 686 TEXTURE_HINT_IMMUTABLE, RESOURCE_TYPE_GL_TEXTURE, RGBA_8888)); | 687 TEXTURE_HINT_IMMUTABLE, RESOURCE_TYPE_GL_TEXTURE, RGBA_8888)); |
| 687 } else { | 688 } else { |
| 688 DCHECK(mailbox.IsSharedMemory()); | 689 DCHECK(mailbox.IsSharedMemory()); |
| 689 SharedBitmap* shared_bitmap = mailbox.shared_bitmap(); | 690 SharedBitmap* shared_bitmap = mailbox.shared_bitmap(); |
| 690 uint8_t* pixels = shared_bitmap->pixels(); | 691 uint8_t* pixels = shared_bitmap->pixels(); |
| 691 DCHECK(pixels); | 692 DCHECK(pixels); |
| 692 resource = InsertResource( | 693 resource = InsertResource( |
| 693 id, Resource(pixels, shared_bitmap, mailbox.size_in_pixels(), | 694 id, Resource(pixels, shared_bitmap, mailbox.size_in_pixels(), |
| 694 Resource::EXTERNAL, GL_LINEAR)); | 695 Resource::EXTERNAL, GL_LINEAR)); |
| 695 } | 696 } |
| 697 resource->buffer_format = buffer_format; |
| 696 resource->allocated = true; | 698 resource->allocated = true; |
| 697 resource->set_mailbox(mailbox); | 699 resource->set_mailbox(mailbox); |
| 698 resource->color_space = mailbox.color_space(); | 700 resource->color_space = mailbox.color_space(); |
| 699 resource->release_callback_impl = | 701 resource->release_callback_impl = |
| 700 base::Bind(&SingleReleaseCallbackImpl::Run, | 702 base::Bind(&SingleReleaseCallbackImpl::Run, |
| 701 base::Owned(release_callback_impl.release())); | 703 base::Owned(release_callback_impl.release())); |
| 702 resource->read_lock_fences_enabled = read_lock_fences_enabled; | 704 resource->read_lock_fences_enabled = read_lock_fences_enabled; |
| 703 resource->is_overlay_candidate = mailbox.is_overlay_candidate(); | 705 resource->is_overlay_candidate = mailbox.is_overlay_candidate(); |
| 704 #if defined(OS_ANDROID) | 706 #if defined(OS_ANDROID) |
| 705 resource->is_backed_by_surface_texture = | 707 resource->is_backed_by_surface_texture = |
| 706 mailbox.is_backed_by_surface_texture(); | 708 mailbox.is_backed_by_surface_texture(); |
| 707 resource->wants_promotion_hint = mailbox.wants_promotion_hint(); | 709 resource->wants_promotion_hint = mailbox.wants_promotion_hint(); |
| 708 if (resource->wants_promotion_hint) | 710 if (resource->wants_promotion_hint) |
| 709 wants_promotion_hints_set_.insert(id); | 711 wants_promotion_hints_set_.insert(id); |
| 710 #endif | 712 #endif |
| 711 resource->color_space = mailbox.color_space(); | 713 resource->color_space = mailbox.color_space(); |
| 712 | 714 |
| 713 return id; | 715 return id; |
| 714 } | 716 } |
| 715 | 717 |
| 716 ResourceId ResourceProvider::CreateResourceFromTextureMailbox( | 718 ResourceId ResourceProvider::CreateResourceFromTextureMailbox( |
| 717 const TextureMailbox& mailbox, | 719 const TextureMailbox& mailbox, |
| 718 std::unique_ptr<SingleReleaseCallbackImpl> release_callback_impl) { | 720 std::unique_ptr<SingleReleaseCallbackImpl> release_callback_impl) { |
| 719 return CreateResourceFromTextureMailbox( | 721 return CreateResourceFromTextureMailbox(mailbox, gfx::BufferFormat::RGBA_8888, |
| 720 mailbox, std::move(release_callback_impl), false); | 722 std::move(release_callback_impl), |
| 723 false); |
| 721 } | 724 } |
| 722 | 725 |
| 723 void ResourceProvider::DeleteResource(ResourceId id) { | 726 void ResourceProvider::DeleteResource(ResourceId id) { |
| 724 DCHECK(thread_checker_.CalledOnValidThread()); | 727 DCHECK(thread_checker_.CalledOnValidThread()); |
| 725 ResourceMap::iterator it = resources_.find(id); | 728 ResourceMap::iterator it = resources_.find(id); |
| 726 CHECK(it != resources_.end()); | 729 CHECK(it != resources_.end()); |
| 727 Resource* resource = &it->second; | 730 Resource* resource = &it->second; |
| 728 DCHECK(!resource->marked_for_deletion); | 731 DCHECK(!resource->marked_for_deletion); |
| 729 DCHECK_EQ(resource->imported_count, 0); | 732 DCHECK_EQ(resource->imported_count, 0); |
| 730 DCHECK(!resource->locked_for_write); | 733 DCHECK(!resource->locked_for_write); |
| (...skipping 1439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2170 | 2173 |
| 2171 const int kImportance = 2; | 2174 const int kImportance = 2; |
| 2172 pmd->CreateSharedGlobalAllocatorDump(guid); | 2175 pmd->CreateSharedGlobalAllocatorDump(guid); |
| 2173 pmd->AddOwnershipEdge(dump->guid(), guid, kImportance); | 2176 pmd->AddOwnershipEdge(dump->guid(), guid, kImportance); |
| 2174 } | 2177 } |
| 2175 | 2178 |
| 2176 return true; | 2179 return true; |
| 2177 } | 2180 } |
| 2178 | 2181 |
| 2179 } // namespace cc | 2182 } // namespace cc |
| OLD | NEW |