On 20 October 2015 at 18:32, Stefan Dösinger stefandoesinger@gmail.com wrote:
Am 2015-10-20 um 17:36 schrieb Henri Verbeet:
It's not necessarily trivial, no. The easiest way to start may be to first work on implementing wined3d_device_update_surface() on top of wined3d_device_update_sub_resource(), and only then work on getting rid of wined3d_device_update_surface() itself.
The inconvenient thing about wined3d_device_update_sub_resource is that the source data is in a pointer and not a system memory resource. You can of course just map the source resource in the client library and pass the map pointer to wined3d_device_update_sub_resource, but that'll require copying the data or waiting with the multithreaded command stream.
The source surface for wined3d_device_update_surface() is supposed to be in WINED3D_POOL_SYSTEM_MEM. Mapping those shouldn't require a copy. (And while in ddraw everything is a bit weird, in d3d9 system memory surfaces are really supposed to be in system memory.)