diff options
author | Chris Craik <ccraik@google.com> | 2015-12-02 14:50:25 -0800 |
---|---|---|
committer | Chris Craik <ccraik@google.com> | 2015-12-02 15:25:10 -0800 |
commit | 8160f20b0aca8c6595d4b385d673f59b6bcd16a4 (patch) | |
tree | 581bd7ae88d7ad352fc03e00d5175ccbfdd140bc /libs/hwui/tests/macrobench/TestContext.cpp | |
parent | 54fa17f667c285a5c9225e238c8132dfe830ef36 (diff) |
Reorganize hwui test directories
Now test-only common files reside in tests/common, and each test
executable type (macrobench, microbench, and unit) has a subdir there.
This change means the shared lib no longer has test code in it, and
sets up a means for scenes to be shared between tests.
Change-Id: I37b081f6977300e03fdd961b8e6439fde730605e
Diffstat (limited to 'libs/hwui/tests/macrobench/TestContext.cpp')
-rw-r--r-- | libs/hwui/tests/macrobench/TestContext.cpp | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/libs/hwui/tests/macrobench/TestContext.cpp b/libs/hwui/tests/macrobench/TestContext.cpp new file mode 100644 index 000000000000..ba763a8def62 --- /dev/null +++ b/libs/hwui/tests/macrobench/TestContext.cpp @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "TestContext.h" + +namespace android { +namespace uirenderer { +namespace test { + +static const int IDENT_DISPLAYEVENT = 1; + +static android::DisplayInfo DUMMY_DISPLAY { + 1080, //w + 1920, //h + 320.0, // xdpi + 320.0, // ydpi + 60.0, // fps + 2.0, // density + 0, // orientation + false, // secure? + 0, // appVsyncOffset + 0, // presentationDeadline + 0, // colorTransform +}; + +DisplayInfo getBuiltInDisplay() { +#if !HWUI_NULL_GPU + DisplayInfo display; + sp<IBinder> dtoken(SurfaceComposerClient::getBuiltInDisplay( + ISurfaceComposer::eDisplayIdMain)); + status_t status = SurfaceComposerClient::getDisplayInfo(dtoken, &display); + LOG_ALWAYS_FATAL_IF(status, "Failed to get display info\n"); + return display; +#else + return DUMMY_DISPLAY; +#endif +} + +// Initialize to a dummy default +android::DisplayInfo gDisplay = DUMMY_DISPLAY; + +TestContext::TestContext() { + mLooper = new Looper(true); + mSurfaceComposerClient = new SurfaceComposerClient(); + mLooper->addFd(mDisplayEventReceiver.getFd(), IDENT_DISPLAYEVENT, + Looper::EVENT_INPUT, nullptr, nullptr); +} + +TestContext::~TestContext() {} + +sp<Surface> TestContext::surface() { + if (!mSurfaceControl.get()) { + mSurfaceControl = mSurfaceComposerClient->createSurface(String8("HwuiTest"), + gDisplay.w, gDisplay.h, PIXEL_FORMAT_RGBX_8888); + + SurfaceComposerClient::openGlobalTransaction(); + mSurfaceControl->setLayer(0x7FFFFFF); + mSurfaceControl->show(); + SurfaceComposerClient::closeGlobalTransaction(); + } + + return mSurfaceControl->getSurface(); +} + +void TestContext::waitForVsync() { +#if !HWUI_NULL_GPU + // Request vsync + mDisplayEventReceiver.requestNextVsync(); + + // Wait + mLooper->pollOnce(-1); + + // Drain it + DisplayEventReceiver::Event buf[100]; + while (mDisplayEventReceiver.getEvents(buf, 100) > 0) { } +#endif +} + +} // namespace test +} // namespace uirenderer +} // namespace android |