<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Add FP64 support to the i965 shader backends"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=92760#c23">Comment # 23</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Add FP64 support to the i965 shader backends"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=92760">bug 92760</a>
              from <span class="vcard"><a class="email" href="mailto:itoral@igalia.com" title="Iago Toral <itoral@igalia.com>"> <span class="fn">Iago Toral</span></a>
</span></b>
        <pre>We spent some time working on fixing code that needs the execsize hack. For now
we decided to only fix the cases that are absolutely required, which involve
instructions with a dst.width of 4 (we don't currently generate instructions on
doubles with a width < 4). This makes the number of changes required for gen7/8
pretty small (fixing this for widths < 4 would require a huge amount of changes
everywhere...). This keeps non-fp64 piglit tests on gen7/8 and fp64 tests on
gen8 happy with a small number of changes. Basically with this we need to keep
the exec_size hack as is for gen < 7 and tweak it for gen7/8 so it only acts on
instructions with a dst.width < 4.

I would not try to remove the execsize hack entirely (that is cover the cases
where dst.witdh < 4), because that would mean a really huge number of things
throughout the driver and across all hw gens.

We could try to avoid special-casing gen7/8 by fixing instructions with a
dst.width of 4 in previous gens too, but this will require a lot more patches,
so I am not sure that it is worth it. Specifically:

* In gen6 there are instances of instructions injected at the vec4_visitor
level that need the exec_size hack to set the execution size to 4. The problem
here is that vec4_instruction does not provide means to alter the execution
size of the instruction, so that support would have to be added (or,
alternatively, write generator opcodes that do that as needed). We think fixing
gen6 would involve at least 5 patches, so it is not too bad.

* In gen5 the problem is that the strip-and-fans and clipping modules are full
with code that mixes width4 and width8 instructions, so it requires to tweak
execsizes in a fair amount of places. I have patches to do this that
in fact change the default execution size for the strip and fans to 4 and fix
the cases that need 8, since that seemed more reasonable to limit the number of
necessary changes. This involves something like ~10 patches, but the changes
look a bit scarier to me (piglit seems to be happy though).

* We don't have gen4 or gen9 hardware available, so we would need help fixing
these paths. I would expect a few more patches required for gen4 at least.

So the summary is that if we don't want to special-case the execsize for
gen7/8, we will need a significant number of changes, help from Intel to track
down issues in gen4 and gen9 and cross fingers that piglit actually exercises
all the paths we need to tweak, so all things considered I wonder if we should
just special case the execsize hack for gen7/8 for now and forget about other
gens for now, since we are not planning fp64 for them yet anyway.

What do you think?</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>