<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 - Correct Transform Feedback Varyings information is expected after using ProgramBinary"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=106907">106907</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Correct Transform Feedback Varyings information is expected after using ProgramBinary
          </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>Linux (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>Mesa core
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>mesa-dev@lists.freedesktop.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>xinghua.cao@intel.com
          </td>
        </tr>

        <tr>
          <th>QA Contact</th>
          <td>mesa-dev@lists.freedesktop.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Steps:
1. Download chrome and install it on your Ubuntu,
<a href="https://www.google.com/chrome/?platform=linux&extra=devchannel">https://www.google.com/chrome/?platform=linux&extra=devchannel</a>;
2. Open
<a href="https://www.khronos.org/registry/webgl/sdk/tests/conformance2/transform_feedback/transform_feedback.html?webglVersion=2&quiet=0">https://www.khronos.org/registry/webgl/sdk/tests/conformance2/transform_feedback/transform_feedback.html?webglVersion=2&quiet=0</a>
3. First time open link, all cases will be successful. Please click refresh
button of chrome, some cases fail.

Notes:
1. I could only reproduce it on mesa git master, could not reproduce on system
driver(Ubuntu 17.10). May our latest code introduced some regression?
2. The case may be related with
<a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - ProgramBinary does not switch program correctly when using transform feedback"
   href="show_bug.cgi?id=106810">https://bugs.freedesktop.org/show_bug.cgi?id=106810</a>
3. Chrome will cache program binary, the second time run page, chrome will call
glProgramBinary to avoid re-compile shaders and re-link program.
4. This failed cases verify glGetProgramiv to get tranform feedback varyings
number, and getTransformFeedbackVarying to get transform feedback's size, type
and name. But current program seems be without transform feedback varyings
information.
5.I had checked mesa code. For example, glProgramBinary triggers read_xfb
function to re-serialize binary, creates gl_transform_feedback_info object,
which also has a member named "NumVarying", if the program binary has two
tranform feedback varyings, "NumVarying" value is 2. Then call glGetProgramiv
to get tranform feedback varyings number in shaderapi.c, the value is got from
"NumVarying", which is a member of TransformFeedback of gl_shader_program. I
found that glProgramBinary implemetation in mesa did not update transform
feedback varyings number from gl_transform_feedback_info object to
TransformFeedback object.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the QA Contact for the bug.</li>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>