Added a test that checks the error behavior of ConsumerBase::abandon

We check that calling eglSwapBuffers() on an abandonned BufferQueue
return EGL_BAD_ALLOC -- this is to ensure consistancy between
drivers.

Change-Id: If84b082bc6bdea21673b16e5e717658c78edf405
This commit is contained in:
Mathias Agopian 2013-02-22 19:34:49 -08:00
parent f5c7cb316c
commit 871d6f2dfd

View File

@ -61,6 +61,7 @@ protected:
&myConfig, 1, &numConfigs));
ASSERT_EQ(EGL_SUCCESS, eglGetError());
mEglConfig = myConfig;
EGLint pbufferAttribs[] = {
EGL_WIDTH, 16,
EGL_HEIGHT, 16,
@ -95,7 +96,7 @@ protected:
virtual EGLint const* getConfigAttribs() {
static EGLint sDefaultConfigAttribs[] = {
EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
EGL_SURFACE_TYPE, EGL_PBUFFER_BIT | EGL_WINDOW_BIT,
EGL_NONE
};
@ -109,6 +110,7 @@ protected:
EGLDisplay mEglDisplay;
EGLSurface mEglSurface;
EGLContext mEglContext;
EGLConfig mEglConfig;
};
TEST_F(SurfaceTextureClientTest, GetISurfaceTextureIsNotNull) {
@ -169,6 +171,34 @@ TEST_F(SurfaceTextureClientTest, EglCreateWindowSurfaceSucceeds) {
eglTerminate(dpy);
}
TEST_F(SurfaceTextureClientTest, EglSwapBuffersAbandonErrorIsEglBadSurface) {
EGLSurface eglSurface = eglCreateWindowSurface(mEglDisplay, mEglConfig, mANW.get(), NULL);
EXPECT_NE(EGL_NO_SURFACE, eglSurface);
EXPECT_EQ(EGL_SUCCESS, eglGetError());
EGLBoolean success = eglMakeCurrent(mEglDisplay, eglSurface, eglSurface, mEglContext);
EXPECT_EQ(EGL_TRUE, success);
glClear(GL_COLOR_BUFFER_BIT);
success = eglSwapBuffers(mEglDisplay, eglSurface);
EXPECT_EQ(EGL_TRUE, success);
mST->abandon();
glClear(GL_COLOR_BUFFER_BIT);
success = eglSwapBuffers(mEglDisplay, eglSurface);
EXPECT_EQ(EGL_FALSE, success);
EXPECT_EQ(EGL_BAD_SURFACE, eglGetError());
success = eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext);
ASSERT_EQ(EGL_TRUE, success);
if (eglSurface != EGL_NO_SURFACE) {
eglDestroySurface(mEglDisplay, eglSurface);
}
}
TEST_F(SurfaceTextureClientTest, BufferGeometryInvalidSizesFail) {
EXPECT_GT(OK, native_window_set_buffers_geometry(mANW.get(), -1, 0, 0));
EXPECT_GT(OK, native_window_set_buffers_geometry(mANW.get(), 0, -1, 0));