Commit 4a1858b8 by Jamie Madill

perftests: Fix simple draw call benchmark.

Previously the code was only testing the validation logic. Fix this by testing validation-only and a simple single quad draw benchmark. BUG=468852 Change-Id: I510deea08fee5932f51ea39883ed91652be476df Reviewed-on: https://chromium-review.googlesource.com/265751Reviewed-by: 's avatarBrandon Jones <bajones@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 77a72f6e
......@@ -24,10 +24,17 @@ struct DrawCallPerfParams final : public RenderTestParams
strstr << RenderTestParams::suffix();
if (numTris == 0)
{
strstr << "_validation_only";
}
return strstr.str();
}
unsigned int iterations;
double runTimeSeconds;
int numTris;
};
class DrawCallPerfBenchmark : public ANGLERenderTest,
......@@ -51,9 +58,9 @@ DrawCallPerfBenchmark::DrawCallPerfBenchmark()
: ANGLERenderTest("DrawCallPerf", GetParam()),
mProgram(0),
mBuffer(0),
mNumTris(0)
mNumTris(GetParam().numTris)
{
mRunTimeSeconds = 10.0;
mRunTimeSeconds = GetParam().runTimeSeconds;
}
bool DrawCallPerfBenchmark::initializeBenchmark()
......@@ -94,17 +101,28 @@ bool DrawCallPerfBenchmark::initializeBenchmark()
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
std::vector<float> floatData(6);
floatData[0] = 1;
floatData[1] = 2;
floatData[2] = 0;
floatData[3] = 0;
floatData[4] = 2;
floatData[5] = 0;
std::vector<GLfloat> floatData;
for (int quadIndex = 0; quadIndex < mNumTris; ++quadIndex)
{
floatData.push_back(1);
floatData.push_back(2);
floatData.push_back(0);
floatData.push_back(0);
floatData.push_back(2);
floatData.push_back(0);
}
glGenBuffers(1, &mBuffer);
glBindBuffer(GL_ARRAY_BUFFER, mBuffer);
glBufferData(GL_ARRAY_BUFFER, floatData.size() * sizeof(float), &floatData[0], GL_STATIC_DRAW);
// To avoid generating GL errors when testing validation-only
if (floatData.empty())
{
floatData.push_back(0.0f);
}
glBufferData(GL_ARRAY_BUFFER, floatData.size() * sizeof(GLfloat), &floatData[0], GL_STATIC_DRAW);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(0);
......@@ -145,7 +163,7 @@ void DrawCallPerfBenchmark::drawBenchmark()
for (unsigned int it = 0; it < params.iterations; it++)
{
glDrawArrays(GL_TRIANGLES, 0, 3 * mNumTris);
glDrawArrays(GL_TRIANGLES, 0, static_cast<GLsizei>(3 * mNumTris));
}
}
......@@ -153,11 +171,27 @@ DrawCallPerfParams DrawCallPerfD3D11Params()
{
DrawCallPerfParams params;
params.glesMajorVersion = 2;
params.widowWidth = 1280;
params.windowHeight = 720;
params.widowWidth = 256;
params.windowHeight = 256;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE;
params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE;
params.iterations = 50;
params.numTris = 1;
params.runTimeSeconds = 10.0;
return params;
}
DrawCallPerfParams DrawCallPerfValidationOnly()
{
DrawCallPerfParams params;
params.glesMajorVersion = 2;
params.widowWidth = 256;
params.windowHeight = 256;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE;
params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE;
params.iterations = 100;
params.numTris = 0;
params.runTimeSeconds = 5.0;
return params;
}
......@@ -165,11 +199,13 @@ DrawCallPerfParams DrawCallPerfD3D9Params()
{
DrawCallPerfParams params;
params.glesMajorVersion = 2;
params.widowWidth = 1280;
params.windowHeight = 720;
params.widowWidth = 256;
params.windowHeight = 256;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE;
params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE;
params.iterations = 50;
params.numTris = 1;
params.runTimeSeconds = 10.0;
return params;
}
......@@ -180,6 +216,8 @@ TEST_P(DrawCallPerfBenchmark, Run)
INSTANTIATE_TEST_CASE_P(DrawCallPerf,
DrawCallPerfBenchmark,
::testing::Values(DrawCallPerfD3D11Params(), DrawCallPerfD3D9Params()));
::testing::Values(DrawCallPerfD3D11Params(),
DrawCallPerfD3D9Params(),
DrawCallPerfValidationOnly()));
} // namespace
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