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

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

Issue 2089433002: cc: Remove ScopedReadLockGpuMemoryBuffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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
« no previous file with comments | « cc/resources/resource_provider.h ('k') | cc/resources/resource_provider_unittest.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 894 matching lines...) Expand 10 before | Expand all | Expand 10 after
905 } 905 }
906 906
907 ResourceProvider::Resource* ResourceProvider::GetResource(ResourceId id) { 907 ResourceProvider::Resource* ResourceProvider::GetResource(ResourceId id) {
908 DCHECK(thread_checker_.CalledOnValidThread()); 908 DCHECK(thread_checker_.CalledOnValidThread());
909 DCHECK(id); 909 DCHECK(id);
910 ResourceMap::iterator it = resources_.find(id); 910 ResourceMap::iterator it = resources_.find(id);
911 DCHECK(it != resources_.end()); 911 DCHECK(it != resources_.end());
912 return &it->second; 912 return &it->second;
913 } 913 }
914 914
915 const ResourceProvider::Resource* ResourceProvider::LockForRead( 915 const ResourceProvider::Resource* ResourceProvider::LockForRead(ResourceId id) {
916 ResourceId id,
917 bool create_gpu_memory_buffer) {
918 Resource* resource = GetResource(id); 916 Resource* resource = GetResource(id);
919 DCHECK(!resource->locked_for_write) << "locked for write: " 917 DCHECK(!resource->locked_for_write) << "locked for write: "
920 << resource->locked_for_write; 918 << resource->locked_for_write;
921 DCHECK_EQ(resource->exported_count, 0); 919 DCHECK_EQ(resource->exported_count, 0);
922 // Uninitialized! Call SetPixels or LockForWrite first. 920 // Uninitialized! Call SetPixels or LockForWrite first.
923 DCHECK(resource->allocated); 921 DCHECK(resource->allocated);
924 922
925 // Mailbox sync_tokens must be processed by a call to 923 // Mailbox sync_tokens must be processed by a call to
926 // WaitSyncTokenIfNeeded() prior to calling LockForRead(). 924 // WaitSyncTokenIfNeeded() prior to calling LockForRead().
927 DCHECK_NE(Resource::NEEDS_WAIT, resource->synchronization_state()); 925 DCHECK_NE(Resource::NEEDS_WAIT, resource->synchronization_state());
(...skipping 22 matching lines...) Expand all
950 } 948 }
951 } 949 }
952 950
953 resource->lock_for_read_count++; 951 resource->lock_for_read_count++;
954 if (resource->read_lock_fences_enabled) { 952 if (resource->read_lock_fences_enabled) {
955 if (current_read_lock_fence_.get()) 953 if (current_read_lock_fence_.get())
956 current_read_lock_fence_->Set(); 954 current_read_lock_fence_->Set();
957 resource->read_lock_fence = current_read_lock_fence_; 955 resource->read_lock_fence = current_read_lock_fence_;
958 } 956 }
959 957
960 if (create_gpu_memory_buffer && !resource->gpu_memory_buffer &&
961 resource->child_id) {
962 ChildMap::iterator child_it = children_.find(resource->child_id);
963 DCHECK(child_it != children_.end());
964 Child& child_info = child_it->second;
965 if (child_info.gpu_memory_buffer_client_id != -1 &&
966 resource->gpu_memory_buffer_id.id != -1) {
967 resource->gpu_memory_buffer =
968 gpu_memory_buffer_manager_->CreateGpuMemoryBufferFromClientId(
969 child_info.gpu_memory_buffer_client_id,
970 resource->gpu_memory_buffer_id);
971 }
972 }
973
974 return resource; 958 return resource;
975 } 959 }
976 960
977 void ResourceProvider::UnlockForRead(ResourceId id) { 961 void ResourceProvider::UnlockForRead(ResourceId id) {
978 DCHECK(thread_checker_.CalledOnValidThread()); 962 DCHECK(thread_checker_.CalledOnValidThread());
979 ResourceMap::iterator it = resources_.find(id); 963 ResourceMap::iterator it = resources_.find(id);
980 CHECK(it != resources_.end()); 964 CHECK(it != resources_.end());
981 965
982 Resource* resource = &it->second; 966 Resource* resource = &it->second;
983 DCHECK_GT(resource->lock_for_read_count, 0); 967 DCHECK_GT(resource->lock_for_read_count, 0);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1028 void ResourceProvider::EnableReadLockFencesForTesting(ResourceId id) { 1012 void ResourceProvider::EnableReadLockFencesForTesting(ResourceId id) {
1029 Resource* resource = GetResource(id); 1013 Resource* resource = GetResource(id);
1030 DCHECK(resource); 1014 DCHECK(resource);
1031 resource->read_lock_fences_enabled = true; 1015 resource->read_lock_fences_enabled = true;
1032 } 1016 }
1033 1017
1034 ResourceProvider::ScopedReadLockGL::ScopedReadLockGL( 1018 ResourceProvider::ScopedReadLockGL::ScopedReadLockGL(
1035 ResourceProvider* resource_provider, 1019 ResourceProvider* resource_provider,
1036 ResourceId resource_id) 1020 ResourceId resource_id)
1037 : resource_provider_(resource_provider), resource_id_(resource_id) { 1021 : resource_provider_(resource_provider), resource_id_(resource_id) {
1038 const Resource* resource = resource_provider->LockForRead(resource_id, false); 1022 const Resource* resource = resource_provider->LockForRead(resource_id);
1039 texture_id_ = resource->gl_id; 1023 texture_id_ = resource->gl_id;
1040 target_ = resource->target; 1024 target_ = resource->target;
1041 size_ = resource->size; 1025 size_ = resource->size;
1042 } 1026 }
1043 1027
1044 ResourceProvider::ScopedReadLockGL::~ScopedReadLockGL() { 1028 ResourceProvider::ScopedReadLockGL::~ScopedReadLockGL() {
1045 resource_provider_->UnlockForRead(resource_id_); 1029 resource_provider_->UnlockForRead(resource_id_);
1046 } 1030 }
1047 1031
1048 ResourceProvider::ScopedSamplerGL::ScopedSamplerGL( 1032 ResourceProvider::ScopedSamplerGL::ScopedSamplerGL(
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1165 DCHECK_EQ(RGBA_8888, resource->format); 1149 DCHECK_EQ(RGBA_8888, resource->format);
1166 SkImageInfo info = SkImageInfo::MakeN32Premul(resource->size.width(), 1150 SkImageInfo info = SkImageInfo::MakeN32Premul(resource->size.width(),
1167 resource->size.height()); 1151 resource->size.height());
1168 sk_bitmap->installPixels(info, resource->pixels, info.minRowBytes()); 1152 sk_bitmap->installPixels(info, resource->pixels, info.minRowBytes());
1169 } 1153 }
1170 1154
1171 ResourceProvider::ScopedReadLockSoftware::ScopedReadLockSoftware( 1155 ResourceProvider::ScopedReadLockSoftware::ScopedReadLockSoftware(
1172 ResourceProvider* resource_provider, 1156 ResourceProvider* resource_provider,
1173 ResourceId resource_id) 1157 ResourceId resource_id)
1174 : resource_provider_(resource_provider), resource_id_(resource_id) { 1158 : resource_provider_(resource_provider), resource_id_(resource_id) {
1175 const Resource* resource = resource_provider->LockForRead(resource_id, false); 1159 const Resource* resource = resource_provider->LockForRead(resource_id);
1176 ResourceProvider::PopulateSkBitmapWithResource(&sk_bitmap_, resource); 1160 ResourceProvider::PopulateSkBitmapWithResource(&sk_bitmap_, resource);
1177 } 1161 }
1178 1162
1179 ResourceProvider::ScopedReadLockSoftware::~ScopedReadLockSoftware() { 1163 ResourceProvider::ScopedReadLockSoftware::~ScopedReadLockSoftware() {
1180 resource_provider_->UnlockForRead(resource_id_); 1164 resource_provider_->UnlockForRead(resource_id_);
1181 } 1165 }
1182 1166
1183 ResourceProvider::ScopedWriteLockSoftware::ScopedWriteLockSoftware( 1167 ResourceProvider::ScopedWriteLockSoftware::ScopedWriteLockSoftware(
1184 ResourceProvider* resource_provider, 1168 ResourceProvider* resource_provider,
1185 ResourceId resource_id) 1169 ResourceId resource_id)
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1237 ResourceProvider::ScopedWriteLockGpuMemoryBuffer::GetGpuMemoryBuffer() { 1221 ResourceProvider::ScopedWriteLockGpuMemoryBuffer::GetGpuMemoryBuffer() {
1238 if (!gpu_memory_buffer_) { 1222 if (!gpu_memory_buffer_) {
1239 gpu_memory_buffer_ = 1223 gpu_memory_buffer_ =
1240 resource_provider_->gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer( 1224 resource_provider_->gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer(
1241 size_, BufferFormat(format_), 1225 size_, BufferFormat(format_),
1242 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE, gpu::kNullSurfaceHandle); 1226 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE, gpu::kNullSurfaceHandle);
1243 } 1227 }
1244 return gpu_memory_buffer_.get(); 1228 return gpu_memory_buffer_.get();
1245 } 1229 }
1246 1230
1247 ResourceProvider::ScopedReadLockGpuMemoryBuffer::ScopedReadLockGpuMemoryBuffer(
1248 ResourceProvider* resource_provider,
1249 ResourceId resource_id)
1250 : resource_provider_(resource_provider), resource_id_(resource_id) {
1251 const Resource* resource = resource_provider->LockForRead(resource_id, true);
1252 gpu_memory_buffer_ = resource->gpu_memory_buffer.get();
1253 texture_id_ = resource->gl_id;
1254 }
1255
1256 ResourceProvider::ScopedReadLockGpuMemoryBuffer::
1257 ~ScopedReadLockGpuMemoryBuffer() {
1258 DCHECK(thread_checker_.CalledOnValidThread());
1259 resource_provider_->UnlockForRead(resource_id_);
1260 }
1261
1262 ResourceProvider::SynchronousFence::SynchronousFence( 1231 ResourceProvider::SynchronousFence::SynchronousFence(
1263 gpu::gles2::GLES2Interface* gl) 1232 gpu::gles2::GLES2Interface* gl)
1264 : gl_(gl), has_synchronized_(true) { 1233 : gl_(gl), has_synchronized_(true) {
1265 } 1234 }
1266 1235
1267 ResourceProvider::SynchronousFence::~SynchronousFence() { 1236 ResourceProvider::SynchronousFence::~SynchronousFence() {
1268 } 1237 }
1269 1238
1270 void ResourceProvider::SynchronousFence::Set() { 1239 void ResourceProvider::SynchronousFence::Set() {
1271 has_synchronized_ = false; 1240 has_synchronized_ = false;
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after
1988 1957
1989 const int kImportance = 2; 1958 const int kImportance = 2;
1990 pmd->CreateSharedGlobalAllocatorDump(guid); 1959 pmd->CreateSharedGlobalAllocatorDump(guid);
1991 pmd->AddOwnershipEdge(dump->guid(), guid, kImportance); 1960 pmd->AddOwnershipEdge(dump->guid(), guid, kImportance);
1992 } 1961 }
1993 1962
1994 return true; 1963 return true;
1995 } 1964 }
1996 1965
1997 } // namespace cc 1966 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/resource_provider.h ('k') | cc/resources/resource_provider_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698