[Mesa-dev] GLSL 1.40 and fixed function

Ian Romanick idr at freedesktop.org
Mon Apr 16 09:44:10 PDT 2012


On 04/15/2012 03:25 AM, nobled wrote:

> I'm not sure if I'm missing something, but the non-compatibility
> OpenGL 3.1 Specification seems pretty straightforward about this:
>
> page 42/55 section 2.11 "Vertex Shaders":
> "If the program object
> has no vertex shader, or no program object is currently in use, the
> results of vertex
> shader execution are undefined."
>
> page 160/173 section 3.9 "Fragment Shaders":
> "If the program
> object has no fragment shader, or no program object is currently in
> use, the results
> of fragment shader execution are undefined."
>
> page 45/58 section 2.11.2 "Program Objects":
> "If UseProgram is called with program set to 0, then the current
> rendering state refers to an invalid program object, and the results
> of vertex and
> fragment shader execution are undefined. However, this is not an error."

Right.  It looks like this language persists all the way through OpenGL 4.2.

I did a bit more spec spelunking, and it seems the only link error 
required by desktop OpenGL is for geometry shaders and tessellation shaders.

     "Linking will also fail if the program object contains objects
     to form a geometry shader (see section 2.12), and

         * the program contains no objects to form a vertex shader;

         ..."


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

         * ...

         * The program object contains objects to form a tessellation
           control shader (see section 2.12.1), and

             - the program is not separable and contains no objects
               to form a vertex shader;

         ..."

> I'm not sure if "undefined" is used in the "undefined rendering
> results" sense or the "summoning nasal demons" sense, though.

That's not defined. :p  Sorry, I couldn't resist.

Here's my new proposal:

     * Don't generate a linker error or warning for incomplete programs.

     * For draw calls that use incomplete programs, drop the rendering 
on the floor and emit a message to the debug log.


More information about the mesa-dev mailing list