ES31: Implement creation and attaching geometry shader on OpenGL
This patch intends to implement the creation of a geometry shader
and attaching a geometry shader to a program on OpenGL back-ends.
This patch also adds all geometry shader related dEQP-GLES31 test
failures to deqp_gles31_test_expectations.txt.
BUG=angleproject:1941
TEST=angle_end2end_tests
Change-Id: Ib0b497030255b15dacd967e48bc59eef0009af46
Reviewed-on: https://chromium-review.googlesource.com/757979
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/Compiler.cpp b/src/libANGLE/Compiler.cpp
index 3baa75c..236c7e1 100644
--- a/src/libANGLE/Compiler.cpp
+++ b/src/libANGLE/Compiler.cpp
@@ -50,7 +50,8 @@
mResources(),
mFragmentCompiler(nullptr),
mVertexCompiler(nullptr),
- mComputeCompiler(nullptr)
+ mComputeCompiler(nullptr),
+ mGeometryCompiler(nullptr)
{
ASSERT(state.getClientMajorVersion() == 2 || state.getClientMajorVersion() == 3);
@@ -129,6 +130,12 @@
{
mResources.MaxDrawBuffers = 1;
}
+
+ // Geometry Shader constants
+ mResources.OES_geometry_shader = extensions.geometryShader;
+ // TODO(jiawei.shao@intel.com): initialize all implementation dependent geometry shader limits.
+ mResources.MaxGeometryOutputVertices = extensions.maxGeometryOutputVertices;
+ mResources.MaxGeometryShaderInvocations = extensions.maxGeometryShaderInvocations;
}
Compiler::~Compiler()
@@ -183,6 +190,9 @@
case GL_COMPUTE_SHADER:
compiler = &mComputeCompiler;
break;
+ case GL_GEOMETRY_SHADER_EXT:
+ compiler = &mGeometryCompiler;
+ break;
default:
UNREACHABLE();
return nullptr;