Index: gpu/command_buffer/service/texture_manager.cc |
diff --git a/gpu/command_buffer/service/texture_manager.cc b/gpu/command_buffer/service/texture_manager.cc |
index abfd3bf54522e137e9951d74a83e59b4ce19874d..939530b55003279e73e12c962f756551648869a5 100644 |
--- a/gpu/command_buffer/service/texture_manager.cc |
+++ b/gpu/command_buffer/service/texture_manager.cc |
@@ -3350,12 +3350,22 @@ void TextureManager::DoTexImage( |
AdjustTexFormat(feature_info_.get(), args.format), args.type, |
args.pixels); |
} else { |
+ Texture* texture = texture_ref->texture(); |
+ GLint base_level = texture->base_level(); |
+ if (feature_info_->workarounds().reset_teximage2d_base_level && |
+ args.target == GL_TEXTURE_2D && base_level != 0) { |
+ glTexParameteri(args.target, GL_TEXTURE_BASE_LEVEL, 0); |
+ } |
glTexImage2D( |
args.target, args.level, |
AdjustTexInternalFormat(feature_info_.get(), args.internal_format), |
args.width, args.height, args.border, |
AdjustTexFormat(feature_info_.get(), args.format), args.type, |
args.pixels); |
+ if (feature_info_->workarounds().reset_teximage2d_base_level && |
+ args.target == GL_TEXTURE_2D && base_level != 0) { |
+ glTexParameteri(args.target, GL_TEXTURE_BASE_LEVEL, base_level); |
+ } |
} |
} |
GLenum error = ERRORSTATE_PEEK_GL_ERROR(error_state, function_name); |