summaryrefslogtreecommitdiff
path: root/libs/hwui/tests/macrobench/TestContext.cpp
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2015-12-02 14:50:25 -0800
committerChris Craik <ccraik@google.com>2015-12-02 15:25:10 -0800
commit8160f20b0aca8c6595d4b385d673f59b6bcd16a4 (patch)
tree581bd7ae88d7ad352fc03e00d5175ccbfdd140bc /libs/hwui/tests/macrobench/TestContext.cpp
parent54fa17f667c285a5c9225e238c8132dfe830ef36 (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.cpp94
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