glsl: don't attempt to link empty program
authorTimothy Arceri <timothy.arceri@collabora.com>
Mon, 25 Jan 2016 10:56:18 +0000 (21:56 +1100)
committerTimothy Arceri <timothy.arceri@collabora.com>
Tue, 9 Feb 2016 11:44:02 +0000 (22:44 +1100)
commit76cfb472077dc83c892b4cddf79333341deaa7b5
treeb6cf07c05453227945266a5de7842e4e81a37502
parent371c4b3c48f665d530bc0c95990ef47f0e4c1b87
glsl: don't attempt to link empty program

Previously an empty program would go through the entire
link_shaders() function and we would have to be careful
not to cause a segfault.

In core profile also now set link_status to false by
generating an error, it was previously set to true.

From Section 7.3 (PROGRAM OBJECTS) of the OpenGL 4.5 spec:

   "Linking can fail for a variety of reasons as specified in the
   OpenGL Shading Language Specification, as well as any of the
   following reasons:

    - No shader objects are attached to program."

V2: Only generate an error in core profile and add spec quote (Ian)

V3: generate error in ES too, remove previous check which was only
applying the rule to GL 4.5/ES 3.1 and above. My understand is that
this spec change is clarifying previously undefined behaviour and
therefore should be applied retrospectively. The ES CTS tests for
this are in ES 2 I suspect it was passing because it would have
generated an error for not having both a vertex and fragment shader.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/compiler/glsl/linker.cpp