Disable OpenGL ES 3.0 in Chromium builds.

Change-Id: I6077e9f439dc20217e9e7fb6c6f98f969e7d0b51
Reviewed-on: https://swiftshader-review.googlesource.com/8790
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/BUILD.gn b/BUILD.gn
index d646afe..57cbf33 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -23,6 +23,7 @@
       "/EHsc",
       "/nologo",
       "/Gd",  # Default calling convention
+      "/DSTRICT_CONFORMANCE", # Disables OpenGL ES 3.0
     ]
 
     if (is_debug) {
@@ -38,6 +39,7 @@
       "-fno-operator-names",
       "-D__STDC_CONSTANT_MACROS",
       "-D__STDC_LIMIT_MACROS",
+      "-DSTRICT_CONFORMANCE", # Disables OpenGL ES 3.0
     ]
 
     if (is_debug) {
diff --git a/src/OpenGL/libEGL/Config.cpp b/src/OpenGL/libEGL/Config.cpp
index 80c36c8..43ca44d 100644
--- a/src/OpenGL/libEGL/Config.cpp
+++ b/src/OpenGL/libEGL/Config.cpp
@@ -34,10 +34,13 @@
 
 namespace egl
 {
-#ifdef __ANDROID__
-const bool android = true;
+// OpenGL ES 3.0 support is not conformant yet, but can be used for testing purposes. Expose it as conformant configs
+// if strict conformance advertisement isn't required. If strict conformance advertisement is required, expose them
+// as non-conformant configs, but only when EGL_CONFIG_CAVEAT is EGL_NON_CONFORMANT_CONFIG or EGL_DONT_CARE.
+#if defined(__ANDROID__) || defined(STRICT_CONFORMANCE)
+const bool strictConformance = true;
 #else
-const bool android = false;
+const bool strictConformance = false;
 #endif
 
 Config::Config(sw::Format displayFormat, EGLint minInterval, EGLint maxInterval, sw::Format renderTargetFormat, sw::Format depthStencilFormat, EGLint multiSample, bool conformant)
@@ -124,9 +127,9 @@
 	mBufferSize = mRedSize + mGreenSize + mBlueSize + mLuminanceSize + mAlphaSize;
 	mAlphaMaskSize = 0;
 	mColorBufferType = EGL_RGB_BUFFER;
-	mConfigCaveat = (conformant || !android) ? EGL_NONE : EGL_NON_CONFORMANT_CONFIG;
+	mConfigCaveat = (conformant || !strictConformance) ? EGL_NONE : EGL_NON_CONFORMANT_CONFIG;
 	mConfigID = 0;
-	mConformant = EGL_OPENGL_ES_BIT | EGL_OPENGL_ES2_BIT | (android ? 0 : EGL_OPENGL_ES3_BIT);   // Do not advertize OpenGL ES 3.0 conformance on Android
+	mConformant = EGL_OPENGL_ES_BIT | EGL_OPENGL_ES2_BIT | (strictConformance ? 0 : EGL_OPENGL_ES3_BIT);
 
 	switch(depthStencilFormat)
 	{
@@ -183,7 +186,7 @@
 	mMinSwapInterval = minInterval;
 	mNativeRenderable = EGL_FALSE;
 	mNativeVisualType = 0;
-	mRenderableType = EGL_OPENGL_ES_BIT | EGL_OPENGL_ES2_BIT | ((conformant && android) ? 0 : EGL_OPENGL_ES3_BIT);   // Only advertise non-conformant configs as OpenGL ES 3.0 renderable on Android
+	mRenderableType = EGL_OPENGL_ES_BIT | EGL_OPENGL_ES2_BIT | ((conformant && strictConformance) ? 0 : EGL_OPENGL_ES3_BIT);
 	mSampleBuffers = (multiSample > 0) ? 1 : 0;
 	mSamples = multiSample;
 	mSurfaceType = EGL_PBUFFER_BIT | EGL_WINDOW_BIT | EGL_SWAP_BEHAVIOR_PRESERVED_BIT;
@@ -336,10 +339,11 @@
 	Config conformantConfig(displayFormat, minSwapInterval, maxSwapInterval, renderTargetFormat, depthStencilFormat, multiSample, true);
 	mSet.insert(conformantConfig);
 
-	#ifdef __ANDROID__
+	if(strictConformance)   // When strict conformance is required, add non-conformant configs explicitly as such.
+	{
 		Config nonConformantConfig(displayFormat, minSwapInterval, maxSwapInterval, renderTargetFormat, depthStencilFormat, multiSample, false);
 		mSet.insert(nonConformantConfig);
-	#endif
+	}
 }
 
 size_t ConfigSet::size() const