[Nouveau] [Bug 91170] World of Zoo (in Wine) has rendering issues

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Fri Jul 3 09:06:15 PDT 2015


https://bugs.freedesktop.org/show_bug.cgi?id=91170

--- Comment #6 from Ilia Mirkin <imirkin at alum.mit.edu> ---
Created attachment 116925
  --> https://bugs.freedesktop.org/attachment.cgi?id=116925&action=edit
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.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/nouveau/attachments/20150703/f0bfa2ae/attachment.html>


More information about the Nouveau mailing list