Commit e49058e7 by Martin Radev Committed by Commit Bot

D3D11: Enable multiview performance tests

The patch adds D3D11 as a testable platform to the multiview performance tests. BUG=angleproject:2062 TEST=angle_perftests Change-Id: I2266073860fd53f546ce9a414bc343b582c77f70 Reviewed-on: https://chromium-review.googlesource.com/645849Reviewed-by: 's avatarOlli Etuaho <oetuaho@nvidia.com> Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
parent 855d964b
...@@ -49,7 +49,7 @@ struct Vertex ...@@ -49,7 +49,7 @@ struct Vertex
enum class MultiviewOption enum class MultiviewOption
{ {
NoAcceleration, NoAcceleration,
SelectViewportInVertexShader, InstancedMultiview,
Unspecified Unspecified
}; };
...@@ -62,7 +62,6 @@ struct MultiviewPerfParams final : public RenderTestParams ...@@ -62,7 +62,6 @@ struct MultiviewPerfParams final : public RenderTestParams
minorVersion = 0; minorVersion = 0;
windowWidth = 64; windowWidth = 64;
windowHeight = 64; windowHeight = 64;
eglParameters = egl_platform::OPENGL();
multiviewOption = MultiviewOption::Unspecified; multiviewOption = MultiviewOption::Unspecified;
numViews = 2; numViews = 2;
} }
...@@ -75,8 +74,8 @@ struct MultiviewPerfParams final : public RenderTestParams ...@@ -75,8 +74,8 @@ struct MultiviewPerfParams final : public RenderTestParams
case MultiviewOption::NoAcceleration: case MultiviewOption::NoAcceleration:
name += "_no_acc"; name += "_no_acc";
break; break;
case MultiviewOption::SelectViewportInVertexShader: case MultiviewOption::InstancedMultiview:
name += "_viewport_in_vs"; name += "_instanced_multiview";
break; break;
default: default:
UNREACHABLE(); UNREACHABLE();
...@@ -183,7 +182,7 @@ void MultiviewBenchmark::initializeBenchmark() ...@@ -183,7 +182,7 @@ void MultiviewBenchmark::initializeBenchmark()
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D,
mDepthTexture, 0); mDepthTexture, 0);
break; break;
case MultiviewOption::SelectViewportInVertexShader: case MultiviewOption::InstancedMultiview:
{ {
const int widthPerView = params->windowWidth / params->numViews; const int widthPerView = params->windowWidth / params->numViews;
std::vector<GLint> viewportOffsets(2 * params->numViews); std::vector<GLint> viewportOffsets(2 * params->numViews);
...@@ -228,7 +227,7 @@ void MultiviewBenchmark::drawBenchmark() ...@@ -228,7 +227,7 @@ void MultiviewBenchmark::drawBenchmark()
renderScene(); renderScene();
} }
break; break;
case MultiviewOption::SelectViewportInVertexShader: case MultiviewOption::InstancedMultiview:
glViewport(0, 0, viewWidth, viewHeight); glViewport(0, 0, viewWidth, viewHeight);
glScissor(0, 0, viewWidth, viewHeight); glScissor(0, 0, viewWidth, viewHeight);
renderScene(); renderScene();
...@@ -459,19 +458,23 @@ void MultiviewGPUBoundBenchmark::renderScene() ...@@ -459,19 +458,23 @@ void MultiviewGPUBoundBenchmark::renderScene()
glDrawArrays(GL_TRIANGLES, 0, viewWidth * viewHeight * 6); glDrawArrays(GL_TRIANGLES, 0, viewWidth * viewHeight * 6);
} }
MultiviewPerfParams SmallWorkload(MultiviewOption multiviewOption) MultiviewPerfParams SmallWorkload(MultiviewOption multiviewOption,
const EGLPlatformParameters &eglParameters)
{ {
MultiviewPerfParams params; MultiviewPerfParams params;
params.multiviewOption = multiviewOption; params.multiviewOption = multiviewOption;
params.eglParameters = eglParameters;
params.windowWidth = 64; params.windowWidth = 64;
params.windowHeight = 64; params.windowHeight = 64;
return params; return params;
} }
MultiviewPerfParams BigWorkload(MultiviewOption multiviewOption) MultiviewPerfParams BigWorkload(MultiviewOption multiviewOption,
const EGLPlatformParameters &eglParameters)
{ {
MultiviewPerfParams params; MultiviewPerfParams params;
params.multiviewOption = multiviewOption; params.multiviewOption = multiviewOption;
params.eglParameters = eglParameters;
params.windowWidth = 1024; params.windowWidth = 1024;
params.windowHeight = 768; params.windowHeight = 768;
return params; return params;
...@@ -483,8 +486,10 @@ TEST_P(MultiviewCPUBoundBenchmark, Run) ...@@ -483,8 +486,10 @@ TEST_P(MultiviewCPUBoundBenchmark, Run)
} }
ANGLE_INSTANTIATE_TEST(MultiviewCPUBoundBenchmark, ANGLE_INSTANTIATE_TEST(MultiviewCPUBoundBenchmark,
SmallWorkload(MultiviewOption::NoAcceleration), SmallWorkload(MultiviewOption::NoAcceleration, egl_platform::OPENGL()),
SmallWorkload(MultiviewOption::SelectViewportInVertexShader)); SmallWorkload(MultiviewOption::InstancedMultiview, egl_platform::OPENGL()),
SmallWorkload(MultiviewOption::NoAcceleration, egl_platform::D3D11()),
SmallWorkload(MultiviewOption::InstancedMultiview, egl_platform::D3D11()));
TEST_P(MultiviewGPUBoundBenchmark, Run) TEST_P(MultiviewGPUBoundBenchmark, Run)
{ {
...@@ -492,7 +497,9 @@ TEST_P(MultiviewGPUBoundBenchmark, Run) ...@@ -492,7 +497,9 @@ TEST_P(MultiviewGPUBoundBenchmark, Run)
} }
ANGLE_INSTANTIATE_TEST(MultiviewGPUBoundBenchmark, ANGLE_INSTANTIATE_TEST(MultiviewGPUBoundBenchmark,
BigWorkload(MultiviewOption::NoAcceleration), BigWorkload(MultiviewOption::NoAcceleration, egl_platform::OPENGL()),
BigWorkload(MultiviewOption::SelectViewportInVertexShader)); BigWorkload(MultiviewOption::InstancedMultiview, egl_platform::OPENGL()),
BigWorkload(MultiviewOption::NoAcceleration, egl_platform::D3D11()),
BigWorkload(MultiviewOption::InstancedMultiview, egl_platform::D3D11()));
} // anonymous namespace } // anonymous namespace
\ No newline at end of file
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