Chromium Code Reviews| 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 1f3fbc8bdd137eebf9f802530b2923197d1ae762..d528492d87edffe4e70e9cf05b3c1d9aee4acbc9 100644 |
| --- a/gpu/command_buffer/service/texture_manager.cc |
| +++ b/gpu/command_buffer/service/texture_manager.cc |
| @@ -29,14 +29,21 @@ struct TextureSignature { |
| GLint level_; |
| GLenum min_filter_; |
| GLenum mag_filter_; |
| + GLenum wrap_r_; |
| GLenum wrap_s_; |
| GLenum wrap_t_; |
| GLenum usage_; |
| GLenum internal_format_; |
| + GLenum compare_func_; |
| + GLenum compare_mode_; |
| GLsizei width_; |
| GLsizei height_; |
| GLsizei depth_; |
| + GLfloat max_lod_; |
| + GLfloat min_lod_; |
| + GLint base_level_; |
| GLint border_; |
| + GLint max_level_; |
| GLenum format_; |
| GLenum type_; |
| bool has_image_; |
| @@ -52,14 +59,21 @@ struct TextureSignature { |
| GLint level, |
| GLenum min_filter, |
| GLenum mag_filter, |
| + GLenum wrap_r, |
| GLenum wrap_s, |
| GLenum wrap_t, |
| GLenum usage, |
| GLenum internal_format, |
| + GLenum compare_func, |
| + GLenum compare_mode, |
| GLsizei width, |
| GLsizei height, |
| GLsizei depth, |
| + GLfloat max_lod, |
| + GLfloat min_lod, |
| + GLint base_level, |
| GLint border, |
| + GLint max_level, |
| GLenum format, |
| GLenum type, |
| bool has_image, |
| @@ -71,14 +85,21 @@ struct TextureSignature { |
| level_ = level; |
| min_filter_ = min_filter; |
| mag_filter_ = mag_filter; |
| + wrap_r_ = wrap_r; |
| wrap_s_ = wrap_s; |
| wrap_t_ = wrap_t; |
| usage_ = usage; |
| internal_format_ = internal_format; |
| + compare_func_ = compare_func; |
| + compare_mode_ = compare_mode; |
| width_ = width; |
| height_ = height; |
| depth_ = depth; |
| + max_lod_ = max_lod; |
| + min_lod_ = min_lod; |
| + base_level_ = base_level; |
| border_ = border; |
| + max_level_ = max_level; |
| format_ = format; |
| type_ = type; |
| has_image_ = has_image; |
| @@ -133,10 +154,17 @@ Texture::Texture(GLuint service_id) |
| target_(0), |
| min_filter_(GL_NEAREST_MIPMAP_LINEAR), |
| mag_filter_(GL_LINEAR), |
| + wrap_r_(GL_REPEAT), |
| wrap_s_(GL_REPEAT), |
| wrap_t_(GL_REPEAT), |
| usage_(GL_NONE), |
| pool_(GL_TEXTURE_POOL_UNMANAGED_CHROMIUM), |
| + compare_func_(GL_LEQUAL), |
| + compare_mode_(GL_NONE), |
| + max_lod_(1000.0f), |
| + min_lod_(-1000.0f), |
| + base_level_(0), |
| + max_level_(1000), |
| max_level_set_(-1), |
| texture_complete_(false), |
| texture_mips_dirty_(false), |
| @@ -305,14 +333,21 @@ void Texture::AddToSignature( |
| level, |
| min_filter_, |
| mag_filter_, |
| + wrap_r_, |
| wrap_s_, |
| wrap_t_, |
| usage_, |
| info.internal_format, |
| + compare_func_, |
| + compare_mode_, |
| info.width, |
| info.height, |
| info.depth, |
| + max_lod_, |
| + min_lod_, |
| + base_level_, |
| info.border, |
| + max_level_, |
| info.format, |
| info.type, |
| info.image.get() != NULL, |
| @@ -745,6 +780,12 @@ GLenum Texture::SetParameteri( |
| pool_ = param; |
| GetMemTracker()->TrackMemAlloc(estimated_size()); |
| break; |
| + case GL_TEXTURE_WRAP_R: |
| + if (!feature_info->validators()->texture_wrap_mode.IsValid(param)) { |
| + return GL_INVALID_ENUM; |
| + } |
| + wrap_r_ = param; |
| + break; |
| case GL_TEXTURE_WRAP_S: |
| if (!feature_info->validators()->texture_wrap_mode.IsValid(param)) { |
| return GL_INVALID_ENUM; |
| @@ -757,6 +798,24 @@ GLenum Texture::SetParameteri( |
| } |
| wrap_t_ = param; |
| break; |
| + case GL_TEXTURE_COMPARE_FUNC: |
| + if (!feature_info->validators()->texture_compare_func.IsValid(param)) { |
| + return GL_INVALID_ENUM; |
| + } |
| + compare_func_ = param; |
| + break; |
| + case GL_TEXTURE_COMPARE_MODE: |
| + if (!feature_info->validators()->texture_compare_mode.IsValid(param)) { |
| + return GL_INVALID_ENUM; |
| + } |
| + compare_mode_ = param; |
| + break; |
| + case GL_TEXTURE_BASE_LEVEL: |
|
legend
2015/05/11 07:17:14
I have not found the legal range of GL_TEXTURE_BAS
piman
2015/05/11 21:39:34
In https://www.khronos.org/registry/gles/specs/3.0
legend
2015/05/12 02:34:16
Done.
|
| + base_level_ = param; |
| + break; |
| + case GL_TEXTURE_MAX_LEVEL: |
| + max_level_ = param; |
| + break; |
| case GL_TEXTURE_MAX_ANISOTROPY_EXT: |
| if (param < 1) { |
| return GL_INVALID_VALUE; |
| @@ -791,6 +850,12 @@ GLenum Texture::SetParameterf( |
| GLint iparam = static_cast<GLint>(param); |
| return SetParameteri(feature_info, pname, iparam); |
| } |
| + case GL_TEXTURE_MIN_LOD: |
| + min_lod_ = param; |
| + break; |
| + case GL_TEXTURE_MAX_LOD: |
| + max_lod_ = param; |
| + break; |
| case GL_TEXTURE_MAX_ANISOTROPY_EXT: |
| if (param < 1.f) { |
| return GL_INVALID_VALUE; |