mesa: allow _mesa_remove_output_reads() to work on fragment programs
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 12 Aug 2008 16:00:02 +0000 (10:00 -0600)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 12 Aug 2008 16:00:02 +0000 (10:00 -0600)
src/mesa/shader/programopt.c

index d6a323105515e28f4164c95280eaa15eeb5ade94..56f1eb832e9e259009ab42c16c7a8f685de11c25 100644 (file)
@@ -368,9 +368,9 @@ _mesa_count_texture_instructions(struct gl_program *prog)
 
 /**
  * Scan/rewrite program to remove reads of custom (output) registers.
- * The passed type has to be either PROGRAM_VARYING or PROGRAM_OUTPUT.
- * In GLSL vertex shaders, varying vars can be read and written.
- * Normally, vertex varying vars are implemented as output registers.
+ * The passed type has to be either PROGRAM_OUTPUT or PROGRAM_VARYING
+ * (for vertex shaders).
+ * In GLSL shaders, varying vars can be read and written.
  * On some hardware, trying to read an output register causes trouble.
  * So, rewrite the program to use a temporary register in this case.
  */
@@ -381,8 +381,8 @@ _mesa_remove_output_reads(struct gl_program *prog, enum register_file type)
    GLint outputMap[VERT_RESULT_MAX];
    GLuint numVaryingReads = 0;
 
-   assert(prog->Target == GL_VERTEX_PROGRAM_ARB);
    assert(type == PROGRAM_VARYING || type == PROGRAM_OUTPUT);
+   assert(prog->Target == GL_VERTEX_PROGRAM_ARB || type != PROGRAM_VARYING);
 
    for (i = 0; i < VERT_RESULT_MAX; i++)
       outputMap[i] = -1;