Fix infinite loop when using EGL_DONT_CARE.

Change-Id: I27471691cc0d0d475c089483c560ca5e00f5d64a
Reviewed-on: https://swiftshader-review.googlesource.com/3380
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/libEGL/Config.cpp b/src/OpenGL/libEGL/Config.cpp
index f35a207..81eb1c1 100644
--- a/src/OpenGL/libEGL/Config.cpp
+++ b/src/OpenGL/libEGL/Config.cpp
@@ -307,58 +307,56 @@
 
         while(attribute[0] != EGL_NONE)
         {
-			if(attribute[1] == EGL_DONT_CARE)
+			if(attribute[1] != EGL_DONT_CARE)
 			{
-				continue;
+				switch(attribute[0])
+				{
+				case EGL_BUFFER_SIZE:                match = config->mBufferSize >= attribute[1];                      break;
+				case EGL_ALPHA_SIZE:                 match = config->mAlphaSize >= attribute[1];                       break;
+				case EGL_BLUE_SIZE:                  match = config->mBlueSize >= attribute[1];                        break;
+				case EGL_GREEN_SIZE:                 match = config->mGreenSize >= attribute[1];                       break;
+				case EGL_RED_SIZE:                   match = config->mRedSize >= attribute[1];                         break;
+				case EGL_DEPTH_SIZE:                 match = config->mDepthSize >= attribute[1];                       break;
+				case EGL_STENCIL_SIZE:               match = config->mStencilSize >= attribute[1];                     break;
+				case EGL_CONFIG_CAVEAT:              match = config->mConfigCaveat == attribute[1];                    break;
+				case EGL_CONFIG_ID:                  match = config->mConfigID == attribute[1];                        break;
+				case EGL_LEVEL:                      match = config->mLevel >= attribute[1];                           break;
+				case EGL_NATIVE_RENDERABLE:          match = config->mNativeRenderable == attribute[1];                break;
+				case EGL_NATIVE_VISUAL_ID:           match = config->mNativeVisualID == attribute[1];                  break;
+				case EGL_NATIVE_VISUAL_TYPE:         match = config->mNativeVisualType == attribute[1];                break;
+				case EGL_SAMPLES:                    match = config->mSamples >= attribute[1];                         break;
+				case EGL_SAMPLE_BUFFERS:             match = config->mSampleBuffers >= attribute[1];                   break;
+				case EGL_SURFACE_TYPE:               match = (config->mSurfaceType & attribute[1]) == attribute[1];    break;
+				case EGL_TRANSPARENT_TYPE:           match = config->mTransparentType == attribute[1];                 break;
+				case EGL_TRANSPARENT_BLUE_VALUE:     match = config->mTransparentBlueValue == attribute[1];            break;
+				case EGL_TRANSPARENT_GREEN_VALUE:    match = config->mTransparentGreenValue == attribute[1];           break;
+				case EGL_TRANSPARENT_RED_VALUE:      match = config->mTransparentRedValue == attribute[1];             break;
+				case EGL_BIND_TO_TEXTURE_RGB:        match = config->mBindToTextureRGB == attribute[1];                break;
+				case EGL_BIND_TO_TEXTURE_RGBA:       match = config->mBindToTextureRGBA == attribute[1];               break;
+				case EGL_MIN_SWAP_INTERVAL:          match = config->mMinSwapInterval == attribute[1];                 break;
+				case EGL_MAX_SWAP_INTERVAL:          match = config->mMaxSwapInterval == attribute[1];                 break;
+				case EGL_LUMINANCE_SIZE:             match = config->mLuminanceSize >= attribute[1];                   break;
+				case EGL_ALPHA_MASK_SIZE:            match = config->mAlphaMaskSize >= attribute[1];                   break;
+				case EGL_COLOR_BUFFER_TYPE:          match = config->mColorBufferType == attribute[1];                 break;
+				case EGL_RENDERABLE_TYPE:            match = (config->mRenderableType & attribute[1]) == attribute[1]; break;
+				case EGL_MATCH_NATIVE_PIXMAP:        match = false; UNIMPLEMENTED();                                   break;
+				case EGL_CONFORMANT:                 match = (config->mConformant & attribute[1]) == attribute[1];     break;
+				case EGL_MAX_PBUFFER_WIDTH:          match = config->mMaxPBufferWidth >= attribute[1];                 break;
+				case EGL_MAX_PBUFFER_HEIGHT:         match = config->mMaxPBufferHeight >= attribute[1];                break;
+				case EGL_MAX_PBUFFER_PIXELS:         match = config->mMaxPBufferPixels >= attribute[1];                break;
+				case EGL_RECORDABLE_ANDROID:         match = true; /* UNIMPLEMENTED(); EGL_ANDROID_recordable */       break;
+				case EGL_FRAMEBUFFER_TARGET_ANDROID: match = true; /* UNIMPLEMENTED(); EGL_ANDROID_framebuffer_target */ break;
+				default:
+					UNIMPLEMENTED();
+					match = false;
+				}
+
+				if(!match)
+				{
+					break;
+				}
 			}
 
-            switch(attribute[0])
-            {
-            case EGL_BUFFER_SIZE:                match = config->mBufferSize >= attribute[1];                      break;
-            case EGL_ALPHA_SIZE:                 match = config->mAlphaSize >= attribute[1];                       break;
-            case EGL_BLUE_SIZE:                  match = config->mBlueSize >= attribute[1];                        break;
-            case EGL_GREEN_SIZE:                 match = config->mGreenSize >= attribute[1];                       break;
-            case EGL_RED_SIZE:                   match = config->mRedSize >= attribute[1];                         break;
-            case EGL_DEPTH_SIZE:                 match = config->mDepthSize >= attribute[1];                       break;
-            case EGL_STENCIL_SIZE:               match = config->mStencilSize >= attribute[1];                     break;
-            case EGL_CONFIG_CAVEAT:              match = config->mConfigCaveat == attribute[1];                    break;
-            case EGL_CONFIG_ID:                  match = config->mConfigID == attribute[1];                        break;
-            case EGL_LEVEL:                      match = config->mLevel >= attribute[1];                           break;
-            case EGL_NATIVE_RENDERABLE:          match = config->mNativeRenderable == attribute[1];                break;
-            case EGL_NATIVE_VISUAL_ID:           match = config->mNativeVisualID == attribute[1];                  break;
-            case EGL_NATIVE_VISUAL_TYPE:         match = config->mNativeVisualType == attribute[1];                break;
-            case EGL_SAMPLES:                    match = config->mSamples >= attribute[1];                         break;
-            case EGL_SAMPLE_BUFFERS:             match = config->mSampleBuffers >= attribute[1];                   break;
-            case EGL_SURFACE_TYPE:               match = (config->mSurfaceType & attribute[1]) == attribute[1];    break;
-            case EGL_TRANSPARENT_TYPE:           match = config->mTransparentType == attribute[1];                 break;
-            case EGL_TRANSPARENT_BLUE_VALUE:     match = config->mTransparentBlueValue == attribute[1];            break;
-            case EGL_TRANSPARENT_GREEN_VALUE:    match = config->mTransparentGreenValue == attribute[1];           break;
-            case EGL_TRANSPARENT_RED_VALUE:      match = config->mTransparentRedValue == attribute[1];             break;
-            case EGL_BIND_TO_TEXTURE_RGB:        match = config->mBindToTextureRGB == attribute[1];                break;
-            case EGL_BIND_TO_TEXTURE_RGBA:       match = config->mBindToTextureRGBA == attribute[1];               break;
-            case EGL_MIN_SWAP_INTERVAL:          match = config->mMinSwapInterval == attribute[1];                 break;
-            case EGL_MAX_SWAP_INTERVAL:          match = config->mMaxSwapInterval == attribute[1];                 break;
-            case EGL_LUMINANCE_SIZE:             match = config->mLuminanceSize >= attribute[1];                   break;
-            case EGL_ALPHA_MASK_SIZE:            match = config->mAlphaMaskSize >= attribute[1];                   break;
-            case EGL_COLOR_BUFFER_TYPE:          match = config->mColorBufferType == attribute[1];                 break;
-            case EGL_RENDERABLE_TYPE:            match = (config->mRenderableType & attribute[1]) == attribute[1]; break;
-            case EGL_MATCH_NATIVE_PIXMAP:        match = false; UNIMPLEMENTED();                                   break;
-            case EGL_CONFORMANT:                 match = (config->mConformant & attribute[1]) == attribute[1];     break;
-            case EGL_MAX_PBUFFER_WIDTH:          match = config->mMaxPBufferWidth >= attribute[1];                 break;
-            case EGL_MAX_PBUFFER_HEIGHT:         match = config->mMaxPBufferHeight >= attribute[1];                break;
-            case EGL_MAX_PBUFFER_PIXELS:         match = config->mMaxPBufferPixels >= attribute[1];                break;
-            case EGL_RECORDABLE_ANDROID:         match = true; /* UNIMPLEMENTED(); EGL_ANDROID_recordable */       break;
-            case EGL_FRAMEBUFFER_TARGET_ANDROID: match = true; /* UNIMPLEMENTED(); EGL_ANDROID_framebuffer_target */ break;
-			default:
-				UNIMPLEMENTED();
-				match = false;
-            }
-
-            if(!match)
-            {
-                break;
-            }
-
             attribute += 2;
         }