diff options
Diffstat (limited to 'gpu/command_buffer/service')
-rw-r--r-- | gpu/command_buffer/service/texture_definition.cc | 10 | ||||
-rw-r--r-- | gpu/command_buffer/service/texture_definition.h | 15 | ||||
-rw-r--r-- | gpu/command_buffer/service/texture_manager.cc | 10 |
3 files changed, 35 insertions, 0 deletions
diff --git a/gpu/command_buffer/service/texture_definition.cc b/gpu/command_buffer/service/texture_definition.cc index 098584f..aba0dfa 100644 --- a/gpu/command_buffer/service/texture_definition.cc +++ b/gpu/command_buffer/service/texture_definition.cc @@ -29,10 +29,20 @@ TextureDefinition::LevelInfo::LevelInfo(GLenum target, TextureDefinition::TextureDefinition(GLenum target, GLuint service_id, + GLenum min_filter, + GLenum mag_filter, + GLenum wrap_s, + GLenum wrap_t, + GLenum usage, bool immutable, const LevelInfos& level_infos) : target_(target), service_id_(service_id), + min_filter_(min_filter), + mag_filter_(mag_filter), + wrap_s_(wrap_s), + wrap_t_(wrap_t), + usage_(usage), immutable_(immutable), level_infos_(level_infos) { } diff --git a/gpu/command_buffer/service/texture_definition.h b/gpu/command_buffer/service/texture_definition.h index 9ea9357..0a9910b 100644 --- a/gpu/command_buffer/service/texture_definition.h +++ b/gpu/command_buffer/service/texture_definition.h @@ -46,6 +46,11 @@ class GPU_EXPORT TextureDefinition { TextureDefinition(GLenum target, GLuint service_id, + GLenum min_filter, + GLenum mag_filter, + GLenum wrap_s, + GLenum wrap_t, + GLenum usage, bool immutable, const LevelInfos& level_infos); ~TextureDefinition(); @@ -55,6 +60,11 @@ class GPU_EXPORT TextureDefinition { } GLuint ReleaseServiceId(); + GLenum min_filter() const { return min_filter_; } + GLenum mag_filter() const { return mag_filter_; } + GLenum wrap_s() const { return wrap_s_; } + GLenum wrap_t() const { return wrap_t_; } + GLenum usage() const { return usage_; } bool immutable() const { return immutable_; } @@ -65,6 +75,11 @@ class GPU_EXPORT TextureDefinition { private: GLenum target_; GLuint service_id_; + GLenum min_filter_; + GLenum mag_filter_; + GLenum wrap_s_; + GLenum wrap_t_; + GLenum usage_; bool immutable_; std::vector<std::vector<LevelInfo> > level_infos_; diff --git a/gpu/command_buffer/service/texture_manager.cc b/gpu/command_buffer/service/texture_manager.cc index 8573f33..3627582 100644 --- a/gpu/command_buffer/service/texture_manager.cc +++ b/gpu/command_buffer/service/texture_manager.cc @@ -968,6 +968,11 @@ TextureDefinition* TextureManager::Save(TextureInfo* info) { return new TextureDefinition(info->target(), old_service_id, + info->min_filter(), + info->mag_filter(), + info->wrap_s(), + info->wrap_t(), + info->usage(), immutable, level_infos); } @@ -1014,6 +1019,11 @@ bool TextureManager::Restore(TextureInfo* info, glDeleteTextures(1, &old_service_id); info->SetServiceId(definition->ReleaseServiceId()); info->SetImmutable(definition->immutable()); + SetParameter(info, GL_TEXTURE_MIN_FILTER, definition->min_filter()); + SetParameter(info, GL_TEXTURE_MAG_FILTER, definition->mag_filter()); + SetParameter(info, GL_TEXTURE_WRAP_S, definition->wrap_s()); + SetParameter(info, GL_TEXTURE_WRAP_T, definition->wrap_t()); + SetParameter(info, GL_TEXTURE_USAGE_ANGLE, definition->usage()); return true; } |