SurfaceTextureClient_test.cpp revision eafabcdc1639fb96062d9e3c39b0ae27b0238ae1
1134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis/* 2134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis * Copyright (C) 2011 The Android Open Source Project 3134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis * 4134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis * Licensed under the Apache License, Version 2.0 (the "License"); 5134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis * you may not use this file except in compliance with the License. 6134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis * You may obtain a copy of the License at 7134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis * 8134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis * http://www.apache.org/licenses/LICENSE-2.0 9134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis * 10134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis * Unless required by applicable law or agreed to in writing, software 11134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis * distributed under the License is distributed on an "AS IS" BASIS, 12134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis * See the License for the specific language governing permissions and 14134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis * limitations under the License. 15134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis */ 16134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis 175c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis#include <EGL/egl.h> 18134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis#include <gtest/gtest.h> 195c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis#include <gui/SurfaceTextureClient.h> 20134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis 21134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennisnamespace android { 22134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis 23134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennisclass SurfaceTextureClientTest : public ::testing::Test { 24134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennisprotected: 25134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis virtual void SetUp() { 26134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis mST = new SurfaceTexture(123); 27134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis mSTC = new SurfaceTextureClient(mST); 28134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis } 29134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis 30134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis virtual void TearDown() { 31134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis mST.clear(); 32134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis mSTC.clear(); 33134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis } 34134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis 35134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis sp<SurfaceTexture> mST; 36134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis sp<SurfaceTextureClient> mSTC; 37134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis}; 38134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis 39bae774eb20bebd409441b93386b51bccda75f546Jamie GennisTEST_F(SurfaceTextureClientTest, GetISurfaceTextureIsNotNull) { 40bae774eb20bebd409441b93386b51bccda75f546Jamie Gennis sp<ISurfaceTexture> ist(mSTC->getISurfaceTexture()); 41bae774eb20bebd409441b93386b51bccda75f546Jamie Gennis ASSERT_TRUE(ist != NULL); 42bae774eb20bebd409441b93386b51bccda75f546Jamie Gennis} 43bae774eb20bebd409441b93386b51bccda75f546Jamie Gennis 44134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie GennisTEST_F(SurfaceTextureClientTest, QueuesToWindowCompositorIsFalse) { 45134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis sp<ANativeWindow> anw(mSTC); 46134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis int result = -123; 47134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis int err = anw->query(anw.get(), NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER, 48134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis &result); 49134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis EXPECT_EQ(NO_ERROR, err); 50134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis EXPECT_EQ(0, result); 51134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis} 52134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis 53391bbe2246a7547dbf3460c231b3c5ba691d4eb1Jamie GennisTEST_F(SurfaceTextureClientTest, ConcreteTypeIsSurfaceTextureClient) { 54391bbe2246a7547dbf3460c231b3c5ba691d4eb1Jamie Gennis sp<ANativeWindow> anw(mSTC); 55391bbe2246a7547dbf3460c231b3c5ba691d4eb1Jamie Gennis int result = -123; 56391bbe2246a7547dbf3460c231b3c5ba691d4eb1Jamie Gennis int err = anw->query(anw.get(), NATIVE_WINDOW_CONCRETE_TYPE, &result); 57391bbe2246a7547dbf3460c231b3c5ba691d4eb1Jamie Gennis EXPECT_EQ(NO_ERROR, err); 58391bbe2246a7547dbf3460c231b3c5ba691d4eb1Jamie Gennis EXPECT_EQ(NATIVE_WINDOW_SURFACE_TEXTURE_CLIENT, result); 59391bbe2246a7547dbf3460c231b3c5ba691d4eb1Jamie Gennis} 60391bbe2246a7547dbf3460c231b3c5ba691d4eb1Jamie Gennis 615c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie GennisTEST_F(SurfaceTextureClientTest, ANativeWindowLockFails) { 625c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis sp<ANativeWindow> anw(mSTC); 635c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis ANativeWindow_Buffer buf; 645c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis ASSERT_EQ(BAD_VALUE, ANativeWindow_lock(anw.get(), &buf, NULL)); 655c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis} 665c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis 671b528fb9d818044973abf656c9d2d3c1192bcfdcJamie GennisTEST_F(SurfaceTextureClientTest, EglCreateWindowSurfaceSucceeds) { 685c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis sp<ANativeWindow> anw(mSTC); 695c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis 705c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGLDisplay dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY); 715c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis ASSERT_EQ(EGL_SUCCESS, eglGetError()); 725c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis ASSERT_NE(EGL_NO_DISPLAY, dpy); 735c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis 745c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGLint majorVersion; 755c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGLint minorVersion; 765c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EXPECT_TRUE(eglInitialize(dpy, &majorVersion, &minorVersion)); 775c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis ASSERT_EQ(EGL_SUCCESS, eglGetError()); 785c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis 795c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGLConfig myConfig = {0}; 805c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGLint numConfigs = 0; 815c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGLint configAttribs[] = { 825c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGL_SURFACE_TYPE, EGL_WINDOW_BIT, 835c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, 845c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGL_RED_SIZE, 8, 855c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGL_GREEN_SIZE, 8, 865c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGL_BLUE_SIZE, 8, 875c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGL_ALPHA_SIZE, 8, 885c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGL_DEPTH_SIZE, 16, 895c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGL_STENCIL_SIZE, 8, 905c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGL_NONE }; 915c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EXPECT_TRUE(eglChooseConfig(dpy, configAttribs, &myConfig, 1, 925c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis &numConfigs)); 935c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis ASSERT_EQ(EGL_SUCCESS, eglGetError()); 945c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis 955c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis EGLSurface eglSurface = eglCreateWindowSurface(dpy, myConfig, anw.get(), 965c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis NULL); 97eafabcdc1639fb96062d9e3c39b0ae27b0238ae1Mathias Agopian EXPECT_NE(EGL_NO_SURFACE, eglSurface); 98eafabcdc1639fb96062d9e3c39b0ae27b0238ae1Mathias Agopian EXPECT_EQ(EGL_SUCCESS, eglGetError()); 995c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis 1005c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis eglTerminate(dpy); 1015c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis} 1025c0c93a8c49b4053744efb8953b915fa7f0923a5Jamie Gennis 103a5c75c01620179ce00812354778a29a80d76e71fMathias AgopianTEST_F(SurfaceTextureClientTest, BufferGeometryInvalidSizesFail) { 104a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian sp<ANativeWindow> anw(mSTC); 105a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian 106a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_GT(OK, native_window_set_buffers_geometry(anw.get(), -1, 0, 0)); 107a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_GT(OK, native_window_set_buffers_geometry(anw.get(), 0, -1, 0)); 108a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_GT(OK, native_window_set_buffers_geometry(anw.get(), 0, 0, -1)); 109a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_GT(OK, native_window_set_buffers_geometry(anw.get(), -1, -1, 0)); 110a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_GT(OK, native_window_set_buffers_geometry(anw.get(), 0, 8, 0)); 111a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_GT(OK, native_window_set_buffers_geometry(anw.get(), 8, 0, 0)); 112a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian} 113a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian 114a5c75c01620179ce00812354778a29a80d76e71fMathias AgopianTEST_F(SurfaceTextureClientTest, DefaultGeometryValues) { 115a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian sp<ANativeWindow> anw(mSTC); 116697526bc9e44ce61c88614f98387ae8bbf0a187eIliyan Malchev ANativeWindowBuffer* buf; 117a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf)); 118a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(1, buf->width); 119a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(1, buf->height); 120a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(PIXEL_FORMAT_RGBA_8888, buf->format); 121a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf)); 122a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian} 123a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian 124a5c75c01620179ce00812354778a29a80d76e71fMathias AgopianTEST_F(SurfaceTextureClientTest, BufferGeometryCanBeSet) { 125a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian sp<ANativeWindow> anw(mSTC); 126697526bc9e44ce61c88614f98387ae8bbf0a187eIliyan Malchev ANativeWindowBuffer* buf; 127a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(OK, native_window_set_buffers_geometry(anw.get(), 16, 8, PIXEL_FORMAT_RGB_565)); 128a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf)); 129a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(16, buf->width); 130a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(8, buf->height); 131a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(PIXEL_FORMAT_RGB_565, buf->format); 132a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf)); 133a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian} 134a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian 135a5c75c01620179ce00812354778a29a80d76e71fMathias AgopianTEST_F(SurfaceTextureClientTest, BufferGeometryDefaultSizeSetFormat) { 136a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian sp<ANativeWindow> anw(mSTC); 137697526bc9e44ce61c88614f98387ae8bbf0a187eIliyan Malchev ANativeWindowBuffer* buf; 138a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(OK, native_window_set_buffers_geometry(anw.get(), 0, 0, PIXEL_FORMAT_RGB_565)); 139a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf)); 140a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(1, buf->width); 141a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(1, buf->height); 142a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(PIXEL_FORMAT_RGB_565, buf->format); 143a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf)); 144a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian} 145a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian 146a5c75c01620179ce00812354778a29a80d76e71fMathias AgopianTEST_F(SurfaceTextureClientTest, BufferGeometrySetSizeDefaultFormat) { 147a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian sp<ANativeWindow> anw(mSTC); 148697526bc9e44ce61c88614f98387ae8bbf0a187eIliyan Malchev ANativeWindowBuffer* buf; 149a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(OK, native_window_set_buffers_geometry(anw.get(), 16, 8, 0)); 150a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf)); 151a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(16, buf->width); 152a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(8, buf->height); 153a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(PIXEL_FORMAT_RGBA_8888, buf->format); 154a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf)); 155a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian} 156a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian 157a5c75c01620179ce00812354778a29a80d76e71fMathias AgopianTEST_F(SurfaceTextureClientTest, BufferGeometrySizeCanBeUnset) { 158a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian sp<ANativeWindow> anw(mSTC); 159697526bc9e44ce61c88614f98387ae8bbf0a187eIliyan Malchev ANativeWindowBuffer* buf; 160a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(OK, native_window_set_buffers_geometry(anw.get(), 16, 8, 0)); 161a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf)); 162a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(16, buf->width); 163a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(8, buf->height); 164a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(PIXEL_FORMAT_RGBA_8888, buf->format); 165a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf)); 166a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(OK, native_window_set_buffers_geometry(anw.get(), 0, 0, 0)); 167a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf)); 168a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(1, buf->width); 169a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(1, buf->height); 170a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(PIXEL_FORMAT_RGBA_8888, buf->format); 171a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf)); 172a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian} 173a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian 174a5c75c01620179ce00812354778a29a80d76e71fMathias AgopianTEST_F(SurfaceTextureClientTest, BufferGeometrySizeCanBeChangedWithoutFormat) { 175a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian sp<ANativeWindow> anw(mSTC); 176697526bc9e44ce61c88614f98387ae8bbf0a187eIliyan Malchev ANativeWindowBuffer* buf; 177a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(OK, native_window_set_buffers_geometry(anw.get(), 0, 0, PIXEL_FORMAT_RGB_565)); 178a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf)); 179a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(1, buf->width); 180a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(1, buf->height); 181a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(PIXEL_FORMAT_RGB_565, buf->format); 182a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf)); 183a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(OK, native_window_set_buffers_geometry(anw.get(), 16, 8, 0)); 184a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf)); 185a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(16, buf->width); 186a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(8, buf->height); 187a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(PIXEL_FORMAT_RGB_565, buf->format); 188a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf)); 189a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian} 190a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian 191a5c75c01620179ce00812354778a29a80d76e71fMathias AgopianTEST_F(SurfaceTextureClientTest, SurfaceTextureSetDefaultSize) { 192a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian sp<ANativeWindow> anw(mSTC); 193a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian sp<SurfaceTexture> st(mST); 194697526bc9e44ce61c88614f98387ae8bbf0a187eIliyan Malchev ANativeWindowBuffer* buf; 195a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(OK, st->setDefaultBufferSize(16, 8)); 196a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf)); 197a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(16, buf->width); 198a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(8, buf->height); 199a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(PIXEL_FORMAT_RGBA_8888, buf->format); 200a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf)); 201a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian} 202a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian 203a5c75c01620179ce00812354778a29a80d76e71fMathias AgopianTEST_F(SurfaceTextureClientTest, SurfaceTextureSetDefaultSizeAfterDequeue) { 204a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian sp<ANativeWindow> anw(mSTC); 205a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian sp<SurfaceTexture> st(mST); 206697526bc9e44ce61c88614f98387ae8bbf0a187eIliyan Malchev ANativeWindowBuffer* buf[2]; 207a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf[0])); 208a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf[1])); 209a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_NE(buf[0], buf[1]); 210a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf[0])); 211a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf[1])); 212a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(OK, st->setDefaultBufferSize(16, 8)); 213a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf[0])); 214a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf[1])); 215a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_NE(buf[0], buf[1]); 216a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(16, buf[0]->width); 217a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(16, buf[1]->width); 218a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(8, buf[0]->height); 219a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(8, buf[1]->height); 220a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf[0])); 221a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf[1])); 222a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian} 223a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian 224a5c75c01620179ce00812354778a29a80d76e71fMathias AgopianTEST_F(SurfaceTextureClientTest, SurfaceTextureSetDefaultSizeVsGeometry) { 225a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian sp<ANativeWindow> anw(mSTC); 226a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian sp<SurfaceTexture> st(mST); 227697526bc9e44ce61c88614f98387ae8bbf0a187eIliyan Malchev ANativeWindowBuffer* buf[2]; 228a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(OK, st->setDefaultBufferSize(16, 8)); 229a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf[0])); 230a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf[1])); 231a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_NE(buf[0], buf[1]); 232a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(16, buf[0]->width); 233a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(16, buf[1]->width); 234a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(8, buf[0]->height); 235a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(8, buf[1]->height); 236a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf[0])); 237a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf[1])); 238a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(OK, native_window_set_buffers_geometry(anw.get(), 12, 24, 0)); 239a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf[0])); 240a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->dequeueBuffer(anw.get(), &buf[1])); 241a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_NE(buf[0], buf[1]); 242a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(12, buf[0]->width); 243a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(12, buf[1]->width); 244a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(24, buf[0]->height); 245a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian EXPECT_EQ(24, buf[1]->height); 246a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf[0])); 247a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian ASSERT_EQ(OK, anw->cancelBuffer(anw.get(), buf[1])); 248a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian} 249a5c75c01620179ce00812354778a29a80d76e71fMathias Agopian 250134f0422866e8985188ed10dfbdcb8e6c34b87f7Jamie Gennis} 251