diff options
author | Jason Ekstrand <[email protected]> | 2015-03-24 13:55:10 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2015-05-06 10:29:30 -0700 |
commit | 74dccdad4b018dd37a2e8ba49f502e17edbea9ab (patch) | |
tree | b363a070a8eaf7857b10b69244edff3b1b3997ca /src/mesa | |
parent | 32af7d4188e286a525081ada9965070dd41dbab7 (diff) |
i965/fs: Make emit_single_fb_write take an explicit exec_size
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs.h | 2 | ||||
-rw-r--r-- | 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 d0c0037f7a6..d514fa1260b 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.h +++ b/src/mesa/drivers/dri/i965/brw_fs.h @@ -398,7 +398,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(); void emit_cs_terminate(); diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index de0aec7e4d6..e0a97d576ef 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -3720,7 +3720,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; @@ -3728,7 +3728,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. @@ -3848,7 +3848,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; } @@ -3873,7 +3873,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 @@ -3895,7 +3895,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; } @@ -3915,7 +3915,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; } } @@ -3925,7 +3926,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; } |