glsl: look up for transform feedback varyings after linking
authorJuan A. Suarez Romero <jasuarez@igalia.com>
Thu, 6 Jul 2017 08:35:37 +0000 (08:35 +0000)
committerJuan A. Suarez Romero <jasuarez@igalia.com>
Wed, 2 Aug 2017 08:04:12 +0000 (10:04 +0200)
Check if shaders have transform feedback varyings also after the
post-link step.

This fixes:
KHR-GL45.enhanced_layouts.xfb_vertex_streams
piglit/spec/arb_enhanced_layouts/gs-stream-location-aliasing

v2: add claryfing comments (Timothy)

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/compiler/glsl/glsl_to_nir.cpp

index 4b3dbcff17b9bc1692b385eaa66a9cfd367434c4..331438a18357cde48ed4d4921ad87f91eba4b7e9 100644 (file)
@@ -169,9 +169,16 @@ glsl_to_nir(const struct gl_shader_program *shader_prog,
    shader->info.name = ralloc_asprintf(shader, "GLSL%d", shader_prog->Name);
    if (shader_prog->Label)
       shader->info.label = ralloc_strdup(shader, shader_prog->Label);
+
+   /* Check for transform feedback varyings specified via the API */
    shader->info.has_transform_feedback_varyings =
       shader_prog->TransformFeedback.NumVarying > 0;
 
+   /* Check for transform feedback varyings specified in the Shader */
+   if (shader_prog->last_vert_prog)
+      shader->info.has_transform_feedback_varyings |=
+         shader_prog->last_vert_prog->sh.LinkedTransformFeedback->NumVarying > 0;
+
    return shader;
 }