| 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 3c30519e9ff9134fc22326279883322d6ff449cb..aa786680bd78e103315c01df0b1ef9751d96427c 100644
|
| --- a/gpu/command_buffer/service/texture_manager.cc
|
| +++ b/gpu/command_buffer/service/texture_manager.cc
|
| @@ -861,9 +861,6 @@ TextureDefinition* TextureManager::Save(TextureInfo* info) {
|
| if (info->IsAttachedToFramebuffer())
|
| return NULL;
|
|
|
| - if (info->IsImmutable())
|
| - return NULL;
|
| -
|
| TextureDefinition::LevelInfos level_infos(info->level_infos_.size());
|
| for (size_t face = 0; face < level_infos.size(); ++face) {
|
| GLenum target = info->target() == GL_TEXTURE_2D ?
|
| @@ -897,13 +894,16 @@ TextureDefinition* TextureManager::Save(TextureInfo* info) {
|
| }
|
|
|
| GLuint old_service_id = info->service_id();
|
| + bool immutable = info->IsImmutable();
|
|
|
| GLuint new_service_id = 0;
|
| glGenTextures(1, &new_service_id);
|
| info->SetServiceId(new_service_id);
|
| + info->SetImmutable(false);
|
|
|
| return new TextureDefinition(info->target(),
|
| old_service_id,
|
| + immutable,
|
| level_infos);
|
| }
|
|
|
| @@ -916,9 +916,6 @@ bool TextureManager::Restore(TextureInfo* info,
|
| if (info->IsAttachedToFramebuffer())
|
| return false;
|
|
|
| - if (info->IsImmutable())
|
| - return false;
|
| -
|
| if (info->target() != definition->target())
|
| return false;
|
|
|
| @@ -951,6 +948,7 @@ bool TextureManager::Restore(TextureInfo* info,
|
| GLuint old_service_id = info->service_id();
|
| glDeleteTextures(1, &old_service_id);
|
| info->SetServiceId(definition->ReleaseServiceId());
|
| + info->SetImmutable(definition->immutable());
|
|
|
| return true;
|
| }
|
|
|