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

Unified Diff: cc/resources/resource_provider.cc

Issue 83883002: cc: Allow TEXTURE_RECTANGLE_ARB to be used for tile textures. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: cc/resources/resource_provider.cc
diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc
index c0d56ef9f70775a8fec6db3f1c12eb8322f653f7..6696840c686c55e7acbb005d137dc42d71dd3dae 100644
--- a/cc/resources/resource_provider.cc
+++ b/cc/resources/resource_provider.cc
@@ -339,8 +339,12 @@ ResourceProvider::ResourceId ResourceProvider::CreateResource(
DCHECK(!size.IsEmpty());
switch (default_resource_type_) {
case GLTexture:
- return CreateGLTexture(
- size, GL_TEXTURE_POOL_UNMANAGED_CHROMIUM, wrap_mode, hint, format);
+ return CreateGLTexture(size,
+ GL_TEXTURE_2D,
+ GL_TEXTURE_POOL_UNMANAGED_CHROMIUM,
+ wrap_mode,
+ hint,
+ format);
case Bitmap:
DCHECK_EQ(RGBA_8888, format);
return CreateBitmap(size, wrap_mode);
@@ -354,14 +358,19 @@ ResourceProvider::ResourceId ResourceProvider::CreateResource(
ResourceProvider::ResourceId ResourceProvider::CreateManagedResource(
gfx::Size size,
+ GLenum target,
GLint wrap_mode,
TextureUsageHint hint,
ResourceFormat format) {
DCHECK(!size.IsEmpty());
switch (default_resource_type_) {
case GLTexture:
- return CreateGLTexture(
- size, GL_TEXTURE_POOL_MANAGED_CHROMIUM, wrap_mode, hint, format);
+ return CreateGLTexture(size,
+ target,
+ GL_TEXTURE_POOL_MANAGED_CHROMIUM,
+ wrap_mode,
+ hint,
+ format);
case Bitmap:
DCHECK_EQ(RGBA_8888, format);
return CreateBitmap(size, wrap_mode);
@@ -375,6 +384,7 @@ ResourceProvider::ResourceId ResourceProvider::CreateManagedResource(
ResourceProvider::ResourceId ResourceProvider::CreateGLTexture(
gfx::Size size,
+ GLenum target,
GLenum texture_pool,
GLint wrap_mode,
TextureUsageHint hint,
@@ -385,7 +395,7 @@ ResourceProvider::ResourceId ResourceProvider::CreateGLTexture(
ResourceId id = next_id_++;
Resource resource(
- 0, size, GL_TEXTURE_2D, GL_LINEAR, texture_pool, wrap_mode, hint, format);
+ 0, size, target, GL_LINEAR, texture_pool, wrap_mode, hint, format);
resource.allocated = false;
resources_[id] = resource;
return id;
@@ -789,24 +799,20 @@ ResourceProvider::ScopedReadLockGL::~ScopedReadLockGL() {
ResourceProvider::ScopedSamplerGL::ScopedSamplerGL(
ResourceProvider* resource_provider,
ResourceProvider::ResourceId resource_id,
- GLenum target,
GLenum filter)
: ScopedReadLockGL(resource_provider, resource_id),
- target_(target),
- unit_(GL_TEXTURE0) {
- resource_provider->BindForSampling(resource_id, target, unit_, filter);
+ unit_(GL_TEXTURE0),
+ target_(resource_provider->BindForSampling(resource_id, unit_, filter)) {
}
ResourceProvider::ScopedSamplerGL::ScopedSamplerGL(
ResourceProvider* resource_provider,
ResourceProvider::ResourceId resource_id,
- GLenum target,
GLenum unit,
GLenum filter)
: ScopedReadLockGL(resource_provider, resource_id),
- target_(target),
- unit_(unit) {
- resource_provider->BindForSampling(resource_id, target, unit, filter);
+ unit_(unit),
+ target_(resource_provider->BindForSampling(resource_id, unit_, filter)) {
}
ResourceProvider::ScopedSamplerGL::~ScopedSamplerGL() {
@@ -1487,10 +1493,10 @@ void ResourceProvider::UnmapPixelBuffer(ResourceId id) {
}
}
-void ResourceProvider::BindForSampling(ResourceProvider::ResourceId resource_id,
- GLenum target,
- GLenum unit,
- GLenum filter) {
+GLenum ResourceProvider::BindForSampling(
+ ResourceProvider::ResourceId resource_id,
+ GLenum unit,
+ GLenum filter) {
DCHECK(thread_checker_.CalledOnValidThread());
WebGraphicsContext3D* context3d = Context3d();
ResourceMap::iterator it = resources_.find(resource_id);
@@ -1500,9 +1506,9 @@ void ResourceProvider::BindForSampling(ResourceProvider::ResourceId resource_id,
DCHECK(!resource->locked_for_write || resource->set_pixels_completion_forced);
ScopedSetActiveTexture scoped_active_tex(context3d, unit);
+ GLenum target = resource->target;
GLC(context3d, context3d->bindTexture(target, resource->gl_id));
if (filter != resource->filter) {
- DCHECK_EQ(resource->target, target);
GLC(context3d,
context3d->texParameteri(target, GL_TEXTURE_MIN_FILTER, filter));
GLC(context3d,
@@ -1518,6 +1524,8 @@ void ResourceProvider::BindForSampling(ResourceProvider::ResourceId resource_id,
resource->bound_image_id = resource->image_id;
resource->dirty_image = false;
}
+
+ return target;
}
void ResourceProvider::BeginSetPixels(ResourceId id) {

Powered by Google App Engine
This is Rietveld 408576698