[Mesa-dev] Spec bug? Transform feedback after tessellation control shader

Marek Olšák maraeo at gmail.com
Tue Mar 17 11:33:13 PDT 2015


Hi,

The GL 4.5 Core spec is inconsistent. The "11.1.2.1 Output Variables"
section says that transform feedback is allowed after a tessellation
control shader if a tessellation evaluation shader isn't present:

"Each program object can specify a set of output variables from one
shader to be recorded in transform feedback mode (see section 13.2).
The variables that can be recorded are those emitted by the first
active shader, in order, from the following list:
* geometry shader
* tessellation evaluation shader
* tessellation control shader
* vertex shader"

Even glTransformFeedbackVaryings allows it:

"If the set of output variables to record in transform feedback mode
is specified by TransformFeedbackVaryings, a program will fail to link
if:
* the count specified by TransformFeedbackVaryings is non-zero, but the
program object has no vertex, tessellation control, tessellation evaluation, or
geometry shader;"

However, the "13.2 Transform Feedback" section doesn't mention any
tessellation control shader:

"The data captured in transform feedback mode depends on the active
programs on each of the shader stages. If a program is active for the
geometry shader stage, transform feedback captures the vertices of
each primitive emitted by the geometry shader. Otherwise, if a program
is active for the tessellation evaluation shader stage, transform
feedback captures each primitive produced by the tessellation
primitive generator, whose vertices are processed by the tessellation
evaluation shader. Otherwise, transform feedback captures each
primitive processed by the vertex shader."

Also, glBeginTransformFeedback doesn't allow GL_PATCHES, which is the
only output primitive type of the tessellation control shader:

"primitiveMode must be TRIANGLES, LINES, or POINTS, and specifies the
output type of primitives that will be recorded into the buffer
objects bound for transform feedback"

The question is: Is transform feedback really allowed after the
tessellation control shader? I hope not, because our hardware can't do
it.

Thanks,

Marek

PS: The spec mentions "tesellation shader" twice. There is no
"tesellation shader" in OpenGL even if you ignore the bad spelling.


More information about the mesa-dev mailing list