OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/video_resource_updater.h" | 5 #include "cc/resources/video_resource_updater.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 return all_resources_.end(); | 161 return all_resources_.end(); |
162 | 162 |
163 gpu::Mailbox mailbox; | 163 gpu::Mailbox mailbox; |
164 if (has_mailbox) { | 164 if (has_mailbox) { |
165 DCHECK(context_provider_); | 165 DCHECK(context_provider_); |
166 | 166 |
167 gpu::gles2::GLES2Interface* gl = context_provider_->ContextGL(); | 167 gpu::gles2::GLES2Interface* gl = context_provider_->ContextGL(); |
168 | 168 |
169 gl->GenMailboxCHROMIUM(mailbox.name); | 169 gl->GenMailboxCHROMIUM(mailbox.name); |
170 ResourceProvider::ScopedWriteLockGL lock(resource_provider_, resource_id); | 170 ResourceProvider::ScopedWriteLockGL lock(resource_provider_, resource_id); |
171 gl->ProduceTextureDirectCHROMIUM(lock.texture_id(), GL_TEXTURE_2D, | 171 gl->ProduceTextureDirectCHROMIUM( |
172 mailbox.name); | 172 lock.texture_id(), |
| 173 resource_provider_->GetResourceTextureTarget(resource_id), |
| 174 mailbox.name); |
173 } | 175 } |
174 all_resources_.push_front( | 176 all_resources_.push_front( |
175 PlaneResource(resource_id, plane_size, format, mailbox)); | 177 PlaneResource(resource_id, plane_size, format, mailbox)); |
176 return all_resources_.begin(); | 178 return all_resources_.begin(); |
177 } | 179 } |
178 | 180 |
179 void VideoResourceUpdater::DeleteResource(ResourceList::iterator resource_it) { | 181 void VideoResourceUpdater::DeleteResource(ResourceList::iterator resource_it) { |
180 DCHECK_EQ(resource_it->ref_count, 0); | 182 DCHECK_EQ(resource_it->ref_count, 0); |
181 resource_provider_->DeleteResource(resource_it->resource_id); | 183 resource_provider_->DeleteResource(resource_it->resource_id); |
182 all_resources_.erase(resource_it); | 184 all_resources_.erase(resource_it); |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 memcpy(dst, src, bytes_per_row); | 379 memcpy(dst, src, bytes_per_row); |
378 } | 380 } |
379 pixels = &upload_pixels_[0]; | 381 pixels = &upload_pixels_[0]; |
380 } | 382 } |
381 | 383 |
382 resource_provider_->CopyToResource(plane_resource.resource_id, pixels, | 384 resource_provider_->CopyToResource(plane_resource.resource_id, pixels, |
383 resource_size_pixels); | 385 resource_size_pixels); |
384 SetPlaneResourceUniqueId(video_frame.get(), i, &plane_resource); | 386 SetPlaneResourceUniqueId(video_frame.get(), i, &plane_resource); |
385 } | 387 } |
386 | 388 |
387 external_resources.mailboxes.push_back(TextureMailbox( | 389 external_resources.mailboxes.push_back( |
388 plane_resource.mailbox, gpu::SyncToken(), GL_TEXTURE_2D)); | 390 TextureMailbox(plane_resource.mailbox, gpu::SyncToken(), |
| 391 resource_provider_->GetResourceTextureTarget( |
| 392 plane_resource.resource_id))); |
389 external_resources.release_callbacks.push_back( | 393 external_resources.release_callbacks.push_back( |
390 base::Bind(&RecycleResource, AsWeakPtr(), plane_resource.resource_id)); | 394 base::Bind(&RecycleResource, AsWeakPtr(), plane_resource.resource_id)); |
391 } | 395 } |
392 | 396 |
393 external_resources.type = VideoFrameExternalResources::YUV_RESOURCE; | 397 external_resources.type = VideoFrameExternalResources::YUV_RESOURCE; |
394 return external_resources; | 398 return external_resources; |
395 } | 399 } |
396 | 400 |
397 // static | 401 // static |
398 void VideoResourceUpdater::ReturnTexture( | 402 void VideoResourceUpdater::ReturnTexture( |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 resource_it->ref_count = 0; | 480 resource_it->ref_count = 0; |
477 updater->DeleteResource(resource_it); | 481 updater->DeleteResource(resource_it); |
478 return; | 482 return; |
479 } | 483 } |
480 | 484 |
481 --resource_it->ref_count; | 485 --resource_it->ref_count; |
482 DCHECK_GE(resource_it->ref_count, 0); | 486 DCHECK_GE(resource_it->ref_count, 0); |
483 } | 487 } |
484 | 488 |
485 } // namespace cc | 489 } // namespace cc |
OLD | NEW |