Commit ce232678 by Jamie Madill

Add a perf test for eglInitialize.

Also shutdown performance, since it's not easy to only test one. BUG=angleproject:1014 Change-Id: I9d06426788ed336031271f8876589b111f1294b7 Reviewed-on: https://chromium-review.googlesource.com/273974Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarBrandon Jones <bajones@chromium.org>
parent 7ace53ad
......@@ -232,6 +232,9 @@ void Display::setAttributes(rx::DisplayImpl *impl, const AttributeMap &attribMap
Error Display::initialize()
{
// Re-initialize default platform if it's needed
InitDefaultPlatformImpl();
double createDeviceBegin = ANGLEPlatformCurrent()->currentTime();
TRACE_EVENT0("gpu.angle", "egl::Display::initialize");
......
......@@ -19,6 +19,7 @@
'<(angle_path)/src/tests/perf_tests/ANGLEPerfTest.h',
'<(angle_path)/src/tests/perf_tests/BufferSubData.cpp',
'<(angle_path)/src/tests/perf_tests/DrawCallPerf.cpp',
'<(angle_path)/src/tests/perf_tests/EGLInitializePerf.cpp',
'<(angle_path)/src/tests/perf_tests/IndexConversionPerf.cpp',
'<(angle_path)/src/tests/perf_tests/PointSprites.cpp',
'<(angle_path)/src/tests/perf_tests/TexSubImage.cpp',
......
//
// Copyright 2015 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// EGLInitializePerfTest:
// Performance test for device creation.
//
#include "ANGLEPerfTest.h"
#include "test_utils/angle_test_configs.h"
#include "test_utils/angle_test_instantiate.h"
using namespace testing;
namespace
{
class EGLInitializePerfTest : public ANGLEPerfTest,
public WithParamInterface<angle::PlatformParameters>
{
public:
EGLInitializePerfTest();
~EGLInitializePerfTest();
void step(float dt, double totalTime) override;
private:
OSWindow *mOSWindow;
EGLDisplay mDisplay;
};
EGLInitializePerfTest::EGLInitializePerfTest()
: ANGLEPerfTest("EGLInitialize", "_run"),
mOSWindow(nullptr),
mDisplay(EGL_NO_DISPLAY)
{
auto platform = GetParam().mEGLPlatformParameters;
std::vector<EGLint> displayAttributes;
displayAttributes.push_back(EGL_PLATFORM_ANGLE_TYPE_ANGLE);
displayAttributes.push_back(platform.renderer);
displayAttributes.push_back(EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE);
displayAttributes.push_back(platform.majorVersion);
displayAttributes.push_back(EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE);
displayAttributes.push_back(platform.minorVersion);
if (platform.renderer == EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE ||
platform.renderer == EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE)
{
displayAttributes.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE);
displayAttributes.push_back(platform.deviceType);
}
displayAttributes.push_back(EGL_NONE);
mOSWindow = CreateOSWindow();
mOSWindow->initialize("EGLInitialize Test", 64, 64);
auto eglGetPlatformDisplayEXT =
reinterpret_cast<PFNEGLGETPLATFORMDISPLAYEXTPROC>(eglGetProcAddress("eglGetPlatformDisplayEXT"));
if (eglGetPlatformDisplayEXT == nullptr)
{
std::cerr << "Error getting platform display!" << std::endl;
return;
}
mDisplay = eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE,
mOSWindow->getNativeDisplay(),
&displayAttributes[0]);
}
EGLInitializePerfTest::~EGLInitializePerfTest()
{
SafeDelete(mOSWindow);
}
void EGLInitializePerfTest::step(float dt, double totalTime)
{
ASSERT_TRUE(mDisplay != EGL_NO_DISPLAY);
EGLint majorVersion, minorVersion;
ASSERT_TRUE(eglInitialize(mDisplay, &majorVersion, &minorVersion) == EGL_TRUE);
ASSERT_TRUE(eglTerminate(mDisplay) == EGL_TRUE);
if (mTimer->getElapsedTime() >= 5.0)
{
mRunning = false;
}
}
TEST_P(EGLInitializePerfTest, Run)
{
run();
}
ANGLE_INSTANTIATE_TEST(EGLInitializePerfTest, angle::ES2_D3D11());
} // namespace
......@@ -115,7 +115,7 @@ bool EGLWindow::initializeGL(OSWindow *osWindow)
}
displayAttributes.push_back(EGL_NONE);
mDisplay = eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE, osWindow->getNativeDisplay(), displayAttributes.data());
mDisplay = eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE, osWindow->getNativeDisplay(), &displayAttributes[0]);
if (mDisplay == EGL_NO_DISPLAY)
{
destroyGL();
......@@ -123,7 +123,7 @@ bool EGLWindow::initializeGL(OSWindow *osWindow)
}
EGLint majorVersion, minorVersion;
if (!eglInitialize(mDisplay, &majorVersion, &minorVersion))
if (eglInitialize(mDisplay, &majorVersion, &minorVersion) == EGL_FALSE)
{
destroyGL();
return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment