mesa: fix texenv generation when num color bufs == 0
authorBrian Paul <brianp@vmware.com>
Fri, 2 Jul 2010 16:16:05 +0000 (10:16 -0600)
committerBrian Paul <brianp@vmware.com>
Fri, 2 Jul 2010 16:16:08 +0000 (10:16 -0600)
Before, if there were no color buffers enabled (with glDrawBuffers(GL_NONE))
when the texenv program was generated, we'd emit writes to OUTPUT[1] but
the OutputsWritten mask was 0.  This inconsistency caused an assertion to
fail later in the Mesa->TGSI translation.

Fixes fd.o bug 28169

NOTE: this is a candidate for the 7.8 branch (and depends on commit
b6b9b17d27c570cc99ae339e595cf2f63ca5e8d7).

src/mesa/main/texenvprogram.c

index 6aa89d1e6199cf1bb7be5cb71785404b565973ef..9fa8f02a8b053ebba5d534d5894f61ec04f1baa9 100644 (file)
@@ -1203,11 +1203,14 @@ emit_texenv(struct texenv_fragment_program *p, GLuint unit)
    else
       alpha_saturate = GL_FALSE;
 
-   /* If this is the very last calculation, emit direct to output reg:
+   /* If this is the very last calculation (and various other conditions
+    * are met), emit directly to the color output register.  Otherwise,
+    * emit to a temporary register.
     */
    if (key->separate_specular ||
        unit != p->last_tex_stage ||
        alpha_shift ||
+       key->num_draw_buffers != 1 ||
        rgb_shift)
       dest = get_temp( p );
    else