Commit a408ce83 by Shahbaz Youssefi Committed by Commit Bot

Fix geometry shader draw mode validation

The draw mode (as passed to glDrawArrays) was being compared with the transform feedback mode in the presence of geometry shaders, but the two are completely unrelated. Bug: angleproject:5579 Change-Id: I03bff97f79fe8d8a4354a6ea3abfed58c1e600eb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2653907 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarTim Van Patten <timvp@google.com>
parent 07f16f00
......@@ -9232,19 +9232,6 @@ void StateCache::updateValidDrawModes(Context *context)
mCachedValidDrawModes[curTransformFeedback->getPrimitiveMode()] = true;
return;
}
// EXT_geometry_shader validation text:
// When transform feedback is active and not paused, all geometric primitives generated must
// be compatible with the value of <primitiveMode> passed to BeginTransformFeedback. If a
// geometry shader is active, the type of primitive emitted by that shader is used instead
// of the <mode> parameter passed to drawing commands for the purposes of this error check.
// Any primitive type may be used while transform feedback is paused.
bool pointsOK = curTransformFeedback->getPrimitiveMode() == PrimitiveMode::Points;
bool linesOK = curTransformFeedback->getPrimitiveMode() == PrimitiveMode::Lines;
bool trisOK = curTransformFeedback->getPrimitiveMode() == PrimitiveMode::Triangles;
setValidDrawModes(pointsOK, linesOK, trisOK, false, false, false);
return;
}
if (!programExecutable || !programExecutable->hasLinkedShaderStage(ShaderType::Geometry))
......
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