Commit ec303925 by Sean Risser

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: 's avatarAlexis Hétu <sugoi@google.com> Tested-by: 's avatarSean Risser <srisser@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
parent ec63fbe9
...@@ -932,13 +932,6 @@ EGLBoolean MakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLCont ...@@ -932,13 +932,6 @@ EGLBoolean MakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLCont
return EGL_FALSE; 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)) if((draw != EGL_NO_SURFACE) ^ (read != EGL_NO_SURFACE))
{ {
return error(EGL_BAD_MATCH, EGL_FALSE); return error(EGL_BAD_MATCH, EGL_FALSE);
......
...@@ -2612,8 +2612,8 @@ TEST_F(IOSurfaceClientBufferTest, NegativeValidationBadAttributes) ...@@ -2612,8 +2612,8 @@ TEST_F(IOSurfaceClientBufferTest, NegativeValidationBadAttributes)
Uninitialize(); Uninitialize();
} }
// Test IOSurface pbuffers cannot be made current // Test IOSurface pbuffers can be made current
TEST_F(IOSurfaceClientBufferTest, MakeCurrentDisallowed) TEST_F(IOSurfaceClientBufferTest, MakeCurrentAllowed)
{ {
Initialize(3, false); Initialize(3, false);
...@@ -2623,8 +2623,8 @@ TEST_F(IOSurfaceClientBufferTest, MakeCurrentDisallowed) ...@@ -2623,8 +2623,8 @@ TEST_F(IOSurfaceClientBufferTest, MakeCurrentDisallowed)
EGLSurface pbuffer = createIOSurfacePbuffer(clientBufferWrapper.getClientBuffer(), 10, 10, 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE); EGLSurface pbuffer = createIOSurfacePbuffer(clientBufferWrapper.getClientBuffer(), 10, 10, 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE);
EGLBoolean result = eglMakeCurrent(getDisplay(), pbuffer, pbuffer, getContext()); EGLBoolean result = eglMakeCurrent(getDisplay(), pbuffer, pbuffer, getContext());
EXPECT_EQ((EGLBoolean)EGL_FALSE, result); EXPECT_EQ((EGLBoolean)EGL_TRUE, result);
EXPECT_EQ(EGL_BAD_SURFACE, eglGetError()); EXPECT_NO_EGL_ERROR();
} }
Uninitialize(); Uninitialize();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment