<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - World of Zoo (in Wine) has rendering issues"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=91170#c6">Comment # 6</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - World of Zoo (in Wine) has rendering issues"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=91170">bug 91170</a>
              from <span class="vcard"><a class="email" href="mailto:imirkin@alum.mit.edu" title="Ilia Mirkin <imirkin@alum.mit.edu>"> <span class="fn">Ilia Mirkin</span></a>
</span></b>
        <pre>Created <span class=""><a href="attachment.cgi?id=116925" name="attach_116925" title="another bs fix">attachment 116925</a> <a href="attachment.cgi?id=116925&action=edit" title="another bs fix">[details]</a></span> <a href='page.cgi?id=splinter.html&bug=91170&attachment=116925'>[review]</a>
another bs fix

This is very worrying... emitting more fences seems to fix it. Another place
where it helped was in nouveau_transfer_write. The joke of it is that emitting
a fence doesn't even kick the pushbuf, just writes the commands.

But since I'm not actually changing *which* fences are attached, I really don't
see how this changes anything. Waiting on fence instead of fence_wr doesn't
seem to affect it either.

What this game does is totally NUTS btw. It has a 512KB vertex buffer, and
every time it maps it is with GL_MAP_INVALIDATE_BUFFER_BIT and writes all 512KB
each time. Which is fine, just... inefficient (probably).

It also has a 128KB index buffer, of which it maps the whole range with 
GL_MAP_READ_BIT | GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT. And then draws,
immediately maps it again, draws, etc. This is like the definition of how not
to use these buffers. Anyways, this forces the creation of a staging bo (in
GART), which receives a copy of the old 128KB of data, and returns a pointer to
that. Then the program updates the 12 or whatever bytes of data, and flushes
them, so *just* those 12 bytes get written. [I'm not kidding, it literally
updates 12 bytes a lot of the time.]

I tried adding kicks in copy_data & co, but that (expectedly) didn't help.</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>