[PATCH] wined3d/resource: Performance improvement
Chris Robinson
chris.kcat at gmail.com
Thu Jun 30 13:12:17 CDT 2016
On 06/30/2016 10:20 AM, Patrick Rudolph wrote:
> Tests on Windows showed that mapping a buffer with flags WINED3D_MAP_DISCARD
> and WINED3D_MAP_NOOVERWRITE is valid combination. Writing reliable tests
> is difficult as the driver is free to choose when using discard.
>
> Unigine Heavon maps a lot of buffers with both flags, but run on about
> 85% GPU-load, as WINE removes both hints and the game has to wait for
> the buffer to be mapped.
It makes logical sense to me that mapping a buffer with both DISCARD and
NOOVERWRITE would effectively ignore NOOVERWRITE. I've noticed that at
least some engines will map a part of a buffer with NOOVERWRITE and draw
with that part, map the next part of the buffer with NOOVERWRITE and
draw with that part, etc, then after the last part of the buffer it maps
with DISCARD to get new memory and keep going while the previous buffer
memory is handled asynchronously by the driver or card.
I notice that wined3d has some parts where it ignores/removes DISCARD,
so it may not be a good idea to leave both DISCARD and NOOVERWRITE set.
In such a case, the driver will get NOOVERWRITE for a part of the buffer
that's still in use. It would probably be better to remove NOOVERWRITE
when both DISCARD and NOOVERWRITE are set.
More information about the wine-devel
mailing list