<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Graphical glitches in Unreal Engine 4"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=83510#c10">Comment # 10</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Graphical glitches in Unreal Engine 4"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=83510">bug 83510</a>
              from <span class="vcard"><a class="email" href="mailto:maraeo@gmail.com" title="Marek Olšák <maraeo@gmail.com>"> <span class="fn">Marek Olšák</span></a>
</span></b>
        <pre>(In reply to Henri Verbeet from <a href="show_bug.cgi?id=83510#c9">comment #9</a>)
<span class="quote">> (In reply to Marek Olšák from <a href="show_bug.cgi?id=83510#c8">comment #8</a>)
> > (In reply to Christoph Haag from <a href="show_bug.cgi?id=83510#c7">comment #7</a>)
> > > I think in the new "Lightroom Interior" the blackness glitch is visible in a
> > > more interesting way:
> > > <a href="https://www.youtube.com/watch?v=R9N-srsF_Fg">https://www.youtube.com/watch?v=R9N-srsF_Fg</a>
> > 
> > I think I've tracked down what's causing the blackness in all Unreal Engine
> > demos: Division by zero.
> > 
> I didn't debug this of course, but it seems suspicious that this would
> depend on division be zero returning zero instead of infinity. I don't think
> any other driver for current hardware does that with GLSL. Are you sure
> there's not a subsequent multiplication by zero that depends on INF * 0
> returning 0 instead of NAN?</span >

Yes, that's possible. However, some internal documents suggest that Catalyst
always uses the standard IEEE version of MUL. There are also alternative
opcodes for RSQ, RCP and LOG that don't generate NaNs and Infs, which can be
used instead. You can certainly choose which behavior you want on a
case-by-case basis. Sometimes you want 0 instead of NaN, other times you want 0
or FLT_MAX instead of Inf. The hardware has RSQ and RCP opcodes that do that.

However, Tonga and later hardware doesn't have the legacy dx9 opcodes for MUL,
MAD, RCP, RSQ, and LOG and they must be emulated with a comparison (or
V_CLASS_F32 that returns whether it's NaN/+-Inf/Denorm/+-0/etc) + conditional
assignment. It's better to do the conditional assignment after every RCP than
after every MUL.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>