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