On Wednesday, April 01, 2015 06:19:16 PM Jason Ekstrand wrote: > --- > src/mesa/drivers/dri/i965/brw_fs.h | 2 +- > src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 16 +++++++++------- > 2 files changed, 10 insertions(+), 8 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_fs.h > b/src/mesa/drivers/dri/i965/brw_fs.h > index 278a8ee..4ea579d 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs.h > +++ b/src/mesa/drivers/dri/i965/brw_fs.h > @@ -378,7 +378,7 @@ public: > void emit_alpha_test(); > fs_inst *emit_single_fb_write(fs_reg color1, fs_reg color2, > fs_reg src0_alpha, unsigned components, > - bool use_2nd_half = false); > + unsigned exec_size, bool use_2nd_half = > false); > void emit_fb_writes(); > void emit_urb_writes(); > > diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp > b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp > index 0624528..31d2310 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp > @@ -3589,7 +3589,7 @@ fs_visitor::emit_alpha_test() > fs_inst * > fs_visitor::emit_single_fb_write(fs_reg color0, fs_reg color1, > fs_reg src0_alpha, unsigned components, > - bool use_2nd_half) > + unsigned exec_size, bool use_2nd_half) > { > assert(stage == MESA_SHADER_FRAGMENT); > brw_wm_prog_data *prog_data = (brw_wm_prog_data*) this->prog_data; > @@ -3597,7 +3597,7 @@ fs_visitor::emit_single_fb_write(fs_reg color0, fs_reg > color1, > > this->current_annotation = "FB write header"; > int header_size = 2; > - int reg_size = dispatch_width / 8; > + int reg_size = exec_size / 8; > > /* We can potentially have a message length of up to 15, so we have to set > * base_mrf to either 0 or 1 in order to fit in m0..m15. > @@ -3717,7 +3717,7 @@ fs_visitor::emit_single_fb_write(fs_reg color0, fs_reg > color1, > load = emit(LOAD_PAYLOAD(fs_reg(MRF, 1, BRW_REGISTER_TYPE_F), > sources, length)); > write = emit(FS_OPCODE_FB_WRITE); > - write->exec_size = dispatch_width; > + write->exec_size = exec_size; > write->base_mrf = 1; > } > > @@ -3742,7 +3742,7 @@ fs_visitor::emit_fb_writes() > this->current_annotation = ralloc_asprintf(this->mem_ctx, > "FB dual-source write"); > inst = emit_single_fb_write(this->outputs[0], this->dual_src_output, > - reg_undef, 4); > + reg_undef, 4, 8); > inst->target = 0; > > /* SIMD16 dual source blending requires to send two SIMD8 dual source > @@ -3764,7 +3764,7 @@ fs_visitor::emit_fb_writes() > */ > if (dispatch_width == 16) { > inst = emit_single_fb_write(this->outputs[0], this->dual_src_output, > - reg_undef, 4, true); > + reg_undef, 4, 8, true); > inst->target = 0; > } > > @@ -3784,7 +3784,8 @@ fs_visitor::emit_fb_writes() > > inst = emit_single_fb_write(this->outputs[target], reg_undef, > src0_alpha, > - this->output_components[target]); > + this->output_components[target], > + dispatch_width); > inst->target = target; > } > } > @@ -3794,7 +3795,8 @@ fs_visitor::emit_fb_writes() > * alpha out the pipeline to our null renderbuffer to support > * alpha-testing, alpha-to-coverage, and so on. > */ > - inst = emit_single_fb_write(reg_undef, reg_undef, reg_undef, 0); > + inst = emit_single_fb_write(reg_undef, reg_undef, reg_undef, 0, > + dispatch_width); > inst->target = 0; > } > >
This seems like a good idea. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev