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