Adding new extension GL_OVR_multiview
GL_OVR_multiview functions exactly the same as GL_OVR_multiview2.
All GL_OVR_multiview2 tests now also repeat the same test using GL_OVR_multiview
Bug: angleproject:3341
Change-Id: I7e5294fb6bbf7692535174a15da6a42e1b5fc4e2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1575904
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/tests/test_utils/MultiviewTest.cpp b/src/tests/test_utils/MultiviewTest.cpp
index aa2f7aa..25d419d 100644
--- a/src/tests/test_utils/MultiviewTest.cpp
+++ b/src/tests/test_utils/MultiviewTest.cpp
@@ -14,11 +14,27 @@
namespace angle
{
-GLuint CreateSimplePassthroughProgram(int numViews)
+GLuint CreateSimplePassthroughProgram(int numViews, ExtensionName multiviewExtension)
{
+ std::string ext;
+ switch (multiviewExtension)
+ {
+ case multiview:
+ ext = "GL_OVR_multiview";
+ break;
+ case multiview2:
+ ext = "GL_OVR_multiview2";
+ break;
+ default:
+ // Unknown extension.
+ break;
+ }
+
const std::string vsSource =
"#version 300 es\n"
- "#extension GL_OVR_multiview2 : require\n"
+ "#extension " +
+ ext +
+ " : require\n"
"layout(num_views = " +
ToString(numViews) +
") in;\n"
@@ -29,16 +45,18 @@
" gl_Position = vec4(vPosition.xy, 0.0, 1.0);\n"
"}\n";
- constexpr char kFS[] =
+ const std::string fsSource =
"#version 300 es\n"
- "#extension GL_OVR_multiview2 : require\n"
+ "#extension " +
+ ext +
+ " : require\n"
"precision mediump float;\n"
"out vec4 col;\n"
"void main()\n"
"{\n"
" col = vec4(0,1,0,1);\n"
"}\n";
- return CompileProgram(vsSource.c_str(), kFS);
+ return CompileProgram(vsSource.c_str(), fsSource.c_str());
}
void CreateMultiviewBackingTextures(int samples,
@@ -210,22 +228,39 @@
{
os << "_vertex_shader";
}
+ if (params.mMultiviewExtension)
+ {
+ os << "_multiview";
+ }
+ else
+ {
+ os << "_multiview2";
+ }
return os;
}
-MultiviewImplementationParams VertexShaderOpenGL(GLint majorVersion, GLint minorVersion)
+MultiviewImplementationParams VertexShaderOpenGL(GLint majorVersion,
+ GLint minorVersion,
+ ExtensionName multiviewExtension)
{
- return MultiviewImplementationParams(majorVersion, minorVersion, false, egl_platform::OPENGL());
+ return MultiviewImplementationParams(majorVersion, minorVersion, false, egl_platform::OPENGL(),
+ multiviewExtension);
}
-MultiviewImplementationParams VertexShaderD3D11(GLint majorVersion, GLint minorVersion)
+MultiviewImplementationParams VertexShaderD3D11(GLint majorVersion,
+ GLint minorVersion,
+ ExtensionName multiviewExtension)
{
- return MultiviewImplementationParams(majorVersion, minorVersion, false, egl_platform::D3D11());
+ return MultiviewImplementationParams(majorVersion, minorVersion, false, egl_platform::D3D11(),
+ multiviewExtension);
}
-MultiviewImplementationParams GeomShaderD3D11(GLint majorVersion, GLint minorVersion)
+MultiviewImplementationParams GeomShaderD3D11(GLint majorVersion,
+ GLint minorVersion,
+ ExtensionName multiviewExtension)
{
- return MultiviewImplementationParams(majorVersion, minorVersion, true, egl_platform::D3D11());
+ return MultiviewImplementationParams(majorVersion, minorVersion, true, egl_platform::D3D11(),
+ multiviewExtension);
}
void MultiviewTest::overrideWorkaroundsD3D(WorkaroundsD3D *workarounds)