194c40fe92117f301c7758de2861ab0c1d6cfded0John Reck/* 294c40fe92117f301c7758de2861ab0c1d6cfded0John Reck * Copyright (C) 2014 The Android Open Source Project 394c40fe92117f301c7758de2861ab0c1d6cfded0John Reck * 494c40fe92117f301c7758de2861ab0c1d6cfded0John Reck * Licensed under the Apache License, Version 2.0 (the "License"); 594c40fe92117f301c7758de2861ab0c1d6cfded0John Reck * you may not use this file except in compliance with the License. 694c40fe92117f301c7758de2861ab0c1d6cfded0John Reck * You may obtain a copy of the License at 794c40fe92117f301c7758de2861ab0c1d6cfded0John Reck * 894c40fe92117f301c7758de2861ab0c1d6cfded0John Reck * http://www.apache.org/licenses/LICENSE-2.0 994c40fe92117f301c7758de2861ab0c1d6cfded0John Reck * 1094c40fe92117f301c7758de2861ab0c1d6cfded0John Reck * Unless required by applicable law or agreed to in writing, software 1194c40fe92117f301c7758de2861ab0c1d6cfded0John Reck * distributed under the License is distributed on an "AS IS" BASIS, 1294c40fe92117f301c7758de2861ab0c1d6cfded0John Reck * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1394c40fe92117f301c7758de2861ab0c1d6cfded0John Reck * See the License for the specific language governing permissions and 1494c40fe92117f301c7758de2861ab0c1d6cfded0John Reck * limitations under the License. 1594c40fe92117f301c7758de2861ab0c1d6cfded0John Reck */ 1694c40fe92117f301c7758de2861ab0c1d6cfded0John Reck 1794c40fe92117f301c7758de2861ab0c1d6cfded0John Reck#ifndef TESTCONTEXT_H 1894c40fe92117f301c7758de2861ab0c1d6cfded0John Reck#define TESTCONTEXT_H 1994c40fe92117f301c7758de2861ab0c1d6cfded0John Reck 2084e390cc903ae4027276c33371ad5237b550910fJohn Reck#include <gui/DisplayEventReceiver.h> 2184e390cc903ae4027276c33371ad5237b550910fJohn Reck#include <gui/ISurfaceComposer.h> 22f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck#include <gui/BufferItemConsumer.h> 2384e390cc903ae4027276c33371ad5237b550910fJohn Reck#include <gui/SurfaceComposerClient.h> 2494c40fe92117f301c7758de2861ab0c1d6cfded0John Reck#include <gui/SurfaceControl.h> 2584e390cc903ae4027276c33371ad5237b550910fJohn Reck#include <gui/Surface.h> 2684e390cc903ae4027276c33371ad5237b550910fJohn Reck#include <ui/DisplayInfo.h> 2784e390cc903ae4027276c33371ad5237b550910fJohn Reck#include <utils/Looper.h> 2884e390cc903ae4027276c33371ad5237b550910fJohn Reck 29f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck#include <thread> 30f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck#include <atomic> 31f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck 3284e390cc903ae4027276c33371ad5237b550910fJohn Recknamespace android { 3384e390cc903ae4027276c33371ad5237b550910fJohn Recknamespace uirenderer { 3484e390cc903ae4027276c33371ad5237b550910fJohn Recknamespace test { 3584e390cc903ae4027276c33371ad5237b550910fJohn Reck 3684e390cc903ae4027276c33371ad5237b550910fJohn Reckextern DisplayInfo gDisplay; 3784e390cc903ae4027276c33371ad5237b550910fJohn Reck#define dp(x) ((x) * android::uirenderer::test::gDisplay.density) 3884e390cc903ae4027276c33371ad5237b550910fJohn Reck 39e702c9cd6a2b9b1378f740a79b0e349a9b02660fJohn ReckDisplayInfo getBuiltInDisplay(); 40e702c9cd6a2b9b1378f740a79b0e349a9b02660fJohn Reck 4184e390cc903ae4027276c33371ad5237b550910fJohn Reckclass TestContext { 4284e390cc903ae4027276c33371ad5237b550910fJohn Reckpublic: 4384e390cc903ae4027276c33371ad5237b550910fJohn Reck TestContext(); 4484e390cc903ae4027276c33371ad5237b550910fJohn Reck ~TestContext(); 4584e390cc903ae4027276c33371ad5237b550910fJohn Reck 46f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck // Must be called before surface(); 47f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck void setRenderOffscreen(bool renderOffscreen) { 48f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck LOG_ALWAYS_FATAL_IF(mSurface.get(), 49f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck "Must be called before surface is created"); 50f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck mRenderOffscreen = renderOffscreen; 51f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck } 52f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck 5384e390cc903ae4027276c33371ad5237b550910fJohn Reck sp<Surface> surface(); 5494c40fe92117f301c7758de2861ab0c1d6cfded0John Reck 5584e390cc903ae4027276c33371ad5237b550910fJohn Reck void waitForVsync(); 5694c40fe92117f301c7758de2861ab0c1d6cfded0John Reck 5784e390cc903ae4027276c33371ad5237b550910fJohn Reckprivate: 58f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck void createSurface(); 59f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck void createWindowSurface(); 60f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck void createOffscreenSurface(); 61f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck 6284e390cc903ae4027276c33371ad5237b550910fJohn Reck sp<SurfaceComposerClient> mSurfaceComposerClient; 6384e390cc903ae4027276c33371ad5237b550910fJohn Reck sp<SurfaceControl> mSurfaceControl; 64f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck sp<BufferItemConsumer> mConsumer; 6584e390cc903ae4027276c33371ad5237b550910fJohn Reck DisplayEventReceiver mDisplayEventReceiver; 6684e390cc903ae4027276c33371ad5237b550910fJohn Reck sp<Looper> mLooper; 67f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck sp<Surface> mSurface; 68f1480761c1a83aecd09cdd473ec797a41d1a2f3fJohn Reck bool mRenderOffscreen; 6984e390cc903ae4027276c33371ad5237b550910fJohn Reck}; 7094c40fe92117f301c7758de2861ab0c1d6cfded0John Reck 7184e390cc903ae4027276c33371ad5237b550910fJohn Reck} // namespace test 7284e390cc903ae4027276c33371ad5237b550910fJohn Reck} // namespace uirenderer 7384e390cc903ae4027276c33371ad5237b550910fJohn Reck} // namespace android 7494c40fe92117f301c7758de2861ab0c1d6cfded0John Reck 7594c40fe92117f301c7758de2861ab0c1d6cfded0John Reck#endif 76