Commit 304dcde8 by Jamie Madill

perftests: Use gtest asserts macro helpers.

We still were using the old cassert code, with a boolean return value on our initialization code. We can make use of the gtest macros and helpers to check for a successful init or GL errors. BUG=476658 Change-Id: I09cbb3d40748cbeaf530ae8f23fb8a1b07e7611f Reviewed-on: https://chromium-review.googlesource.com/265837Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarBrandon Jones <bajones@chromium.org>
parent 55ae4142
......@@ -120,11 +120,7 @@ void ANGLERenderTest::SetUp()
return;
}
if (!initializeBenchmark())
{
FAIL() << "Failed initializing base perf test";
return;
}
initializeBenchmark();
ANGLEPerfTest::SetUp();
}
......
......@@ -23,6 +23,10 @@
class Event;
#ifndef ASSERT_GL_NO_ERROR
#define ASSERT_GL_NO_ERROR() ASSERT_TRUE(glGetError() == GL_NO_ERROR)
#endif
class ANGLEPerfTest : public testing::Test, angle::NonCopyable
{
public:
......@@ -63,7 +67,7 @@ class ANGLERenderTest : public ANGLEPerfTest
ANGLERenderTest(const std::string &name, const RenderTestParams &testParams);
~ANGLERenderTest();
virtual bool initializeBenchmark() { return true; }
virtual void initializeBenchmark() { }
virtual void destroyBenchmark() { }
virtual void stepBenchmark(float dt, double totalTime) { }
......
......@@ -7,7 +7,6 @@
// Performance test for ANGLE buffer updates.
//
#include <cassert>
#include <sstream>
#include "ANGLEPerfTest.h"
......@@ -37,7 +36,7 @@ class BufferSubDataBenchmark : public ANGLERenderTest,
public:
BufferSubDataBenchmark();
bool initializeBenchmark() override;
void initializeBenchmark() override;
void destroyBenchmark() override;
void beginDrawBenchmark() override;
void drawBenchmark() override;
......@@ -197,12 +196,12 @@ BufferSubDataBenchmark::BufferSubDataBenchmark()
{
}
bool BufferSubDataBenchmark::initializeBenchmark()
void BufferSubDataBenchmark::initializeBenchmark()
{
const auto &params = GetParam();
assert(params.vertexComponentCount > 1);
assert(params.iterations > 0);
ASSERT_TRUE(params.vertexComponentCount > 1);
ASSERT_TRUE(params.iterations > 0);
mDrawIterations = params.iterations;
const std::string vs = SHADER_SOURCE
......@@ -226,10 +225,7 @@ bool BufferSubDataBenchmark::initializeBenchmark()
);
mProgram = CompileProgram(vs, fs);
if (!mProgram)
{
return false;
}
ASSERT_TRUE(mProgram != 0);
// Use the program object
glUseProgram(mProgram);
......@@ -286,20 +282,14 @@ bool BufferSubDataBenchmark::initializeBenchmark()
glUniform1f(glGetUniformLocation(mProgram, "uScale"), scale);
glUniform1f(glGetUniformLocation(mProgram, "uOffset"), offset);
GLenum glErr = glGetError();
if (glErr != GL_NO_ERROR)
{
return false;
}
return true;
ASSERT_GL_NO_ERROR();
}
void BufferSubDataBenchmark::destroyBenchmark()
{
glDeleteProgram(mProgram);
glDeleteBuffers(1, &mBuffer);
delete[] mUpdateData;
SafeDeleteArray(mUpdateData);
}
void BufferSubDataBenchmark::beginDrawBenchmark()
......@@ -321,6 +311,8 @@ void BufferSubDataBenchmark::drawBenchmark()
glDrawArrays(GL_TRIANGLES, 0, 3 * mNumTris);
}
ASSERT_GL_NO_ERROR();
}
BufferSubDataParams BufferUpdateD3D11Params()
......
......@@ -7,7 +7,6 @@
// Performance tests for ANGLE draw call overhead.
//
#include <cassert>
#include <sstream>
#include "ANGLEPerfTest.h"
......@@ -43,7 +42,7 @@ class DrawCallPerfBenchmark : public ANGLERenderTest,
public:
DrawCallPerfBenchmark();
bool initializeBenchmark() override;
void initializeBenchmark() override;
void destroyBenchmark() override;
void beginDrawBenchmark() override;
void drawBenchmark() override;
......@@ -63,11 +62,11 @@ DrawCallPerfBenchmark::DrawCallPerfBenchmark()
mRunTimeSeconds = GetParam().runTimeSeconds;
}
bool DrawCallPerfBenchmark::initializeBenchmark()
void DrawCallPerfBenchmark::initializeBenchmark()
{
const auto &params = GetParam();
assert(params.iterations > 0);
ASSERT_TRUE(params.iterations > 0);
mDrawIterations = params.iterations;
const std::string vs = SHADER_SOURCE
......@@ -91,10 +90,7 @@ bool DrawCallPerfBenchmark::initializeBenchmark()
);
mProgram = CompileProgram(vs, fs);
if (!mProgram)
{
return false;
}
ASSERT_TRUE(mProgram != 0);
// Use the program object
glUseProgram(mProgram);
......@@ -136,13 +132,7 @@ bool DrawCallPerfBenchmark::initializeBenchmark()
glUniform1f(glGetUniformLocation(mProgram, "uScale"), scale);
glUniform1f(glGetUniformLocation(mProgram, "uOffset"), offset);
GLenum glErr = glGetError();
if (glErr != GL_NO_ERROR)
{
return false;
}
return true;
ASSERT_GL_NO_ERROR();
}
void DrawCallPerfBenchmark::destroyBenchmark()
......@@ -165,6 +155,8 @@ void DrawCallPerfBenchmark::drawBenchmark()
{
glDrawArrays(GL_TRIANGLES, 0, static_cast<GLsizei>(3 * mNumTris));
}
ASSERT_GL_NO_ERROR();
}
DrawCallPerfParams DrawCallPerfD3D11Params()
......
......@@ -7,7 +7,6 @@
// Performance test for ANGLE point sprites.
//
#include <cassert>
#include <sstream>
#include <iostream>
......@@ -36,7 +35,7 @@ class PointSpritesBenchmark : public ANGLERenderTest,
public:
PointSpritesBenchmark();
bool initializeBenchmark() override;
void initializeBenchmark() override;
void destroyBenchmark() override;
void beginDrawBenchmark() override;
void drawBenchmark() override;
......@@ -62,12 +61,12 @@ PointSpritesBenchmark::PointSpritesBenchmark()
{
}
bool PointSpritesBenchmark::initializeBenchmark()
void PointSpritesBenchmark::initializeBenchmark()
{
const auto &params = GetParam();
mDrawIterations = params.iterations;
assert(params.iterations > 0);
ASSERT_TRUE(params.iterations > 0);
std::stringstream vstrstr;
......@@ -77,9 +76,8 @@ bool PointSpritesBenchmark::initializeBenchmark()
if (params.numVaryings > static_cast<unsigned int>(maxVaryings))
{
std::cerr << "Varying count (" << params.numVaryings << ")"
<< " exceeds maximum varyings: " << maxVaryings << std::endl;
return false;
FAIL() << "Varying count (" << params.numVaryings << ")"
<< " exceeds maximum varyings: " << maxVaryings << std::endl;
}
vstrstr << "attribute vec2 vPosition;\n"
......@@ -124,10 +122,7 @@ bool PointSpritesBenchmark::initializeBenchmark()
"}\n";
mProgram = CompileProgram(vstrstr.str(), fstrstr.str());
if (!mProgram)
{
return false;
}
ASSERT_TRUE(mProgram != 0);
// Use the program object
glUseProgram(mProgram);
......@@ -145,10 +140,7 @@ bool PointSpritesBenchmark::initializeBenchmark()
glBufferData(GL_ARRAY_BUFFER, vertexPositions.size() * sizeof(float), &vertexPositions[0], GL_STATIC_DRAW);
int positionLocation = glGetAttribLocation(mProgram, "vPosition");
if (positionLocation == -1)
{
return false;
}
ASSERT_TRUE(positionLocation != -1);
glVertexAttribPointer(positionLocation, 2, GL_FLOAT, GL_FALSE, 0, NULL);
glEnableVertexAttribArray(positionLocation);
......@@ -157,20 +149,11 @@ bool PointSpritesBenchmark::initializeBenchmark()
glViewport(0, 0, getWindow()->getWidth(), getWindow()->getHeight());
int pointSizeLocation = glGetUniformLocation(mProgram, "uPointSize");
if (pointSizeLocation == -1)
{
return false;
}
ASSERT_TRUE(pointSizeLocation != -1);
glUniform1f(pointSizeLocation, params.size);
GLenum glErr = glGetError();
if (glErr != GL_NO_ERROR)
{
return false;
}
return true;
ASSERT_GL_NO_ERROR();
}
void PointSpritesBenchmark::destroyBenchmark()
......@@ -194,6 +177,8 @@ void PointSpritesBenchmark::drawBenchmark()
//TODO(jmadill): Indexed point rendering. ANGLE is bad at this.
glDrawArrays(GL_POINTS, 0, params.count);
}
ASSERT_GL_NO_ERROR();
}
PointSpritesParams D3D11Params()
......
......@@ -8,7 +8,6 @@
//
#include <sstream>
#include <cassert>
#include "ANGLEPerfTest.h"
#include "shader_utils.h"
......@@ -34,7 +33,7 @@ class TexSubImageBenchmark : public ANGLERenderTest,
public:
TexSubImageBenchmark();
bool initializeBenchmark() override;
void initializeBenchmark() override;
void destroyBenchmark() override;
void beginDrawBenchmark() override;
void drawBenchmark() override;
......@@ -107,7 +106,7 @@ GLuint TexSubImageBenchmark::createTexture()
return texture;
}
bool TexSubImageBenchmark::initializeBenchmark()
void TexSubImageBenchmark::initializeBenchmark()
{
const auto &params = GetParam();
......@@ -135,10 +134,7 @@ bool TexSubImageBenchmark::initializeBenchmark()
);
mProgram = CompileProgram(vs, fs);
if (!mProgram)
{
return false;
}
ASSERT_TRUE(mProgram != 0);
// Get the attribute locations
mPositionLoc = glGetAttribLocation(mProgram, "a_position");
......@@ -189,7 +185,7 @@ bool TexSubImageBenchmark::initializeBenchmark()
}
}
return true;
ASSERT_GL_NO_ERROR();
}
void TexSubImageBenchmark::destroyBenchmark()
......@@ -230,19 +226,26 @@ void TexSubImageBenchmark::beginDrawBenchmark()
// Set the texture sampler to texture unit to 0
glUniform1i(mSamplerLoc, 0);
ASSERT_GL_NO_ERROR();
}
void TexSubImageBenchmark::drawBenchmark()
{
const auto &params = GetParam();
glTexSubImage2D(GL_TEXTURE_2D, 0,
rand() % (params.imageWidth - params.subImageWidth),
rand() % (params.imageHeight - params.subImageHeight),
params.subImageWidth, params.subImageHeight,
GL_RGBA, GL_UNSIGNED_BYTE, mPixels);
for (unsigned int iteration = 0; iteration < params.iterations; ++iteration)
{
glTexSubImage2D(GL_TEXTURE_2D, 0,
rand() % (params.imageWidth - params.subImageWidth),
rand() % (params.imageHeight - params.subImageHeight),
params.subImageWidth, params.subImageHeight,
GL_RGBA, GL_UNSIGNED_BYTE, mPixels);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
}
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
ASSERT_GL_NO_ERROR();
}
TexSubImageParams D3D11Params()
......
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