<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body><span class="vcard"><a class="email" href="mailto:iive@yahoo.com" title="iive@yahoo.com">iive@yahoo.com</a>
</span> changed
          <a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED - [radeon] Europa Universalis 4 freezing during game start (10.3.3+, still broken on 11.0.2)"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=86720">bug 86720</a>
          <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>RESOLVED
           </td>
           <td>REOPENED
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Assignee</td>
           <td>dri-devel@lists.freedesktop.org
           </td>
           <td>iive@yahoo.com
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Resolution</td>
           <td>FIXED
           </td>
           <td>---
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">CC</td>
           <td>
                
           </td>
           <td>iive@yahoo.com
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED - [radeon] Europa Universalis 4 freezing during game start (10.3.3+, still broken on 11.0.2)"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=86720#c34">Comment # 34</a>
              on <a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED - [radeon] Europa Universalis 4 freezing during game start (10.3.3+, still broken on 11.0.2)"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=86720">bug 86720</a>
              from <span class="vcard"><a class="email" href="mailto:iive@yahoo.com" title="iive@yahoo.com">iive@yahoo.com</a>
</span></b>
        <pre>Created <span class=""><a href="attachment.cgi?id=125183" name="attach_125183" title="EU4 shader #175 in TGSI , unoptmized disassembly, sbdump of all stages and optimized disassembly">attachment 125183</a> <a href="attachment.cgi?id=125183&action=edit" title="EU4 shader #175 in TGSI , unoptmized disassembly, sbdump of all stages and optimized disassembly">[details]</a></span>
EU4 shader #175 in TGSI , unoptmized disassembly, sbdump of all stages and
optimized disassembly

While the committed workaround does work for this case, the bug in R600 Shader
Backend is not fixed and it is triggered by other more complicated shaders. For
example:
<a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - HD6950 GPU lockup loop with various steam games (octodad[always], saints row 4[always], dead island[always], grid autosport[sometimes])"
   href="show_bug.cgi?id=94900">https://bugs.freedesktop.org/show_bug.cgi?id=94900</a>

I had locally reverted the unroll workaround in order to obtain the form that
triggers this bug. If you need to test the bug with this shader, then in
`r600_pipe.c:559` you have to set `PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT`
to 32, instead of 255.

The buggy shader is the vertex shader of call 1024042 in the trace.
When using `R600_DEBUG=ps,vs`, the shader is under #175 .


Like in the other bugreport, this shader causes assertion failure in the
sb_checker (if mesa is compiled with debugging) and the bug is also
workarounded by `R600_DEBUG=sbsafemath`.

This works because it disables the call to `fold_assoc()` in
`expr_handler::fold_alu_op2()` somewhere around `sb_expr.cpp:740`

In order to locate the bug, I've enabled the sbdump for all SB stages.

I'm also uploading a second log, with the "fold_assoc()" disabled, so a
side-by-side comparison of both logs could indicate how the function affects
the result through the different stages. (I recommend `diffuse` program.)

This shader is easier to analyze, because it contains just one loop with 4
iterations and no other conditional branches and jumps. The loop counter
register is used as index for memory access. The memory address calculations
might be involved in triggering the bug as `fold_assoc()` works on them.
The `sb_checker` complains about instructions that list the counter register,
so it is possible that the instruction that increments it is somehow
"optimized" out.</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>