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

Ian Romanick idr at freedesktop.org
Tue Mar 17 11:44:03 PDT 2015


On 03/17/2015 11:35 AM, Ilia Mirkin wrote:
> AFAIK you can't have TCS without TES. But you can have TES without TCS.

That much is for sure.  The ARB_tessellation_shader spec says the
following in the overview:

    "In this extension, patches may not be passed beyond
    the tessellation evaluation shader, and an error is generated if an
    application provides patches and the current program object contains no
    tessellation evaluation shader."

> On Tue, Mar 17, 2015 at 2:33 PM, Marek Olšák <maraeo at gmail.com> wrote:
>> 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.
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 



More information about the mesa-dev mailing list