Mesa (master): mesa: Fix fragment.color (no index) writes with OPTION ARB_draw_buffers.

Eric Anholt anholt at kemper.freedesktop.org
Sat Apr 23 13:23:06 PDT 2011


Module: Mesa
Branch: master
Commit: d7f4c4e1b187552ede397f00fb56a6f0bb724ce1
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d7f4c4e1b187552ede397f00fb56a6f0bb724ce1

Author: Eric Anholt <eric at anholt.net>
Date:   Wed Apr 20 16:49:19 2011 -0700

mesa: Fix fragment.color (no index) writes with OPTION ARB_draw_buffers.

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 |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/mesa/program/program_parse.y b/src/mesa/program/program_parse.y
index b35bc5a..85c783d 100644
--- a/src/mesa/program/program_parse.y
+++ b/src/mesa/program/program_parse.y
@@ -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 ']'
 	{



More information about the mesa-commit mailing list