[PATCH] d2d1: Use D3D11 interfaces instead of D3D10.

Rémi Bernon rbernon at codeweavers.com
Thu Feb 25 07:15:48 CST 2021


On 2/25/21 12:11 PM, Henri Verbeet wrote:
> On Wed, 24 Feb 2021 at 13:14, Rémi Bernon <rbernon at 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 at 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?
-- 
Rémi Bernon <rbernon at codeweavers.com>



More information about the wine-devel mailing list