xref: /aosp_15_r20/frameworks/native/libs/gui/tests/SurfaceTextureGL.h (revision 38e8c45f13ce32b0dcecb25141ffecaf386fa17f)
1*38e8c45fSAndroid Build Coastguard Worker /*
2*38e8c45fSAndroid Build Coastguard Worker  * Copyright 2013 The Android Open Source Project
3*38e8c45fSAndroid Build Coastguard Worker  *
4*38e8c45fSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*38e8c45fSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*38e8c45fSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*38e8c45fSAndroid Build Coastguard Worker  *
8*38e8c45fSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*38e8c45fSAndroid Build Coastguard Worker  *
10*38e8c45fSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*38e8c45fSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*38e8c45fSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*38e8c45fSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*38e8c45fSAndroid Build Coastguard Worker  * limitations under the License.
15*38e8c45fSAndroid Build Coastguard Worker  */
16*38e8c45fSAndroid Build Coastguard Worker 
17*38e8c45fSAndroid Build Coastguard Worker #ifndef ANDROID_SURFACE_TEXTURE_GL_H
18*38e8c45fSAndroid Build Coastguard Worker #define ANDROID_SURFACE_TEXTURE_GL_H
19*38e8c45fSAndroid Build Coastguard Worker 
20*38e8c45fSAndroid Build Coastguard Worker #include "Constants.h"
21*38e8c45fSAndroid Build Coastguard Worker #include "GLTest.h"
22*38e8c45fSAndroid Build Coastguard Worker 
23*38e8c45fSAndroid Build Coastguard Worker #include "FrameWaiter.h"
24*38e8c45fSAndroid Build Coastguard Worker #include "TextureRenderer.h"
25*38e8c45fSAndroid Build Coastguard Worker 
26*38e8c45fSAndroid Build Coastguard Worker #include <gui/GLConsumer.h>
27*38e8c45fSAndroid Build Coastguard Worker #include <gui/Surface.h>
28*38e8c45fSAndroid Build Coastguard Worker 
29*38e8c45fSAndroid Build Coastguard Worker namespace android {
30*38e8c45fSAndroid Build Coastguard Worker 
31*38e8c45fSAndroid Build Coastguard Worker class FrameWaiter;
32*38e8c45fSAndroid Build Coastguard Worker class GLConsumer;
33*38e8c45fSAndroid Build Coastguard Worker class TextureRenderer;
34*38e8c45fSAndroid Build Coastguard Worker 
35*38e8c45fSAndroid Build Coastguard Worker class SurfaceTextureGLTest : public GLTest {
36*38e8c45fSAndroid Build Coastguard Worker protected:
37*38e8c45fSAndroid Build Coastguard Worker     enum { TEX_ID = 123 };
38*38e8c45fSAndroid Build Coastguard Worker 
SetUp()39*38e8c45fSAndroid Build Coastguard Worker     void SetUp() {
40*38e8c45fSAndroid Build Coastguard Worker         GLTest::SetUp();
41*38e8c45fSAndroid Build Coastguard Worker         mST = new GLConsumer(TEX_ID, GLConsumer::TEXTURE_EXTERNAL, true, false);
42*38e8c45fSAndroid Build Coastguard Worker         mSTC = mST->getSurface();
43*38e8c45fSAndroid Build Coastguard Worker         mANW = mSTC;
44*38e8c45fSAndroid Build Coastguard Worker         ASSERT_EQ(NO_ERROR, native_window_set_usage(mANW.get(), TEST_PRODUCER_USAGE_BITS));
45*38e8c45fSAndroid Build Coastguard Worker         mTextureRenderer = new TextureRenderer(TEX_ID, mST);
46*38e8c45fSAndroid Build Coastguard Worker         ASSERT_NO_FATAL_FAILURE(mTextureRenderer->SetUp());
47*38e8c45fSAndroid Build Coastguard Worker         mFW = new FrameWaiter;
48*38e8c45fSAndroid Build Coastguard Worker         mST->setFrameAvailableListener(mFW);
49*38e8c45fSAndroid Build Coastguard Worker     }
50*38e8c45fSAndroid Build Coastguard Worker 
TearDown()51*38e8c45fSAndroid Build Coastguard Worker     void TearDown() {
52*38e8c45fSAndroid Build Coastguard Worker         mTextureRenderer.clear();
53*38e8c45fSAndroid Build Coastguard Worker         mANW.clear();
54*38e8c45fSAndroid Build Coastguard Worker         mSTC.clear();
55*38e8c45fSAndroid Build Coastguard Worker         mST.clear();
56*38e8c45fSAndroid Build Coastguard Worker         GLTest::TearDown();
57*38e8c45fSAndroid Build Coastguard Worker     }
58*38e8c45fSAndroid Build Coastguard Worker 
drawTexture()59*38e8c45fSAndroid Build Coastguard Worker     void drawTexture() {
60*38e8c45fSAndroid Build Coastguard Worker         mTextureRenderer->drawTexture();
61*38e8c45fSAndroid Build Coastguard Worker     }
62*38e8c45fSAndroid Build Coastguard Worker 
63*38e8c45fSAndroid Build Coastguard Worker     sp<GLConsumer> mST;
64*38e8c45fSAndroid Build Coastguard Worker     sp<Surface> mSTC;
65*38e8c45fSAndroid Build Coastguard Worker     sp<ANativeWindow> mANW;
66*38e8c45fSAndroid Build Coastguard Worker     sp<TextureRenderer> mTextureRenderer;
67*38e8c45fSAndroid Build Coastguard Worker     sp<FrameWaiter> mFW;
68*38e8c45fSAndroid Build Coastguard Worker };
69*38e8c45fSAndroid Build Coastguard Worker 
70*38e8c45fSAndroid Build Coastguard Worker } // namespace android
71*38e8c45fSAndroid Build Coastguard Worker 
72*38e8c45fSAndroid Build Coastguard Worker #endif
73