On 21 October 2015 at 11:58, Stefan Dösinger stefandoesinger@gmail.com wrote:
Am 2015-10-21 um 11:38 schrieb Henri Verbeet:
Oh right, you meant csmt for both cases. I guess the "or" was a bit ambiguous. It's something csmt will have to deal with either way though, since d3d10+ uses that.
The current solution in my patches is to wait until the upload is done. That makes the tests happy, but obviously isn't an efficient solution.
My suggestion would be to map the d3d10+ call to the d3d9-style call with a sysmem staging resource managed by d3d11, similarly to how we handle UP draws in <= d3d9. But I haven't looked into the details at all.
Complexities of managing that aside, that would always imply at least one copy of the data for d3d10+ updates.
Note that I don't think it's a given that resource updates should always happen on the rendering thread though.
Yeah, but that doesn't help here. E.g. the destination resource could be busy, in which case an update in the main thread can't be done right away either.
Well yes, but the destination resource being busy generally implies the GPU being somewhat busy too. And in that case it isn't necessarily bad to spend some time on the CPU to copy the data.