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

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

Issue 635543002: cc: Make ResourceProvider use bindless Produce/ConsumeTextureCHROMIUM (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove redundant func. Created 5 years, 9 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 | « no previous file | 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 <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 880 matching lines...) Expand 10 before | Expand all | Expand 10 after
891 if (resource->type == RESOURCE_TYPE_GL_TEXTURE && !resource->gl_id) { 891 if (resource->type == RESOURCE_TYPE_GL_TEXTURE && !resource->gl_id) {
892 DCHECK(resource->origin != Resource::INTERNAL); 892 DCHECK(resource->origin != Resource::INTERNAL);
893 DCHECK(resource->mailbox.IsTexture()); 893 DCHECK(resource->mailbox.IsTexture());
894 894
895 // Mailbox sync_points must be processed by a call to 895 // Mailbox sync_points must be processed by a call to
896 // WaitSyncPointIfNeeded() prior to calling LockForRead(). 896 // WaitSyncPointIfNeeded() prior to calling LockForRead().
897 DCHECK(!resource->mailbox.sync_point()); 897 DCHECK(!resource->mailbox.sync_point());
898 898
899 GLES2Interface* gl = ContextGL(); 899 GLES2Interface* gl = ContextGL();
900 DCHECK(gl); 900 DCHECK(gl);
901 resource->gl_id = texture_id_allocator_->NextId(); 901 resource->gl_id =
902 GLC(gl, gl->BindTexture(resource->target, resource->gl_id)); 902 GLC(gl, gl->CreateAndConsumeTextureCHROMIUM(resource->mailbox.target(),
903 GLC(gl, 903 resource->mailbox.name()));
904 gl->ConsumeTextureCHROMIUM(resource->mailbox.target(),
905 resource->mailbox.name()));
906 } 904 }
907 905
908 if (!resource->pixels && resource->has_shared_bitmap_id && 906 if (!resource->pixels && resource->has_shared_bitmap_id &&
909 shared_bitmap_manager_) { 907 shared_bitmap_manager_) {
910 scoped_ptr<SharedBitmap> bitmap = 908 scoped_ptr<SharedBitmap> bitmap =
911 shared_bitmap_manager_->GetSharedBitmapFromId( 909 shared_bitmap_manager_->GetSharedBitmapFromId(
912 resource->size, resource->shared_bitmap_id); 910 resource->size, resource->shared_bitmap_id);
913 if (bitmap) { 911 if (bitmap) {
914 resource->shared_bitmap = bitmap.release(); 912 resource->shared_bitmap = bitmap.release();
915 resource->pixels = resource->shared_bitmap->pixels(); 913 resource->pixels = resource->shared_bitmap->pixels();
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
1588 resource->is_repeated = (source->wrap_mode == GL_REPEAT); 1586 resource->is_repeated = (source->wrap_mode == GL_REPEAT);
1589 resource->allow_overlay = source->allow_overlay; 1587 resource->allow_overlay = source->allow_overlay;
1590 1588
1591 if (source->type == RESOURCE_TYPE_BITMAP) { 1589 if (source->type == RESOURCE_TYPE_BITMAP) {
1592 resource->mailbox_holder.mailbox = source->shared_bitmap_id; 1590 resource->mailbox_holder.mailbox = source->shared_bitmap_id;
1593 resource->is_software = true; 1591 resource->is_software = true;
1594 } else if (!source->mailbox.IsValid()) { 1592 } else if (!source->mailbox.IsValid()) {
1595 LazyCreate(source); 1593 LazyCreate(source);
1596 DCHECK(source->gl_id); 1594 DCHECK(source->gl_id);
1597 DCHECK(source->origin == Resource::INTERNAL); 1595 DCHECK(source->origin == Resource::INTERNAL);
1598 GLC(gl,
1599 gl->BindTexture(resource->mailbox_holder.texture_target,
1600 source->gl_id));
1601 if (source->image_id) { 1596 if (source->image_id) {
1602 DCHECK(source->dirty_image); 1597 DCHECK(source->dirty_image);
1603 BindImageForSampling(source); 1598 BindImageForSampling(source);
1604 } 1599 }
1605 // This is a resource allocated by the compositor, we need to produce it. 1600 // This is a resource allocated by the compositor, we need to produce it.
1606 // Don't set a sync point, the caller will do it. 1601 // Don't set a sync point, the caller will do it.
1607 GLC(gl, gl->GenMailboxCHROMIUM(resource->mailbox_holder.mailbox.name)); 1602 GLC(gl, gl->GenMailboxCHROMIUM(resource->mailbox_holder.mailbox.name));
1608 GLC(gl, 1603 GLC(gl, gl->ProduceTextureDirectCHROMIUM(
1609 gl->ProduceTextureCHROMIUM(resource->mailbox_holder.texture_target, 1604 source->gl_id, resource->mailbox_holder.texture_target,
1610 resource->mailbox_holder.mailbox.name)); 1605 resource->mailbox_holder.mailbox.name));
1606
1611 source->mailbox = TextureMailbox(resource->mailbox_holder); 1607 source->mailbox = TextureMailbox(resource->mailbox_holder);
1612 } else { 1608 } else {
1613 DCHECK(source->mailbox.IsTexture()); 1609 DCHECK(source->mailbox.IsTexture());
1614 if (source->image_id && source->dirty_image) { 1610 if (source->image_id && source->dirty_image) {
1615 DCHECK(source->gl_id); 1611 DCHECK(source->gl_id);
1616 DCHECK(source->origin == Resource::INTERNAL); 1612 DCHECK(source->origin == Resource::INTERNAL);
1617 GLC(gl, 1613 GLC(gl,
1618 gl->BindTexture(resource->mailbox_holder.texture_target, 1614 gl->BindTexture(resource->mailbox_holder.texture_target,
1619 source->gl_id)); 1615 source->gl_id));
1620 BindImageForSampling(source); 1616 BindImageForSampling(source);
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after
2171 } 2167 }
2172 2168
2173 class GrContext* ResourceProvider::GrContext(bool worker_context) const { 2169 class GrContext* ResourceProvider::GrContext(bool worker_context) const {
2174 ContextProvider* context_provider = 2170 ContextProvider* context_provider =
2175 worker_context ? output_surface_->worker_context_provider() 2171 worker_context ? output_surface_->worker_context_provider()
2176 : output_surface_->context_provider(); 2172 : output_surface_->context_provider();
2177 return context_provider ? context_provider->GrContext() : NULL; 2173 return context_provider ? context_provider->GrContext() : NULL;
2178 } 2174 }
2179 2175
2180 } // namespace cc 2176 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/resources/resource_provider_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698