Commit b4b53c5c by Jamie Madill

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/244840Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarZhenyao Mo <zmo@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 78d9fcf2
......@@ -141,6 +141,8 @@ void State::initialize(const Caps& caps, GLuint clientVersion)
mReadFramebuffer = NULL;
mDrawFramebuffer = NULL;
mPrimitiveRestart = false;
}
void State::reset()
......@@ -531,6 +533,16 @@ void State::setDither(bool enabled)
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 @@ void State::setEnableFeature(GLenum feature, bool enabled)
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 @@ bool State::getEnableFeature(GLenum feature)
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;
}
......
......@@ -57,6 +57,10 @@ class State
bool isRasterizerDiscardEnabled() const;
void setRasterizerDiscard(bool enabled);
// Primitive restart
bool isPrimitiveRestartEnabled() const;
void setPrimitiveRestart(bool enabled);
// Face culling state manipulation
bool isCullFaceEnabled() const;
void setCullFace(bool enabled);
......@@ -316,6 +320,8 @@ class State
PixelUnpackState mUnpack;
PixelPackState mPack;
bool mPrimitiveRestart;
};
}
......
......@@ -65,6 +65,12 @@ gl::Error RendererD3D::drawElements(const gl::Data &data,
const GLvoid *indices, GLsizei instances,
const RangeUI &indexRange)
{
if (data.state->isPrimitiveRestartEnabled())
{
UNIMPLEMENTED();
return gl::Error(GL_INVALID_OPERATION, "Primitive restart not implemented");
}
gl::Program *program = data.state->getProgram();
ASSERT(program != NULL);
......
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