mesa: fix texenv generation when num color bufs == 0

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
b6b9b17d27).
This commit is contained in:
Brian Paul
2010-07-02 10:16:05 -06:00
parent 7a5a0b205e
commit 6e83420ee0

View 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