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