[Mesa-dev] [PATCH 08/14] i965/fs: Initialize a builder explicitly in the gen4 send dependency work-arounds.
Jason Ekstrand
jason at jlekstrand.net
Wed Jul 29 07:13:04 PDT 2015
On Jul 29, 2015 3:12 AM, "Francisco Jerez" <currojerez at riseup.net> wrote:
>
> Jason Ekstrand <jason at jlekstrand.net> writes:
>
> > On Tue, Jul 28, 2015 at 1:23 AM, Francisco Jerez <currojerez at riseup.net>
wrote:
> >> Instead of relying on the default one. This shouldn't lead to any
> >> functional changes because DEP_RESOLVE_MOV overrides the execution
> >> controls of the instruction anyway.
> >
> > Actually, DEP_RESOLVE_MOV calls half() on the builder which doesn't
> > make any sense. I think the pre-builder intention, based on the
> > comment, was force_uncompressed and to use a SIMD8 instruction so that
> > it adds as few deps as possible. I'm not sure what it's actually
> > doing now. In any case, saying that it overrides everything isn't
> > right.
> >
> Pre-builder it was doing the same it's doing now -- Emit an 8-wide
> instruction regardless of the dispatch width of the shader.
> fs_builder::half(0) is an alias for ::group(8, 0) which simply selects
> the first 8-channel group of the channel enables and will cause the
> instruction to be uncompressed during code generation.
>
> You're right that it doesn't override execution controls of the
> instruction other than exec_size, but that's because it doesn't need to.
> force_writemask_all and force_sechalf are fully irrelevant for what the
> emitted MOV is intended to do: stall the pipeline until the instruction
> that was writing the GRF provided as argument retires, which is going to
> happen regardless of the EMask of the MOV instruction (even if it's zero
> it should cause a stall because pre-IVB hardware didn't implement
> shoot-down of instructions with zero EMask).
Then let's change the commit message to say that the execution controls
don't matter. With that, you can have my R-B on the last two.
Is Tue SIMD stuff unblocked now?
--Jason
> >> ---
> >> src/mesa/drivers/dri/i965/brw_fs.cpp | 11 +++++++----
> >> 1 file changed, 7 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp
b/src/mesa/drivers/dri/i965/brw_fs.cpp
> >> index 71d372c..8bc9372 100644
> >> --- a/src/mesa/drivers/dri/i965/brw_fs.cpp
> >> +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
> >> @@ -2827,7 +2827,8 @@
fs_visitor::insert_gen4_pre_send_dependency_workarounds(bblock_t *block,
> >> if (block->start() == scan_inst) {
> >> for (int i = 0; i < write_len; i++) {
> >> if (needs_dep[i])
> >> - DEP_RESOLVE_MOV(bld.at(block, inst), first_write_grf +
i);
> >> + DEP_RESOLVE_MOV(fs_builder(this, block, inst),
> >> + first_write_grf + i);
> >> }
> >> return;
> >> }
> >> @@ -2843,7 +2844,7 @@
fs_visitor::insert_gen4_pre_send_dependency_workarounds(bblock_t *block,
> >> if (reg >= first_write_grf &&
> >> reg < first_write_grf + write_len &&
> >> needs_dep[reg - first_write_grf]) {
> >> - DEP_RESOLVE_MOV(bld.at(block, inst), reg);
> >> + DEP_RESOLVE_MOV(fs_builder(this, block, inst), reg);
> >> needs_dep[reg - first_write_grf] = false;
> >> if (scan_inst->exec_size == 16)
> >> needs_dep[reg - first_write_grf + 1] = false;
> >> @@ -2890,7 +2891,8 @@
fs_visitor::insert_gen4_post_send_dependency_workarounds(bblock_t *block,
fs_ins
> >> if (block->end() == scan_inst) {
> >> for (int i = 0; i < write_len; i++) {
> >> if (needs_dep[i])
> >> - DEP_RESOLVE_MOV(bld.at(block, scan_inst),
first_write_grf + i);
> >> + DEP_RESOLVE_MOV(fs_builder(this, block, scan_inst),
> >> + first_write_grf + i);
> >> }
> >> return;
> >> }
> >> @@ -2905,7 +2907,8 @@
fs_visitor::insert_gen4_post_send_dependency_workarounds(bblock_t *block,
fs_ins
> >> scan_inst->dst.reg >= first_write_grf &&
> >> scan_inst->dst.reg < first_write_grf + write_len &&
> >> needs_dep[scan_inst->dst.reg - first_write_grf]) {
> >> - DEP_RESOLVE_MOV(bld.at(block, scan_inst),
scan_inst->dst.reg);
> >> + DEP_RESOLVE_MOV(fs_builder(this, block, scan_inst),
> >> + scan_inst->dst.reg);
> >> needs_dep[scan_inst->dst.reg - first_write_grf] = false;
> >> }
> >>
> >> --
> >> 2.4.6
> >>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150729/40f88be5/attachment.html>
More information about the mesa-dev
mailing list