| Index: gpu/gles2_conform_support/egl/config.cc
 | 
| diff --git a/gpu/gles2_conform_support/egl/config.cc b/gpu/gles2_conform_support/egl/config.cc
 | 
| index d6ce3072c982e5f01c9194d6f1dcc9f21622e042..53bd440d7cb31bca7b3e61c78037dd7659b53e2d 100644
 | 
| --- a/gpu/gles2_conform_support/egl/config.cc
 | 
| +++ b/gpu/gles2_conform_support/egl/config.cc
 | 
| @@ -3,10 +3,11 @@
 | 
|  // found in the LICENSE file.
 | 
|  
 | 
|  #include "gpu/gles2_conform_support/egl/config.h"
 | 
| +#include "base/logging.h"
 | 
|  
 | 
|  namespace egl {
 | 
|  
 | 
| -Config::Config()
 | 
| +Config::Config(EGLint surface_type)
 | 
|      : buffer_size_(0),
 | 
|        red_size_(0),
 | 
|        green_size_(0),
 | 
| @@ -34,16 +35,37 @@ Config::Config()
 | 
|        sample_buffers_(0),
 | 
|        samples_(0),
 | 
|        stencil_size_(0),
 | 
| -      surface_type_(EGL_WINDOW_BIT),
 | 
| +      surface_type_(surface_type),
 | 
|        transparent_type_(EGL_NONE),
 | 
|        transparent_red_value_(EGL_DONT_CARE),
 | 
|        transparent_green_value_(EGL_DONT_CARE),
 | 
|        transparent_blue_value_(EGL_DONT_CARE) {
 | 
| +  DCHECK(surface_type == EGL_WINDOW_BIT || surface_type == EGL_PBUFFER_BIT);
 | 
|  }
 | 
|  
 | 
|  Config::~Config() {
 | 
|  }
 | 
|  
 | 
| +bool Config::Matches(const EGLint* attrib_list) const {
 | 
| +  DCHECK(ValidateAttributeList(attrib_list));
 | 
| +  if (attrib_list) {
 | 
| +    for (int i = 0; attrib_list[i] != EGL_NONE; i += 2) {
 | 
| +      switch (attrib_list[i]) {
 | 
| +        case EGL_SURFACE_TYPE: {
 | 
| +          EGLint requested_surface_type = attrib_list[i + 1];
 | 
| +          if (requested_surface_type != EGL_DONT_CARE &&
 | 
| +              (requested_surface_type & surface_type_) !=
 | 
| +                  requested_surface_type)
 | 
| +            return false;
 | 
| +        }
 | 
| +        default:
 | 
| +          break;
 | 
| +      }
 | 
| +    }
 | 
| +  }
 | 
| +  return true;
 | 
| +}
 | 
| +
 | 
|  bool Config::GetAttrib(EGLint attribute, EGLint* value) const {
 | 
|    // TODO(alokp): Find out how to get correct values.
 | 
|    switch (attribute) {
 | 
| @@ -149,4 +171,52 @@ bool Config::GetAttrib(EGLint attribute, EGLint* value) const {
 | 
|    return true;
 | 
|  }
 | 
|  
 | 
| +bool Config::ValidateAttributeList(const EGLint* attrib_list) {
 | 
| +  if (attrib_list) {
 | 
| +    for (int i = 0; attrib_list[i] != EGL_NONE; i += 2) {
 | 
| +      switch (attrib_list[i]) {
 | 
| +        case EGL_ALPHA_MASK_SIZE:
 | 
| +        case EGL_ALPHA_SIZE:
 | 
| +        case EGL_BIND_TO_TEXTURE_RGB:
 | 
| +        case EGL_BIND_TO_TEXTURE_RGBA:
 | 
| +        case EGL_BLUE_SIZE:
 | 
| +        case EGL_BUFFER_SIZE:
 | 
| +        case EGL_COLOR_BUFFER_TYPE:
 | 
| +        case EGL_CONFIG_CAVEAT:
 | 
| +        case EGL_CONFIG_ID:
 | 
| +        case EGL_CONFORMANT:
 | 
| +        case EGL_DEPTH_SIZE:
 | 
| +        case EGL_GREEN_SIZE:
 | 
| +        case EGL_LEVEL:
 | 
| +        case EGL_LUMINANCE_SIZE:
 | 
| +        case EGL_MATCH_NATIVE_PIXMAP:
 | 
| +        case EGL_NATIVE_RENDERABLE:
 | 
| +        case EGL_MAX_SWAP_INTERVAL:
 | 
| +        case EGL_MIN_SWAP_INTERVAL:
 | 
| +        case EGL_RED_SIZE:
 | 
| +        case EGL_SAMPLE_BUFFERS:
 | 
| +        case EGL_SAMPLES:
 | 
| +        case EGL_STENCIL_SIZE:
 | 
| +        case EGL_RENDERABLE_TYPE:
 | 
| +        case EGL_SURFACE_TYPE:
 | 
| +        case EGL_MULTISAMPLE_RESOLVE_BOX_BIT:
 | 
| +        case EGL_PBUFFER_BIT:
 | 
| +        case EGL_PIXMAP_BIT:
 | 
| +        case EGL_SWAP_BEHAVIOR_PRESERVED_BIT:
 | 
| +        case EGL_VG_ALPHA_FORMAT_PRE_BIT:
 | 
| +        case EGL_VG_COLORSPACE_LINEAR_BIT:
 | 
| +        case EGL_WINDOW_BIT:
 | 
| +        case EGL_TRANSPARENT_TYPE:
 | 
| +        case EGL_TRANSPARENT_RED_VALUE:
 | 
| +        case EGL_TRANSPARENT_GREEN_VALUE:
 | 
| +        case EGL_TRANSPARENT_BLUE_VALUE:
 | 
| +          break;
 | 
| +        default:
 | 
| +          return false;
 | 
| +      }
 | 
| +    }
 | 
| +  }
 | 
| +  return true;
 | 
| +}
 | 
| +
 | 
|  }  // namespace egl
 | 
| 
 |