Add stubs for primitive restart caps.
Allow dEQP to reset this particular state variable, while still
throwing an UNIMPLEMENTED error if we try to render with primitive
restart enabled.
BUG=angle:901
Change-Id: I1ab46ff4d8bff2775225b083f08d156b9422b9c5
Reviewed-on: https://chromium-review.googlesource.com/244840
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/State.cpp b/src/libANGLE/State.cpp
index ae79782..cbe81fa 100644
--- a/src/libANGLE/State.cpp
+++ b/src/libANGLE/State.cpp
@@ -141,6 +141,8 @@
mReadFramebuffer = NULL;
mDrawFramebuffer = NULL;
+
+ mPrimitiveRestart = false;
}
void State::reset()
@@ -531,6 +533,16 @@
mBlend.dither = enabled;
}
+bool State::isPrimitiveRestartEnabled() const
+{
+ return mPrimitiveRestart;
+}
+
+void State::setPrimitiveRestart(bool enabled)
+{
+ mPrimitiveRestart = enabled;
+}
+
void State::setEnableFeature(GLenum feature, bool enabled)
{
switch (feature)
@@ -544,7 +556,7 @@
case GL_DEPTH_TEST: setDepthTest(enabled); break;
case GL_BLEND: setBlend(enabled); break;
case GL_DITHER: setDither(enabled); break;
- case GL_PRIMITIVE_RESTART_FIXED_INDEX: UNIMPLEMENTED(); break;
+ case GL_PRIMITIVE_RESTART_FIXED_INDEX: setPrimitiveRestart(enabled); break;
case GL_RASTERIZER_DISCARD: setRasterizerDiscard(enabled); break;
default: UNREACHABLE();
}
@@ -563,7 +575,7 @@
case GL_DEPTH_TEST: return isDepthTestEnabled();
case GL_BLEND: return isBlendEnabled();
case GL_DITHER: return isDitherEnabled();
- case GL_PRIMITIVE_RESTART_FIXED_INDEX: UNIMPLEMENTED(); return false;
+ case GL_PRIMITIVE_RESTART_FIXED_INDEX: return isPrimitiveRestartEnabled();
case GL_RASTERIZER_DISCARD: return isRasterizerDiscardEnabled();
default: UNREACHABLE(); return false;
}