New test
Added a test to confirm that the transform hint is being respected. Bug: 7162482 Change-Id: I892fe962f8cf2759ff951b4f5065b9ac2732c3d1
This commit is contained in:
parent
6905205c8d
commit
71f683ac8d
@ -1414,6 +1414,59 @@ protected:
|
||||
EGLContext mProducerEglContext;
|
||||
};
|
||||
|
||||
TEST_F(SurfaceTextureGLToGLTest, TransformHintGetsRespected) {
|
||||
const uint32_t texWidth = 32;
|
||||
const uint32_t texHeight = 64;
|
||||
|
||||
mST->setDefaultBufferSize(texWidth, texHeight);
|
||||
mST->setTransformHint(NATIVE_WINDOW_TRANSFORM_ROT_90);
|
||||
|
||||
// This test requires 3 buffers to avoid deadlock because we're
|
||||
// both producer and consumer, and only using one thread.
|
||||
mST->setDefaultMaxBufferCount(3);
|
||||
|
||||
// Do the producer side of things
|
||||
EXPECT_TRUE(eglMakeCurrent(mEglDisplay, mProducerEglSurface,
|
||||
mProducerEglSurface, mProducerEglContext));
|
||||
ASSERT_EQ(EGL_SUCCESS, eglGetError());
|
||||
|
||||
// Start a buffer with our chosen size and transform hint moving
|
||||
// through the system.
|
||||
glClear(GL_COLOR_BUFFER_BIT); // give the driver something to do
|
||||
eglSwapBuffers(mEglDisplay, mProducerEglSurface);
|
||||
mST->updateTexImage(); // consume it
|
||||
// Swap again.
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
eglSwapBuffers(mEglDisplay, mProducerEglSurface);
|
||||
mST->updateTexImage();
|
||||
|
||||
// The current buffer should either show the effects of the transform
|
||||
// hint (in the form of an inverse transform), or show that the
|
||||
// transform hint has been ignored.
|
||||
sp<GraphicBuffer> buf = mST->getCurrentBuffer();
|
||||
if (mST->getCurrentTransform() == NATIVE_WINDOW_TRANSFORM_ROT_270) {
|
||||
ASSERT_EQ(texWidth, buf->getHeight());
|
||||
ASSERT_EQ(texHeight, buf->getWidth());
|
||||
} else {
|
||||
ASSERT_EQ(texWidth, buf->getWidth());
|
||||
ASSERT_EQ(texHeight, buf->getHeight());
|
||||
}
|
||||
|
||||
// Reset the transform hint and confirm that it takes.
|
||||
mST->setTransformHint(0);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
eglSwapBuffers(mEglDisplay, mProducerEglSurface);
|
||||
mST->updateTexImage();
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
eglSwapBuffers(mEglDisplay, mProducerEglSurface);
|
||||
mST->updateTexImage();
|
||||
|
||||
buf = mST->getCurrentBuffer();
|
||||
ASSERT_EQ((uint32_t) 0, mST->getCurrentTransform());
|
||||
ASSERT_EQ(texWidth, buf->getWidth());
|
||||
ASSERT_EQ(texHeight, buf->getHeight());
|
||||
}
|
||||
|
||||
TEST_F(SurfaceTextureGLToGLTest, TexturingFromGLFilledRGBABufferPow2) {
|
||||
const int texWidth = 64;
|
||||
const int texHeight = 64;
|
||||
|
Loading…
Reference in New Issue
Block a user