X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fi965%2Fbrw_cc.c;h=cc8e380c68bb2d06121ac1fe2267d0087c4292aa;hb=0be0ad5d58806bc12ec2c7bb3c00e7f8c7a6d6c4;hp=3e070f5591adabe1c307057848af39710b596696;hpb=b01ffb12ed82dcf435b186e2aff35e344a8a6ebe;p=mesa.git diff --git a/src/gallium/drivers/i965/brw_cc.c b/src/gallium/drivers/i965/brw_cc.c index 3e070f5591a..cc8e380c68b 100644 --- a/src/gallium/drivers/i965/brw_cc.c +++ b/src/gallium/drivers/i965/brw_cc.c @@ -32,7 +32,6 @@ #include "brw_context.h" #include "brw_state.h" -#include "brw_defines.h" static enum pipe_error prepare_cc_vp( struct brw_context *brw ) @@ -66,14 +65,33 @@ combine_cc3( struct brw_cc3 a, struct brw_cc3 b ) return ca.cc3; } +static INLINE struct brw_cc1 +combine_cc1( struct brw_cc1 a, struct brw_cc1 b ) +{ + union { struct brw_cc1 cc1; unsigned i; } ca, cb; + ca.cc1 = a; + cb.cc1 = b; + ca.i |= cb.i; + return ca.cc1; +} + +static INLINE struct brw_cc2 +combine_cc2( struct brw_cc2 a, struct brw_cc2 b ) +{ + union { struct brw_cc2 cc2; unsigned i; } ca, cb; + ca.cc2 = a; + cb.cc2 = b; + ca.i |= cb.i; + return ca.cc2; +} static int prepare_cc_unit( struct brw_context *brw ) { brw->cc.cc.cc0 = brw->curr.zstencil->cc0; - brw->cc.cc.cc1 = brw->curr.zstencil->cc1; - brw->cc.cc.cc2 = brw->curr.zstencil->cc2; + brw->cc.cc.cc1 = combine_cc1( brw->curr.zstencil->cc1, brw->curr.cc1_stencil_ref ); + brw->cc.cc.cc2 = combine_cc2( brw->curr.zstencil->cc2, brw->curr.blend->cc2 ); brw->cc.cc.cc3 = combine_cc3( brw->curr.zstencil->cc3, brw->curr.blend->cc3 ); - + brw->cc.cc.cc5 = brw->curr.blend->cc5; brw->cc.cc.cc6 = brw->curr.blend->cc6; brw->cc.cc.cc7 = brw->curr.zstencil->cc7;