summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/service
diff options
context:
space:
mode:
Diffstat (limited to 'gpu/command_buffer/service')
-rw-r--r--gpu/command_buffer/service/texture_definition.cc10
-rw-r--r--gpu/command_buffer/service/texture_definition.h15
-rw-r--r--gpu/command_buffer/service/texture_manager.cc10
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;
}