Previously an SSO pipeline containing only a tessellation control shader
and a tessellation evaluation shader would not get locations assigned
for the TCS inputs. This would lead to assertion failures in some
piglit tests, such as arb_program_interface_query-resource-query.
That piglit test still fails on some tessellation related subtests.
Specifically, these subtests fail:
'GL_PROGRAM_INPUT(tcs) active resources' expected 2 but got 3
'GL_PROGRAM_INPUT(tcs) max length name' expected 12 but got 16
'GL_PROGRAM_INPUT(tcs,tes) active resources' expected 2 but got 3
'GL_PROGRAM_INPUT(tcs,tes) max length name' expected 12 but got 16
'GL_PROGRAM_OUTPUT(tcs) active resources' expected 15 but got 3
'GL_PROGRAM_OUTPUT(tcs) max length name' expected 23 but got 12
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Cc: mesa-stable@lists.freedesktop.org
*/
int next = last;
for (int i = next - 1; i >= 0; i--) {
- if (prog->_LinkedShaders[i] == NULL)
+ if (prog->_LinkedShaders[i] == NULL && i != 0)
continue;
gl_shader *const sh_i = prog->_LinkedShaders[i];
tfeedback_decls);
/* This must be done after all dead varyings are eliminated. */
- if (!check_against_output_limit(ctx, prog, sh_i))
- goto done;
+ if (sh_i != NULL) {
+ if (!check_against_output_limit(ctx, prog, sh_i)) {
+ goto done;
+ }
+ }
if (!check_against_input_limit(ctx, prog, sh_next))
goto done;