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