summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2011-04-20 16:49:19 -0700
committerEric Anholt <eric@anholt.net>2011-04-23 13:21:57 -0700
commitd7f4c4e1b187552ede397f00fb56a6f0bb724ce1 (patch)
tree063b79e932c5b46181516edd961dfcbf64d0466b
parent79bde19ef9e13d5db30d0516d9e7eae6a3a8d32a (diff)
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.
-rw-r--r--src/mesa/program/program_parse.y11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/mesa/program/program_parse.y b/src/mesa/program/program_parse.y
index b35bc5a7cae..85c783dd637 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 ']'
{