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/validationES2.cpp b/src/libANGLE/validationES2.cpp
index 7737131..cd835b3 100644
--- a/src/libANGLE/validationES2.cpp
+++ b/src/libANGLE/validationES2.cpp
@@ -4154,6 +4154,13 @@
}
break;
+ case GL_GEOMETRY_SHADER_EXT:
+ if (!context->getExtensions().geometryShader)
+ {
+ ANGLE_VALIDATION_ERR(context, InvalidEnum(), InvalidShaderType);
+ return false;
+ }
+ break;
default:
ANGLE_VALIDATION_ERR(context, InvalidEnum(), InvalidShaderType);
return false;
@@ -4344,6 +4351,15 @@
}
break;
}
+ case GL_GEOMETRY_SHADER_EXT:
+ {
+ if (programObject->getAttachedGeometryShader())
+ {
+ ANGLE_VALIDATION_ERR(context, InvalidOperation(), ShaderAttachmentHasShader);
+ return false;
+ }
+ break;
+ }
default:
UNREACHABLE();
break;
@@ -4967,6 +4983,11 @@
attachedShader = programObject->getAttachedComputeShader();
break;
}
+ case GL_GEOMETRY_SHADER_EXT:
+ {
+ attachedShader = programObject->getAttachedGeometryShader();
+ break;
+ }
default:
UNREACHABLE();
return false;