@@ -1520,4 +1520,36 @@ TEST_F(SurfaceTextureGLTest, EglDestroySurfaceAfterAbandonUnrefsBuffers) {
15201520 EXPECT_EQ (1 , buffers[2 ]->getStrongCount ());
15211521}
15221522
1523+ TEST_F (SurfaceTextureGLTest, InvalidWidthOrHeightFails) {
1524+ int texHeight = 16 ;
1525+ ANativeWindowBuffer* anb;
1526+
1527+ GLint maxTextureSize;
1528+ glGetIntegerv (GL_MAX_TEXTURE_SIZE , &maxTextureSize);
1529+
1530+ // make sure it works with small textures
1531+ mST ->setDefaultBufferSize (16 , texHeight);
1532+ EXPECT_EQ (NO_ERROR , mANW ->dequeueBuffer (mANW .get (), &anb));
1533+ EXPECT_EQ (16 , anb->width );
1534+ EXPECT_EQ (texHeight, anb->height );
1535+ EXPECT_EQ (NO_ERROR , mANW ->queueBuffer (mANW .get (), anb));
1536+ EXPECT_EQ (NO_ERROR , mST ->updateTexImage ());
1537+
1538+ // make sure it works with GL_MAX_TEXTURE_SIZE
1539+ mST ->setDefaultBufferSize (maxTextureSize, texHeight);
1540+ EXPECT_EQ (NO_ERROR , mANW ->dequeueBuffer (mANW .get (), &anb));
1541+ EXPECT_EQ (maxTextureSize, anb->width );
1542+ EXPECT_EQ (texHeight, anb->height );
1543+ EXPECT_EQ (NO_ERROR , mANW ->queueBuffer (mANW .get (), anb));
1544+ EXPECT_EQ (NO_ERROR , mST ->updateTexImage ());
1545+
1546+ // make sure it fails with GL_MAX_TEXTURE_SIZE+1
1547+ mST ->setDefaultBufferSize (maxTextureSize+1 , texHeight);
1548+ EXPECT_EQ (NO_ERROR , mANW ->dequeueBuffer (mANW .get (), &anb));
1549+ EXPECT_EQ (maxTextureSize+1 , anb->width );
1550+ EXPECT_EQ (texHeight, anb->height );
1551+ EXPECT_EQ (NO_ERROR , mANW ->queueBuffer (mANW .get (), anb));
1552+ ASSERT_NE (NO_ERROR , mST ->updateTexImage ());
1553+ }
1554+
15231555} // namespace android
0 commit comments