Allow the default framebuffer to be an IOSurface

We currently don't allow eglMakeCurrent to take an external buffer,
which prevents IOSurfaces from being used as the default framebuffer.
However, all the support for rendering to an IOSurface is in place
already. It should be fine to remove the check against external buffers
in eglMakeCurrent.

Bug chromium:987289

Change-Id: I6342e553085f05914db0193500ea018961256a89
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/34388
Presubmit-Ready: Sean Risser <srisser@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Tested-by: Sean Risser <srisser@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/OpenGL/libEGL/libEGL.cpp b/src/OpenGL/libEGL/libEGL.cpp
index 51f5309..70df27f 100644
--- a/src/OpenGL/libEGL/libEGL.cpp
+++ b/src/OpenGL/libEGL/libEGL.cpp
@@ -932,13 +932,6 @@
 		return EGL_FALSE;
 	}
 
-	if((draw != EGL_NO_SURFACE && drawSurface->hasClientBuffer()) ||
-	   (read != EGL_NO_SURFACE && readSurface->hasClientBuffer()))
-	{
-		// Make current is not supported on IOSurface pbuffers.
-		return error(EGL_BAD_SURFACE, EGL_FALSE);
-	}
-
 	if((draw != EGL_NO_SURFACE) ^ (read != EGL_NO_SURFACE))
 	{
 		return error(EGL_BAD_MATCH, EGL_FALSE);
diff --git a/tests/GLESUnitTests/unittests.cpp b/tests/GLESUnitTests/unittests.cpp
index db4de08..7951e27 100644
--- a/tests/GLESUnitTests/unittests.cpp
+++ b/tests/GLESUnitTests/unittests.cpp
@@ -2612,8 +2612,8 @@
 	Uninitialize();
 }
 
-// Test IOSurface pbuffers cannot be made current
-TEST_F(IOSurfaceClientBufferTest, MakeCurrentDisallowed)
+// Test IOSurface pbuffers can be made current
+TEST_F(IOSurfaceClientBufferTest, MakeCurrentAllowed)
 {
 	Initialize(3, false);
 
@@ -2623,8 +2623,8 @@
 		EGLSurface pbuffer = createIOSurfacePbuffer(clientBufferWrapper.getClientBuffer(), 10, 10, 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE);
 
 		EGLBoolean result = eglMakeCurrent(getDisplay(), pbuffer, pbuffer, getContext());
-		EXPECT_EQ((EGLBoolean)EGL_FALSE, result);
-		EXPECT_EQ(EGL_BAD_SURFACE, eglGetError());
+		EXPECT_EQ((EGLBoolean)EGL_TRUE, result);
+		EXPECT_NO_EGL_ERROR();
 	}
 
 	Uninitialize();