mesa/st: set the color write cbuf property for fragColor writes
authorDave Airlie <airlied@redhat.com>
Sat, 18 Dec 2010 00:36:55 +0000 (10:36 +1000)
committerDave Airlie <airlied@redhat.com>
Thu, 23 Dec 2010 21:19:58 +0000 (07:19 +1000)
src/mesa/state_tracker/st_program.c

index cfdc96b9dbe31253cad6c8e1ac499c57a98460db..e9e05acf41cfb3581c9e20038e27f48368602ad0 100644 (file)
@@ -444,6 +444,7 @@ st_translate_fragment_program(struct st_context *st,
       enum pipe_error error;
       const GLbitfield inputsRead = stfp->Base.Base.InputsRead;
       struct ureg_program *ureg;
+      GLboolean write_all = GL_FALSE;
 
       ubyte input_semantic_name[PIPE_MAX_SHADER_INPUTS];
       ubyte input_semantic_index[PIPE_MAX_SHADER_INPUTS];
@@ -568,6 +569,8 @@ st_translate_fragment_program(struct st_context *st,
                   /* handled above */
                   assert(0);
                   break;
+               case FRAG_RESULT_COLOR:
+                  write_all = GL_TRUE; /* fallthrough */
                default:
                   assert(attr == FRAG_RESULT_COLOR ||
                          (FRAG_RESULT_DATA0 <= attr && attr < FRAG_RESULT_MAX));
@@ -592,6 +595,8 @@ st_translate_fragment_program(struct st_context *st,
          _mesa_print_program_parameters(st->ctx, &stfp->Base.Base);
          debug_printf("\n");
       }
+      if (write_all == GL_TRUE)
+         ureg_property_fs_color0_writes_all_cbufs(ureg, 1);
 
       error = st_translate_mesa_program(st->ctx,
                                         TGSI_PROCESSOR_FRAGMENT,