[Mesa-dev] [PATCH 06/10] i965/fs: Add support for user-defined out variables.

Eric Anholt eric at anholt.net
Wed Nov 9 11:52:59 PST 2011


On Tue, 08 Nov 2011 19:21:59 -0800, Kenneth Graunke <kenneth at whitecape.org> wrote:
> On 11/04/2011 03:01 PM, Eric Anholt wrote:
> > Before, I was tracking the ir_variable * found for gl_FragColor or
> > gl_FragData[].  Instead, when visiting those variables, set up an
> > array of per-render-target fs_regs to copy the output data from.  This
> > cleans up the color emit path, while making handling of multiple
> > user-defined out variables easier.
> > 
> > Note that brw_type_for_base_type() now returns a sensible value for
> > arrays.  This probably obsoletes a bunch of type overrides we have
> > laying around.

> [snip]
> > @@ -1988,13 +1999,12 @@ fs_visitor::emit_fb_writes()
> >     }
> >  
> >     if (c->key.nr_color_regions == 0) {
> > -      if (c->key.alpha_test && (this->frag_color || this->frag_data)) {
> > +      if (c->key.alpha_test) {
> >  	 /* If the alpha test is enabled but there's no color buffer,
> >  	  * we still need to send alpha out the pipeline to our null
> >  	  * renderbuffer.
> >  	  */
> > -	 color.reg_offset += 3;
> > -	 emit_color_write(3, color_mrf, color);
> > +	 emit_color_write(0, 3, color_mrf);
> >        }
> 
> I'm a little concerned about removing reg_offset += 3.  This seems like
> a change in behavior (assigning all four instead of just alpha).  Was it
> wrong before/is this a bug fix?  Or, is this just simpler code (since
> the other three channels are ignored anyway)?

Even simpler explanation: The reg_offset increment by index value got
moved into emit_color_write() -- note a similar change above at the
other emit_color_write().
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20111109/92a22efc/attachment.pgp>


More information about the mesa-dev mailing list