On 2/25/21 12:11 PM, Henri Verbeet wrote:
On Wed, 24 Feb 2021 at 13:14, Rémi Bernon rbernon@codeweavers.com wrote:
And ID3DDeviceContextState instead of ID3D10StateBlock.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49395 Signed-off-by: Rémi Bernon rbernon@codeweavers.com
dlls/d2d1/bitmap.c | 83 +++++---- dlls/d2d1/brush.c | 92 +++++----- dlls/d2d1/d2d1_private.h | 36 ++-- dlls/d2d1/dc_render_target.c | 2 +- dlls/d2d1/device.c | 347 +++++++++++++++++------------------ dlls/d2d1/tests/d2d1.c | 5 +- 6 files changed, 283 insertions(+), 282 deletions(-)
Any chance this could be split a little for reviewability/bisectability? (E.g. converting the bitmap interfaces first, then the brush interfaces, etc.)
I'm not sure if that'd be possible easily while keeping it correct. The D3D10 / D3D11 interfaces are supposed to be mutually exclusive and only one can be active at a time.
We don't implement that in Wine yet but for several methods (not all, I think things like resource creation can be done freely) calling the other interface methods should be no-op when one is active.
So to be correct we would have for instance, to first, query the device D3D11 interface, create the resources from it and use their D3D11 interfaces, and then query the resources D3D10 interface to use it for the binding.
Once everything has been converted, use the D3D11 interface for the device, state swap, and bindings, and drop all the interface queries.
Would it be better?