Rename and reorganize MultiviewRenderTestBase
MultiviewRenderTestBase is renamed to MultiviewFramebufferTestBase
since the functionality it has is mostly to set up a framebuffer.
This cleans up the test class without including functional changes to
ease diagnosis of issues with resource init/teardown.
BUG=angleproject:2765
TEST=angle_end2end_tests
Change-Id: I0debd6a7a53a2e6bff7100d07b29313d66a79cb5
Reviewed-on: https://chromium-review.googlesource.com/1181052
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
diff --git a/src/tests/gl_tests/MultiviewDrawTest.cpp b/src/tests/gl_tests/MultiviewDrawTest.cpp
index c5717c4..9cc52ec 100644
--- a/src/tests/gl_tests/MultiviewDrawTest.cpp
+++ b/src/tests/gl_tests/MultiviewDrawTest.cpp
@@ -65,19 +65,19 @@
return os;
}
-class MultiviewRenderTestBase : public MultiviewTestBase
+class MultiviewFramebufferTestBase : public MultiviewTestBase
{
protected:
- MultiviewRenderTestBase(const PlatformParameters ¶ms, GLenum multiviewLayout)
+ MultiviewFramebufferTestBase(const PlatformParameters ¶ms, GLenum multiviewLayout)
: MultiviewTestBase(params),
- mMultiviewLayout(multiviewLayout),
mViewWidth(0),
mViewHeight(0),
- mNumViews(0)
+ mNumViews(0),
+ mMultiviewLayout(multiviewLayout)
{
}
- void RenderTestSetUp() { MultiviewTestBase::MultiviewTestBaseSetUp(); }
- void createFBO(int viewWidth, int height, int numViews, int numLayers, int baseViewIndex)
+ void FramebufferTestSetUp() { MultiviewTestBase::MultiviewTestBaseSetUp(); }
+ void updateFBOs(int viewWidth, int height, int numViews, int numLayers, int baseViewIndex)
{
ASSERT(numViews + baseViewIndex <= numLayers);
@@ -204,11 +204,13 @@
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
- void createFBO(int viewWidth, int height, int numViews)
+ void updateFBOs(int viewWidth, int height, int numViews)
{
- createFBO(viewWidth, height, numViews, numViews, 0);
+ updateFBOs(viewWidth, height, numViews, numViews, 0);
}
+ void bindMemberDrawFramebuffer() { glBindFramebuffer(GL_DRAW_FRAMEBUFFER, mDrawFramebuffer); }
+
GLColor GetViewColor(int x, int y, int view)
{
switch (mMultiviewLayout)
@@ -227,20 +229,22 @@
GLTexture mColorTexture;
GLTexture mDepthTexture;
- GLFramebuffer mDrawFramebuffer;
- std::vector<GLFramebuffer> mReadFramebuffer;
- GLenum mMultiviewLayout;
int mViewWidth;
int mViewHeight;
int mNumViews;
+
+ private:
+ GLFramebuffer mDrawFramebuffer;
+ std::vector<GLFramebuffer> mReadFramebuffer;
+ GLenum mMultiviewLayout;
};
-class MultiviewRenderTest : public MultiviewRenderTestBase,
+class MultiviewRenderTest : public MultiviewFramebufferTestBase,
public ::testing::TestWithParam<MultiviewRenderTestParams>
{
protected:
- MultiviewRenderTest() : MultiviewRenderTestBase(GetParam(), GetParam().mMultiviewLayout) {}
- void SetUp() override { MultiviewRenderTestBase::RenderTestSetUp(); }
+ MultiviewRenderTest() : MultiviewFramebufferTestBase(GetParam(), GetParam().mMultiviewLayout) {}
+ void SetUp() override { MultiviewFramebufferTestBase::FramebufferTestSetUp(); }
void overrideWorkaroundsD3D(WorkaroundsD3D *workarounds) override
{
@@ -288,7 +292,7 @@
return;
}
- createFBO(2, 1, 2);
+ updateFBOs(2, 1, 2);
mProgram = CompileProgram(kDualViewVSSource, kDualViewFSSource);
ASSERT_NE(mProgram, 0u);
glUseProgram(mProgram);
@@ -412,30 +416,30 @@
GLBuffer mVBO;
};
-class MultiviewSideBySideRenderTest : public MultiviewRenderTestBase,
+class MultiviewSideBySideRenderTest : public MultiviewFramebufferTestBase,
public ::testing::TestWithParam<MultiviewImplementationParams>
{
protected:
MultiviewSideBySideRenderTest()
- : MultiviewRenderTestBase(GetParam(), GL_FRAMEBUFFER_MULTIVIEW_SIDE_BY_SIDE_ANGLE)
+ : MultiviewFramebufferTestBase(GetParam(), GL_FRAMEBUFFER_MULTIVIEW_SIDE_BY_SIDE_ANGLE)
{
}
- void SetUp() override { MultiviewRenderTestBase::RenderTestSetUp(); }
+ void SetUp() override { MultiviewFramebufferTestBase::FramebufferTestSetUp(); }
void overrideWorkaroundsD3D(WorkaroundsD3D *workarounds) override
{
workarounds->selectViewInGeometryShader = GetParam().mForceUseGeometryShaderOnD3D;
}
};
-class MultiviewLayeredRenderTest : public MultiviewRenderTestBase,
+class MultiviewLayeredRenderTest : public MultiviewFramebufferTestBase,
public ::testing::TestWithParam<MultiviewImplementationParams>
{
protected:
MultiviewLayeredRenderTest()
- : MultiviewRenderTestBase(GetParam(), GL_FRAMEBUFFER_MULTIVIEW_LAYERED_ANGLE)
+ : MultiviewFramebufferTestBase(GetParam(), GL_FRAMEBUFFER_MULTIVIEW_LAYERED_ANGLE)
{
}
- void SetUp() override { MultiviewRenderTestBase::RenderTestSetUp(); }
+ void SetUp() override { MultiviewFramebufferTestBase::FramebufferTestSetUp(); }
void overrideWorkaroundsD3D(WorkaroundsD3D *workarounds) override
{
workarounds->selectViewInGeometryShader = GetParam().mForceUseGeometryShaderOnD3D;
@@ -859,7 +863,7 @@
" col = vec4(0,1,0,1);\n"
"}\n";
- createFBO(4, 1, 4);
+ updateFBOs(4, 1, 4);
ANGLE_GL_PROGRAM(program, vsSource, fsSource);
drawQuad(program, "vPosition", 0.0f, 1.0f, true);
@@ -920,7 +924,7 @@
const int kViewWidth = 2;
const int kViewHeight = 2;
const int kNumViews = 2;
- createFBO(kViewWidth, kViewHeight, kNumViews);
+ updateFBOs(kViewWidth, kViewHeight, kNumViews);
ANGLE_GL_PROGRAM(program, vsSource, fsSource);
drawQuadInstanced(program, "vPosition", 0.0f, 1.0f, true, 2u);
@@ -984,7 +988,7 @@
const int kViewWidth = 4;
const int kViewHeight = 4;
const int kNumViews = 2;
- createFBO(kViewWidth, kViewHeight, kNumViews);
+ updateFBOs(kViewWidth, kViewHeight, kNumViews);
ANGLE_GL_PROGRAM(program, vsSource, fsSource);
GLBuffer xOffsetVBO;
@@ -1033,7 +1037,7 @@
return;
}
- createFBO(1, 1, 2);
+ updateFBOs(1, 1, 2);
// Create multiview program.
const std::string &vs =
@@ -1126,7 +1130,7 @@
ASSERT_GL_NO_ERROR();
// Check that vertexAttribDivisor uses the number of views to update the divisor.
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, mDrawFramebuffer);
+ bindMemberDrawFramebuffer();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glUseProgram(program);
glVertexAttribDivisor(1, 1);
@@ -1146,7 +1150,7 @@
ASSERT_GL_NO_ERROR();
// Check that useProgram uses the number of views to update the divisor.
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, mDrawFramebuffer);
+ bindMemberDrawFramebuffer();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glUseProgram(program);
glDrawArraysInstanced(GL_TRIANGLES, 0, 6, 1);
@@ -1166,7 +1170,7 @@
{
// Call useProgram with vao[1] being active to guarantee that useProgram will adjust the
// divisor for vao[1] only.
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, mDrawFramebuffer);
+ bindMemberDrawFramebuffer();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBindVertexArray(vao[1]);
glUseProgram(program);
@@ -1211,7 +1215,7 @@
" col = vec4(1,0,0,0);\n"
"}\n";
ANGLE_GL_PROGRAM(program, vsSource, fsSource);
- createFBO(1, 1, 2);
+ updateFBOs(1, 1, 2);
GLuint result = drawAndRetrieveOcclusionQueryResult(program);
ASSERT_GL_NO_ERROR();
@@ -1246,7 +1250,7 @@
" col = vec4(1,0,0,0);\n"
"}\n";
ANGLE_GL_PROGRAM(program, vsSource, fsSource);
- createFBO(1, 1, 2);
+ updateFBOs(1, 1, 2);
GLuint result = drawAndRetrieveOcclusionQueryResult(program);
ASSERT_GL_NO_ERROR();
@@ -1281,7 +1285,7 @@
" col = vec4(1,0,0,0);\n"
"}\n";
ANGLE_GL_PROGRAM(program, vsSource, fsSource);
- createFBO(1, 1, 2);
+ updateFBOs(1, 1, 2);
GLuint result = drawAndRetrieveOcclusionQueryResult(program);
ASSERT_GL_NO_ERROR();
@@ -1429,7 +1433,7 @@
const int kViewWidth = 4;
const int kViewHeight = 2;
const int kNumViews = 2;
- createFBO(kViewWidth, kViewHeight, kNumViews);
+ updateFBOs(kViewWidth, kViewHeight, kNumViews);
std::vector<Vector2I> windowCoordinates = {Vector2I(0, 0), Vector2I(3, 1)};
std::vector<Vector2> vertexDataInClipSpace =
@@ -1464,7 +1468,7 @@
const int kViewWidth = 4;
const int kViewHeight = 2;
const int kNumViews = 2;
- createFBO(kViewWidth, kViewHeight, kNumViews);
+ updateFBOs(kViewWidth, kViewHeight, kNumViews);
std::vector<Vector2I> windowCoordinates = {Vector2I(0, 0), Vector2I(4, 0)};
std::vector<Vector2> vertexDataInClipSpace =
@@ -1501,7 +1505,7 @@
const int kViewWidth = 4;
const int kViewHeight = 2;
const int kNumViews = 2;
- createFBO(kViewWidth, kViewHeight, kNumViews);
+ updateFBOs(kViewWidth, kViewHeight, kNumViews);
std::vector<Vector2I> windowCoordinates = {Vector2I(0, 0), Vector2I(3, 0), Vector2I(3, 2)};
std::vector<Vector2> vertexDataInClipSpace =
@@ -1538,7 +1542,7 @@
const int kViewWidth = 4;
const int kViewHeight = 4;
const int kNumViews = 2;
- createFBO(kViewWidth, kViewHeight, kNumViews);
+ updateFBOs(kViewWidth, kViewHeight, kNumViews);
std::vector<Vector2I> windowCoordinates = {Vector2I(0, 0), Vector2I(3, 0), Vector2I(3, 3),
Vector2I(0, 3)};
@@ -1576,7 +1580,7 @@
const int kViewWidth = 2;
const int kViewHeight = 2;
const int kNumViews = 2;
- createFBO(kViewWidth, kViewHeight, kNumViews);
+ updateFBOs(kViewWidth, kViewHeight, kNumViews);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
@@ -1607,7 +1611,7 @@
const int kViewWidth = 2;
const int kViewHeight = 2;
const int kNumViews = 2;
- createFBO(kViewWidth, kViewHeight, kNumViews);
+ updateFBOs(kViewWidth, kViewHeight, kNumViews);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
@@ -1630,7 +1634,7 @@
return;
}
- createFBO(2, 1, 2);
+ updateFBOs(2, 1, 2);
GLint viewportOffsets[4] = {1, 0, 3, 0};
glFramebufferTextureMultiviewSideBySideANGLE(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
@@ -1780,7 +1784,7 @@
}
{
- createFBO(kViewWidth, kViewHeight, kNumViews);
+ updateFBOs(kViewWidth, kViewHeight, kNumViews);
drawQuadInstanced(program, "vPosition", 0.0f, 1.0f, true, 4u);
ASSERT_GL_NO_ERROR();
@@ -1794,7 +1798,7 @@
{
const int kNewNumViews = 3;
vsSource = generateVertexShaderSource(kNewNumViews);
- createFBO(kViewWidth, kViewHeight, kNewNumViews);
+ updateFBOs(kViewWidth, kViewHeight, kNewNumViews);
GLuint vs = CompileShader(GL_VERTEX_SHADER, vsSource);
ASSERT_NE(0u, vs);
@@ -1867,7 +1871,7 @@
// Create a program and fbo with N views and draw N instances of a point horizontally.
for (int numViews = 2; numViews <= 4; ++numViews)
{
- createFBO(4, 1, numViews);
+ updateFBOs(4, 1, numViews);
ASSERT_GL_NO_ERROR();
GLuint program = CreateSimplePassthroughProgram(numViews);
@@ -1929,7 +1933,7 @@
" }\n"
"}\n";
- createFBO(1, 1, 3);
+ updateFBOs(1, 1, 3);
ANGLE_GL_PROGRAM(program, vsSource, fsSource);
drawQuad(program, "vPosition", 0.0f, 1.0f, true);
@@ -1969,7 +1973,7 @@
" col = vec4(0,1,0,1);\n"
"}\n";
- createFBO(1, 1, 2, 4, 1);
+ updateFBOs(1, 1, 2, 4, 1);
ANGLE_GL_PROGRAM(program, vsSource, fsSource);
drawQuad(program, "vPosition", 0.0f, 1.0f, true);
@@ -2024,7 +2028,7 @@
" }\n"
"}\n";
- createFBO(1, 1, 2);
+ updateFBOs(1, 1, 2);
ANGLE_GL_PROGRAM(program, vsSource, fsSource);
drawQuad(program, "vPosition", 0.0f, 1.0f, true);
@@ -2070,7 +2074,7 @@
" }\n"
"}\n";
- createFBO(1, 1, 2);
+ updateFBOs(1, 1, 2);
ANGLE_GL_PROGRAM(program, vsSource, fsSource);
drawQuad(program, "vPosition", 0.0f, 1.0f, true);
@@ -2089,7 +2093,7 @@
return;
}
- createFBO(1, 1, 2);
+ updateFBOs(1, 1, 2);
// Create multiview program.
const std::string &vs =
@@ -2125,7 +2129,7 @@
ASSERT_GL_NO_ERROR();
// Draw and check that both views are rendered to.
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, mDrawFramebuffer);
+ bindMemberDrawFramebuffer();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
drawQuad(program, "vPosition", 0.0f, 1.0f, true);