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 dd7d59c5474322fc89ea5fda5158825e06723381..6fde4440147318b27c893d6e1adfae1c8e45d114 100644 |
| --- a/gpu/command_buffer/service/texture_manager.cc |
| +++ b/gpu/command_buffer/service/texture_manager.cc |
| @@ -785,11 +785,15 @@ bool Texture::CanGenerateMipmaps(const FeatureInfo* feature_info) const { |
| return false; |
| } |
| - if (!Texture::ColorRenderable(feature_info, base.internal_format, |
| - immutable_) || |
| - !Texture::TextureFilterable(feature_info, base.internal_format, base.type, |
| - immutable_)) { |
| - return false; |
| + if (!feature_info->validators()->texture_unsized_internal_format.IsValid( |
| + base.internal_format)) { |
| + if (!Texture::ColorRenderable(feature_info, base.internal_format, |
| + immutable_) || |
| + !Texture::TextureFilterable(feature_info, base.internal_format, |
| + base.type, |
| + immutable_)) { |
| + return false; |
| + } |
| } |
| for (size_t ii = 0; ii < face_infos_.size(); ++ii) { |
| @@ -869,7 +873,9 @@ bool Texture::ColorRenderable(const FeatureInfo* feature_info, |
| bool immutable) { |
| if (feature_info->validators()->texture_unsized_internal_format.IsValid( |
| internal_format)) { |
| - return true; |
| + return internal_format == GL_RGBA || internal_format == GL_RGB || |
|
Zhenyao Mo
2016/11/14 19:49:44
Actually let's stick to the != ALPHA != LUMINANCE
qiankun
2016/11/18 03:20:38
Done.
|
| + internal_format == GL_BGRA_EXT || |
| + internal_format == GL_SRGB_ALPHA_EXT; |
| } |
| return SizedFormatAvailable(feature_info, immutable, internal_format) && |
| @@ -1772,16 +1778,8 @@ bool Texture::CanRenderTo(const FeatureInfo* feature_info, GLint level) const { |
| DCHECK(level >= 0 && |
| level < static_cast<GLint>(face_infos_[0].level_infos.size())); |
| GLenum internal_format = face_infos_[0].level_infos[level].internal_format; |
| - bool color_renderable = |
| - ((feature_info->validators()->texture_unsized_internal_format.IsValid( |
| - internal_format) && |
| - internal_format != GL_ALPHA && internal_format != GL_LUMINANCE && |
| - internal_format != GL_LUMINANCE_ALPHA && |
| - internal_format != GL_SRGB_EXT) || |
| - (SizedFormatAvailable(feature_info, immutable_, internal_format) && |
| - feature_info->validators() |
| - ->texture_sized_color_renderable_internal_format.IsValid( |
| - internal_format))); |
| + bool color_renderable = ColorRenderable(feature_info, internal_format, |
| + immutable_); |
| bool depth_renderable = feature_info->validators()-> |
| texture_depth_renderable_internal_format.IsValid(internal_format); |
| bool stencil_renderable = feature_info->validators()-> |