On Fri, 17 Dec 2021 at 07:47, Conor McCarthy cmccarthy@codeweavers.com wrote:
December 16, 2021 7:05 PM, "Henri Verbeet" hverbeet@gmail.com wrote:
Could we just lock all of them pre-emptively? There are only 8; in theory we'd be ahead after copying more than that number of descriptors, in terms of locking overhead at least.
Performance in SotTR was dismal after adding that to optimised copying, so the game probably doesn't copy very many per call or it has a bunch of other writes going at the same time.
If the issue is that the application copies small numbers of descriptors each time, that should be easy to detect. We could use the current path with individual locks for each descriptor in that case. I'm not sure whether it's worth doing that or not though; for applications copying large numbers of descriptors like Control, always using a single mutex is likely the more efficient option.