mesa: Fix fragment.color (no index) writes with OPTION ARB_draw_buffers.
authorEric Anholt <eric@anholt.net>
Wed, 20 Apr 2011 23:49:19 +0000 (16:49 -0700)
committerEric Anholt <eric@anholt.net>
Sat, 23 Apr 2011 20:21:57 +0000 (13:21 -0700)
Fixes a bug in Trine where fragment.color would write
FRAG_RESULT_COLOR (which is interpreted by drivers as being the "write
this to all color buffers" option) instead of FRAG_RESULT_DATA0 (just
the first target).

Fixes piglit ATI_draw_buffers/arbfp-no-index.

src/mesa/program/program_parse.y

index b35bc5a7caeb6007e517da42880b9c418b3dfd06..85c783dd637c50ab27b9dbf835a29dfff7db95d4 100644 (file)
@@ -2060,9 +2060,14 @@ resultColBinding: COLOR optResultFaceType optResultColorType
 
 optResultFaceType:
        {
-          $$ = (state->mode == ARB_vertex)
-             ? VERT_RESULT_COL0
-             : FRAG_RESULT_COLOR;
+          if (state->mode == ARB_vertex) {
+             $$ = VERT_RESULT_COL0;
+          } else {
+             if (state->option.DrawBuffers)
+                $$ = FRAG_RESULT_DATA0;
+             else
+                $$ = FRAG_RESULT_COLOR;
+          }
        }
        | '[' INTEGER ']'
        {