diff options
author | Eric Anholt <[email protected]> | 2011-04-20 16:49:19 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2011-04-23 13:21:57 -0700 |
commit | d7f4c4e1b187552ede397f00fb56a6f0bb724ce1 (patch) | |
tree | 063b79e932c5b46181516edd961dfcbf64d0466b /src/mesa/program/program_parse.y | |
parent | 79bde19ef9e13d5db30d0516d9e7eae6a3a8d32a (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.
Diffstat (limited to 'src/mesa/program/program_parse.y')
-rw-r--r-- | 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 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 ']' { |