<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - GL42-CTS.gpu_shader_fp64.named_uniform_blocks fails"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=95505">95505</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>GL42-CTS.gpu_shader_fp64.named_uniform_blocks fails
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>Mesa
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>git
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Other
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>medium
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Drivers/DRI/i965
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>idr@freedesktop.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>siglesias@igalia.com
          </td>
        </tr>

        <tr>
          <th>QA Contact</th>
          <td>intel-3d-bugs@lists.freedesktop.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>This CTS test defines different shaders that have an uniform block which
contains double variables and some dummy variables in-between. Each shader (VS,
TESS, GS, FS) checks that it reads the expected data from the uniform block and
sets an integer to 1 (if the read was correct) or to 0 (if it is not). Each
stage receives as input varyings the result integers from previous stages, sets
its own and output all of them to next stage.

In case of VS, TESS and GS, those integers are saved by a transform feedback.
In case of FS, it is setting the output color to a FBO which is rendering one
point to a 1x1 texture with GL_RED32I color format. In the verification
process, all transform feedback varyings are read, the texture's value is read
and all of them are compared with the expected value (which is 1).

First execution with current master showed that only TES eval shader was
working. Hovewer, using Curro's i965-spilling-fixes branch (rebased on top of
up-to-dated master), then VS, both TESS and GS pass because they were failing
because of register spilling issues.

Note: Curro's i965-spilling-fixes patches are under review in the mailing list.

But then, we still have FS case failing: the shaders were not setting
gl_Position for the rendered vertex and it seems the consequence is that FS was
not being executed at all! I even modified FS code to be sure about this.
Furthermore, if I set gl_Position when emitting the vertex in the Geometry
shader, the test pass.

Is this behaviour expected? If not, any idea how can I fix it? I was playing in
gen8_ps_state.c without luck.

Note: NVIDIA proprietary driver passes the test in any condition (with or
without setting gl_Position in GS).

Relevant info:

* Broadwell computer (gen8)
* Mesa Master: eb384da
* CTS version: GLCTS-4.5.2.0-20150506
* Test: GL42-CTS.gpu_shader_fp64.named_uniform_blocks</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>