| 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 <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 | 9 |
| 10 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
| (...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 bool ResourceProvider::IsLost(ResourceId id) { | 454 bool ResourceProvider::IsLost(ResourceId id) { |
| 455 Resource* resource = GetResource(id); | 455 Resource* resource = GetResource(id); |
| 456 return resource->lost; | 456 return resource->lost; |
| 457 } | 457 } |
| 458 | 458 |
| 459 bool ResourceProvider::AllowOverlay(ResourceId id) { | 459 bool ResourceProvider::AllowOverlay(ResourceId id) { |
| 460 Resource* resource = GetResource(id); | 460 Resource* resource = GetResource(id); |
| 461 return resource->allow_overlay; | 461 return resource->allow_overlay; |
| 462 } | 462 } |
| 463 | 463 |
| 464 ResourceProvider::ResourceId ResourceProvider::CreateResource( | 464 ResourceId ResourceProvider::CreateResource(const gfx::Size& size, |
| 465 const gfx::Size& size, | 465 GLint wrap_mode, |
| 466 GLint wrap_mode, | 466 TextureHint hint, |
| 467 TextureHint hint, | 467 ResourceFormat format) { |
| 468 ResourceFormat format) { | |
| 469 DCHECK(!size.IsEmpty()); | 468 DCHECK(!size.IsEmpty()); |
| 470 switch (default_resource_type_) { | 469 switch (default_resource_type_) { |
| 471 case RESOURCE_TYPE_GL_TEXTURE: | 470 case RESOURCE_TYPE_GL_TEXTURE: |
| 472 return CreateGLTexture(size, | 471 return CreateGLTexture(size, |
| 473 GL_TEXTURE_2D, | 472 GL_TEXTURE_2D, |
| 474 GL_TEXTURE_POOL_UNMANAGED_CHROMIUM, | 473 GL_TEXTURE_POOL_UNMANAGED_CHROMIUM, |
| 475 wrap_mode, | 474 wrap_mode, |
| 476 hint, | 475 hint, |
| 477 format); | 476 format); |
| 478 case RESOURCE_TYPE_BITMAP: | 477 case RESOURCE_TYPE_BITMAP: |
| 479 DCHECK_EQ(RGBA_8888, format); | 478 DCHECK_EQ(RGBA_8888, format); |
| 480 return CreateBitmap(size, wrap_mode); | 479 return CreateBitmap(size, wrap_mode); |
| 481 } | 480 } |
| 482 | 481 |
| 483 LOG(FATAL) << "Invalid default resource type."; | 482 LOG(FATAL) << "Invalid default resource type."; |
| 484 return 0; | 483 return 0; |
| 485 } | 484 } |
| 486 | 485 |
| 487 ResourceProvider::ResourceId ResourceProvider::CreateManagedResource( | 486 ResourceId ResourceProvider::CreateManagedResource(const gfx::Size& size, |
| 488 const gfx::Size& size, | 487 GLenum target, |
| 489 GLenum target, | 488 GLint wrap_mode, |
| 490 GLint wrap_mode, | 489 TextureHint hint, |
| 491 TextureHint hint, | 490 ResourceFormat format) { |
| 492 ResourceFormat format) { | |
| 493 DCHECK(!size.IsEmpty()); | 491 DCHECK(!size.IsEmpty()); |
| 494 switch (default_resource_type_) { | 492 switch (default_resource_type_) { |
| 495 case RESOURCE_TYPE_GL_TEXTURE: | 493 case RESOURCE_TYPE_GL_TEXTURE: |
| 496 return CreateGLTexture(size, | 494 return CreateGLTexture(size, |
| 497 target, | 495 target, |
| 498 GL_TEXTURE_POOL_MANAGED_CHROMIUM, | 496 GL_TEXTURE_POOL_MANAGED_CHROMIUM, |
| 499 wrap_mode, | 497 wrap_mode, |
| 500 hint, | 498 hint, |
| 501 format); | 499 format); |
| 502 case RESOURCE_TYPE_BITMAP: | 500 case RESOURCE_TYPE_BITMAP: |
| 503 DCHECK_EQ(RGBA_8888, format); | 501 DCHECK_EQ(RGBA_8888, format); |
| 504 return CreateBitmap(size, wrap_mode); | 502 return CreateBitmap(size, wrap_mode); |
| 505 } | 503 } |
| 506 | 504 |
| 507 LOG(FATAL) << "Invalid default resource type."; | 505 LOG(FATAL) << "Invalid default resource type."; |
| 508 return 0; | 506 return 0; |
| 509 } | 507 } |
| 510 | 508 |
| 511 ResourceProvider::ResourceId ResourceProvider::CreateGLTexture( | 509 ResourceId ResourceProvider::CreateGLTexture(const gfx::Size& size, |
| 512 const gfx::Size& size, | 510 GLenum target, |
| 513 GLenum target, | 511 GLenum texture_pool, |
| 514 GLenum texture_pool, | 512 GLint wrap_mode, |
| 515 GLint wrap_mode, | 513 TextureHint hint, |
| 516 TextureHint hint, | 514 ResourceFormat format) { |
| 517 ResourceFormat format) { | |
| 518 DCHECK_LE(size.width(), max_texture_size_); | 515 DCHECK_LE(size.width(), max_texture_size_); |
| 519 DCHECK_LE(size.height(), max_texture_size_); | 516 DCHECK_LE(size.height(), max_texture_size_); |
| 520 DCHECK(thread_checker_.CalledOnValidThread()); | 517 DCHECK(thread_checker_.CalledOnValidThread()); |
| 521 | 518 |
| 522 ResourceId id = next_id_++; | 519 ResourceId id = next_id_++; |
| 523 Resource* resource = InsertResource( | 520 Resource* resource = InsertResource( |
| 524 id, Resource(0, size, Resource::INTERNAL, target, GL_LINEAR, texture_pool, | 521 id, Resource(0, size, Resource::INTERNAL, target, GL_LINEAR, texture_pool, |
| 525 wrap_mode, hint, format)); | 522 wrap_mode, hint, format)); |
| 526 resource->allocated = false; | 523 resource->allocated = false; |
| 527 return id; | 524 return id; |
| 528 } | 525 } |
| 529 | 526 |
| 530 ResourceProvider::ResourceId ResourceProvider::CreateBitmap( | 527 ResourceId ResourceProvider::CreateBitmap(const gfx::Size& size, |
| 531 const gfx::Size& size, GLint wrap_mode) { | 528 GLint wrap_mode) { |
| 532 DCHECK(thread_checker_.CalledOnValidThread()); | 529 DCHECK(thread_checker_.CalledOnValidThread()); |
| 533 | 530 |
| 534 scoped_ptr<SharedBitmap> bitmap = | 531 scoped_ptr<SharedBitmap> bitmap = |
| 535 shared_bitmap_manager_->AllocateSharedBitmap(size); | 532 shared_bitmap_manager_->AllocateSharedBitmap(size); |
| 536 uint8_t* pixels = bitmap->pixels(); | 533 uint8_t* pixels = bitmap->pixels(); |
| 537 DCHECK(pixels); | 534 DCHECK(pixels); |
| 538 | 535 |
| 539 ResourceId id = next_id_++; | 536 ResourceId id = next_id_++; |
| 540 Resource* resource = | 537 Resource* resource = |
| 541 InsertResource(id, Resource(pixels, bitmap.release(), size, | 538 InsertResource(id, Resource(pixels, bitmap.release(), size, |
| 542 Resource::INTERNAL, GL_LINEAR, wrap_mode)); | 539 Resource::INTERNAL, GL_LINEAR, wrap_mode)); |
| 543 resource->allocated = true; | 540 resource->allocated = true; |
| 544 return id; | 541 return id; |
| 545 } | 542 } |
| 546 | 543 |
| 547 ResourceProvider::ResourceId ResourceProvider::CreateResourceFromIOSurface( | 544 ResourceId ResourceProvider::CreateResourceFromIOSurface( |
| 548 const gfx::Size& size, | 545 const gfx::Size& size, |
| 549 unsigned io_surface_id) { | 546 unsigned io_surface_id) { |
| 550 DCHECK(thread_checker_.CalledOnValidThread()); | 547 DCHECK(thread_checker_.CalledOnValidThread()); |
| 551 | 548 |
| 552 ResourceId id = next_id_++; | 549 ResourceId id = next_id_++; |
| 553 Resource* resource = InsertResource( | 550 Resource* resource = InsertResource( |
| 554 id, Resource(0, gfx::Size(), Resource::INTERNAL, GL_TEXTURE_RECTANGLE_ARB, | 551 id, Resource(0, gfx::Size(), Resource::INTERNAL, GL_TEXTURE_RECTANGLE_ARB, |
| 555 GL_LINEAR, GL_TEXTURE_POOL_UNMANAGED_CHROMIUM, | 552 GL_LINEAR, GL_TEXTURE_POOL_UNMANAGED_CHROMIUM, |
| 556 GL_CLAMP_TO_EDGE, TEXTURE_HINT_IMMUTABLE, RGBA_8888)); | 553 GL_CLAMP_TO_EDGE, TEXTURE_HINT_IMMUTABLE, RGBA_8888)); |
| 557 LazyCreate(resource); | 554 LazyCreate(resource); |
| 558 GLES2Interface* gl = ContextGL(); | 555 GLES2Interface* gl = ContextGL(); |
| 559 DCHECK(gl); | 556 DCHECK(gl); |
| 560 gl->BindTexture(GL_TEXTURE_RECTANGLE_ARB, resource->gl_id); | 557 gl->BindTexture(GL_TEXTURE_RECTANGLE_ARB, resource->gl_id); |
| 561 gl->TexImageIOSurface2DCHROMIUM( | 558 gl->TexImageIOSurface2DCHROMIUM( |
| 562 GL_TEXTURE_RECTANGLE_ARB, size.width(), size.height(), io_surface_id, 0); | 559 GL_TEXTURE_RECTANGLE_ARB, size.width(), size.height(), io_surface_id, 0); |
| 563 resource->allocated = true; | 560 resource->allocated = true; |
| 564 return id; | 561 return id; |
| 565 } | 562 } |
| 566 | 563 |
| 567 ResourceProvider::ResourceId ResourceProvider::CreateResourceFromTextureMailbox( | 564 ResourceId ResourceProvider::CreateResourceFromTextureMailbox( |
| 568 const TextureMailbox& mailbox, | 565 const TextureMailbox& mailbox, |
| 569 scoped_ptr<SingleReleaseCallbackImpl> release_callback_impl) { | 566 scoped_ptr<SingleReleaseCallbackImpl> release_callback_impl) { |
| 570 DCHECK(thread_checker_.CalledOnValidThread()); | 567 DCHECK(thread_checker_.CalledOnValidThread()); |
| 571 // Just store the information. Mailbox will be consumed in LockForRead(). | 568 // Just store the information. Mailbox will be consumed in LockForRead(). |
| 572 ResourceId id = next_id_++; | 569 ResourceId id = next_id_++; |
| 573 DCHECK(mailbox.IsValid()); | 570 DCHECK(mailbox.IsValid()); |
| 574 Resource* resource = nullptr; | 571 Resource* resource = nullptr; |
| 575 if (mailbox.IsTexture()) { | 572 if (mailbox.IsTexture()) { |
| 576 resource = InsertResource( | 573 resource = InsertResource( |
| 577 id, Resource(0, gfx::Size(), Resource::EXTERNAL, mailbox.target(), | 574 id, Resource(0, gfx::Size(), Resource::EXTERNAL, mailbox.target(), |
| (...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 956 | 953 |
| 957 void ResourceProvider::UnlockForWrite(ResourceProvider::Resource* resource) { | 954 void ResourceProvider::UnlockForWrite(ResourceProvider::Resource* resource) { |
| 958 DCHECK(resource->locked_for_write); | 955 DCHECK(resource->locked_for_write); |
| 959 DCHECK_EQ(resource->exported_count, 0); | 956 DCHECK_EQ(resource->exported_count, 0); |
| 960 DCHECK(resource->origin == Resource::INTERNAL); | 957 DCHECK(resource->origin == Resource::INTERNAL); |
| 961 resource->locked_for_write = false; | 958 resource->locked_for_write = false; |
| 962 } | 959 } |
| 963 | 960 |
| 964 ResourceProvider::ScopedReadLockGL::ScopedReadLockGL( | 961 ResourceProvider::ScopedReadLockGL::ScopedReadLockGL( |
| 965 ResourceProvider* resource_provider, | 962 ResourceProvider* resource_provider, |
| 966 ResourceProvider::ResourceId resource_id) | 963 ResourceId resource_id) |
| 967 : resource_provider_(resource_provider), | 964 : resource_provider_(resource_provider), |
| 968 resource_id_(resource_id), | 965 resource_id_(resource_id), |
| 969 resource_(resource_provider->LockForRead(resource_id)) { | 966 resource_(resource_provider->LockForRead(resource_id)) { |
| 970 DCHECK(resource_); | 967 DCHECK(resource_); |
| 971 } | 968 } |
| 972 | 969 |
| 973 ResourceProvider::ScopedReadLockGL::~ScopedReadLockGL() { | 970 ResourceProvider::ScopedReadLockGL::~ScopedReadLockGL() { |
| 974 resource_provider_->UnlockForRead(resource_id_); | 971 resource_provider_->UnlockForRead(resource_id_); |
| 975 } | 972 } |
| 976 | 973 |
| 977 ResourceProvider::ScopedSamplerGL::ScopedSamplerGL( | 974 ResourceProvider::ScopedSamplerGL::ScopedSamplerGL( |
| 978 ResourceProvider* resource_provider, | 975 ResourceProvider* resource_provider, |
| 979 ResourceProvider::ResourceId resource_id, | 976 ResourceId resource_id, |
| 980 GLenum filter) | 977 GLenum filter) |
| 981 : ScopedReadLockGL(resource_provider, resource_id), | 978 : ScopedReadLockGL(resource_provider, resource_id), |
| 982 unit_(GL_TEXTURE0), | 979 unit_(GL_TEXTURE0), |
| 983 target_(resource_provider->BindForSampling(resource_id, unit_, filter)) { | 980 target_(resource_provider->BindForSampling(resource_id, unit_, filter)) { |
| 984 } | 981 } |
| 985 | 982 |
| 986 ResourceProvider::ScopedSamplerGL::ScopedSamplerGL( | 983 ResourceProvider::ScopedSamplerGL::ScopedSamplerGL( |
| 987 ResourceProvider* resource_provider, | 984 ResourceProvider* resource_provider, |
| 988 ResourceProvider::ResourceId resource_id, | 985 ResourceId resource_id, |
| 989 GLenum unit, | 986 GLenum unit, |
| 990 GLenum filter) | 987 GLenum filter) |
| 991 : ScopedReadLockGL(resource_provider, resource_id), | 988 : ScopedReadLockGL(resource_provider, resource_id), |
| 992 unit_(unit), | 989 unit_(unit), |
| 993 target_(resource_provider->BindForSampling(resource_id, unit_, filter)) { | 990 target_(resource_provider->BindForSampling(resource_id, unit_, filter)) { |
| 994 } | 991 } |
| 995 | 992 |
| 996 ResourceProvider::ScopedSamplerGL::~ScopedSamplerGL() { | 993 ResourceProvider::ScopedSamplerGL::~ScopedSamplerGL() { |
| 997 } | 994 } |
| 998 | 995 |
| 999 ResourceProvider::ScopedWriteLockGL::ScopedWriteLockGL( | 996 ResourceProvider::ScopedWriteLockGL::ScopedWriteLockGL( |
| 1000 ResourceProvider* resource_provider, | 997 ResourceProvider* resource_provider, |
| 1001 ResourceProvider::ResourceId resource_id) | 998 ResourceId resource_id) |
| 1002 : resource_provider_(resource_provider), | 999 : resource_provider_(resource_provider), |
| 1003 resource_(resource_provider->LockForWrite(resource_id)) { | 1000 resource_(resource_provider->LockForWrite(resource_id)) { |
| 1004 resource_provider_->LazyAllocate(resource_); | 1001 resource_provider_->LazyAllocate(resource_); |
| 1005 texture_id_ = resource_->gl_id; | 1002 texture_id_ = resource_->gl_id; |
| 1006 DCHECK(texture_id_); | 1003 DCHECK(texture_id_); |
| 1007 } | 1004 } |
| 1008 | 1005 |
| 1009 ResourceProvider::ScopedWriteLockGL::~ScopedWriteLockGL() { | 1006 ResourceProvider::ScopedWriteLockGL::~ScopedWriteLockGL() { |
| 1010 resource_provider_->UnlockForWrite(resource_); | 1007 resource_provider_->UnlockForWrite(resource_); |
| 1011 } | 1008 } |
| 1012 | 1009 |
| 1013 void ResourceProvider::PopulateSkBitmapWithResource( | 1010 void ResourceProvider::PopulateSkBitmapWithResource( |
| 1014 SkBitmap* sk_bitmap, const Resource* resource) { | 1011 SkBitmap* sk_bitmap, const Resource* resource) { |
| 1015 DCHECK_EQ(RGBA_8888, resource->format); | 1012 DCHECK_EQ(RGBA_8888, resource->format); |
| 1016 SkImageInfo info = SkImageInfo::MakeN32Premul(resource->size.width(), | 1013 SkImageInfo info = SkImageInfo::MakeN32Premul(resource->size.width(), |
| 1017 resource->size.height()); | 1014 resource->size.height()); |
| 1018 sk_bitmap->installPixels(info, resource->pixels, info.minRowBytes()); | 1015 sk_bitmap->installPixels(info, resource->pixels, info.minRowBytes()); |
| 1019 } | 1016 } |
| 1020 | 1017 |
| 1021 ResourceProvider::ScopedReadLockSoftware::ScopedReadLockSoftware( | 1018 ResourceProvider::ScopedReadLockSoftware::ScopedReadLockSoftware( |
| 1022 ResourceProvider* resource_provider, | 1019 ResourceProvider* resource_provider, |
| 1023 ResourceProvider::ResourceId resource_id) | 1020 ResourceId resource_id) |
| 1024 : resource_provider_(resource_provider), | 1021 : resource_provider_(resource_provider), resource_id_(resource_id) { |
| 1025 resource_id_(resource_id) { | |
| 1026 const Resource* resource = resource_provider->LockForRead(resource_id); | 1022 const Resource* resource = resource_provider->LockForRead(resource_id); |
| 1027 wrap_mode_ = resource->wrap_mode; | 1023 wrap_mode_ = resource->wrap_mode; |
| 1028 ResourceProvider::PopulateSkBitmapWithResource(&sk_bitmap_, resource); | 1024 ResourceProvider::PopulateSkBitmapWithResource(&sk_bitmap_, resource); |
| 1029 } | 1025 } |
| 1030 | 1026 |
| 1031 ResourceProvider::ScopedReadLockSoftware::~ScopedReadLockSoftware() { | 1027 ResourceProvider::ScopedReadLockSoftware::~ScopedReadLockSoftware() { |
| 1032 resource_provider_->UnlockForRead(resource_id_); | 1028 resource_provider_->UnlockForRead(resource_id_); |
| 1033 } | 1029 } |
| 1034 | 1030 |
| 1035 ResourceProvider::ScopedWriteLockSoftware::ScopedWriteLockSoftware( | 1031 ResourceProvider::ScopedWriteLockSoftware::ScopedWriteLockSoftware( |
| 1036 ResourceProvider* resource_provider, | 1032 ResourceProvider* resource_provider, |
| 1037 ResourceProvider::ResourceId resource_id) | 1033 ResourceId resource_id) |
| 1038 : resource_provider_(resource_provider), | 1034 : resource_provider_(resource_provider), |
| 1039 resource_(resource_provider->LockForWrite(resource_id)) { | 1035 resource_(resource_provider->LockForWrite(resource_id)) { |
| 1040 ResourceProvider::PopulateSkBitmapWithResource(&sk_bitmap_, resource_); | 1036 ResourceProvider::PopulateSkBitmapWithResource(&sk_bitmap_, resource_); |
| 1041 DCHECK(valid()); | 1037 DCHECK(valid()); |
| 1042 } | 1038 } |
| 1043 | 1039 |
| 1044 ResourceProvider::ScopedWriteLockSoftware::~ScopedWriteLockSoftware() { | 1040 ResourceProvider::ScopedWriteLockSoftware::~ScopedWriteLockSoftware() { |
| 1045 DCHECK(thread_checker_.CalledOnValidThread()); | 1041 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1046 resource_provider_->UnlockForWrite(resource_); | 1042 resource_provider_->UnlockForWrite(resource_); |
| 1047 } | 1043 } |
| 1048 | 1044 |
| 1049 ResourceProvider::ScopedWriteLockGpuMemoryBuffer:: | 1045 ResourceProvider::ScopedWriteLockGpuMemoryBuffer:: |
| 1050 ScopedWriteLockGpuMemoryBuffer(ResourceProvider* resource_provider, | 1046 ScopedWriteLockGpuMemoryBuffer(ResourceProvider* resource_provider, |
| 1051 ResourceProvider::ResourceId resource_id) | 1047 ResourceId resource_id) |
| 1052 : resource_provider_(resource_provider), | 1048 : resource_provider_(resource_provider), |
| 1053 resource_(resource_provider->LockForWrite(resource_id)), | 1049 resource_(resource_provider->LockForWrite(resource_id)), |
| 1054 gpu_memory_buffer_manager_(resource_provider->gpu_memory_buffer_manager_), | 1050 gpu_memory_buffer_manager_(resource_provider->gpu_memory_buffer_manager_), |
| 1055 gpu_memory_buffer_(nullptr), | 1051 gpu_memory_buffer_(nullptr), |
| 1056 size_(resource_->size), | 1052 size_(resource_->size), |
| 1057 format_(resource_->format) { | 1053 format_(resource_->format) { |
| 1058 DCHECK_EQ(RESOURCE_TYPE_GL_TEXTURE, resource_->type); | 1054 DCHECK_EQ(RESOURCE_TYPE_GL_TEXTURE, resource_->type); |
| 1059 std::swap(gpu_memory_buffer_, resource_->gpu_memory_buffer); | 1055 std::swap(gpu_memory_buffer_, resource_->gpu_memory_buffer); |
| 1060 } | 1056 } |
| 1061 | 1057 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1099 gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer( | 1095 gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer( |
| 1100 size_, ToGpuMemoryBufferFormat(format_), gfx::GpuMemoryBuffer::MAP); | 1096 size_, ToGpuMemoryBufferFormat(format_), gfx::GpuMemoryBuffer::MAP); |
| 1101 gpu_memory_buffer_ = gpu_memory_buffer.release(); | 1097 gpu_memory_buffer_ = gpu_memory_buffer.release(); |
| 1102 } | 1098 } |
| 1103 | 1099 |
| 1104 return gpu_memory_buffer_; | 1100 return gpu_memory_buffer_; |
| 1105 } | 1101 } |
| 1106 | 1102 |
| 1107 ResourceProvider::ScopedWriteLockGr::ScopedWriteLockGr( | 1103 ResourceProvider::ScopedWriteLockGr::ScopedWriteLockGr( |
| 1108 ResourceProvider* resource_provider, | 1104 ResourceProvider* resource_provider, |
| 1109 ResourceProvider::ResourceId resource_id) | 1105 ResourceId resource_id) |
| 1110 : resource_provider_(resource_provider), | 1106 : resource_provider_(resource_provider), |
| 1111 resource_(resource_provider->LockForWrite(resource_id)) { | 1107 resource_(resource_provider->LockForWrite(resource_id)) { |
| 1112 DCHECK(thread_checker_.CalledOnValidThread()); | 1108 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1113 resource_provider_->LazyAllocate(resource_); | 1109 resource_provider_->LazyAllocate(resource_); |
| 1114 } | 1110 } |
| 1115 | 1111 |
| 1116 ResourceProvider::ScopedWriteLockGr::~ScopedWriteLockGr() { | 1112 ResourceProvider::ScopedWriteLockGr::~ScopedWriteLockGr() { |
| 1117 DCHECK(thread_checker_.CalledOnValidThread()); | 1113 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1118 DCHECK(resource_->locked_for_write); | 1114 DCHECK(resource_->locked_for_write); |
| 1119 resource_provider_->UnlockForWrite(resource_); | 1115 resource_provider_->UnlockForWrite(resource_); |
| (...skipping 936 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2056 } | 2052 } |
| 2057 | 2053 |
| 2058 class GrContext* ResourceProvider::GrContext(bool worker_context) const { | 2054 class GrContext* ResourceProvider::GrContext(bool worker_context) const { |
| 2059 ContextProvider* context_provider = | 2055 ContextProvider* context_provider = |
| 2060 worker_context ? output_surface_->worker_context_provider() | 2056 worker_context ? output_surface_->worker_context_provider() |
| 2061 : output_surface_->context_provider(); | 2057 : output_surface_->context_provider(); |
| 2062 return context_provider ? context_provider->GrContext() : NULL; | 2058 return context_provider ? context_provider->GrContext() : NULL; |
| 2063 } | 2059 } |
| 2064 | 2060 |
| 2065 } // namespace cc | 2061 } // namespace cc |
| OLD | NEW |