mesa: Document reasons for allowing XFB drawing modes in GLES 3.1 w/GL_OES_geometry_shader
Originally this patch added the checks to allow the draw calls with XFB,
but commit 2dabd497
beat me to it.
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
aa228eb1a6
commit
658e90f9a8
|
@ -396,12 +396,30 @@ validate_DrawElements_common(struct gl_context *ctx,
|
|||
const GLvoid *indices,
|
||||
const char *caller)
|
||||
{
|
||||
/* From the GLES3 specification, section 2.14.2 (Transform Feedback
|
||||
* Primitive Capture):
|
||||
/* Section 2.14.2 (Transform Feedback Primitive Capture) of the OpenGL ES
|
||||
* 3.1 spec says:
|
||||
*
|
||||
* The error INVALID_OPERATION is also generated by DrawElements,
|
||||
* DrawElementsInstanced, and DrawRangeElements while transform feedback
|
||||
* is active and not paused, regardless of mode.
|
||||
*
|
||||
* The OES_geometry_shader_spec says:
|
||||
*
|
||||
* Issues:
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* (13) Does this extension change how transform feedback operates
|
||||
* compared to unextended OpenGL ES 3.0 or 3.1?
|
||||
*
|
||||
* RESOLVED: Yes... Since we no longer require being able to predict how
|
||||
* much geometry will be generated, we also lift the restriction that
|
||||
* only DrawArray* commands are supported and also support the
|
||||
* DrawElements* commands for transform feedback.
|
||||
*
|
||||
* This should also be reflected in the body of the spec, but that appears
|
||||
* to have been overlooked. The body of the spec only explicitly allows
|
||||
* the indirect versions.
|
||||
*/
|
||||
if (_mesa_is_gles3(ctx) && !ctx->Extensions.OES_geometry_shader &&
|
||||
_mesa_is_xfb_active_and_unpaused(ctx)) {
|
||||
|
@ -730,6 +748,17 @@ valid_draw_indirect(struct gl_context *ctx,
|
|||
*
|
||||
* "An INVALID_OPERATION error is generated if
|
||||
* transform feedback is active and not paused."
|
||||
*
|
||||
* The OES_geometry_shader spec says:
|
||||
*
|
||||
* On p. 250 in the errors section for the DrawArraysIndirect command,
|
||||
* and on p. 254 in the errors section for the DrawElementsIndirect
|
||||
* command, delete the errors which state:
|
||||
*
|
||||
* "An INVALID_OPERATION error is generated if transform feedback is
|
||||
* active and not paused."
|
||||
*
|
||||
* (thus allowing transform feedback to work with indirect draw commands).
|
||||
*/
|
||||
if (_mesa_is_gles31(ctx) && !ctx->Extensions.OES_geometry_shader &&
|
||||
_mesa_is_xfb_active_and_unpaused(ctx)) {
|
||||
|
|
Loading…
Reference in New Issue