Note for patch 7:
See https://docs.microsoft.com/en-us/windows/win32/api/d3d10/ns-d3d10-d3d10_map… :
> A block-compressed texture is encoded in 4x4 blocks (see virtual size vs physical size) ; therefore, RowPitch is the number of bytes in a block of 4x4 texels.
--
v4: d3dx10: Return E_FAIL in D3DX10CreateEffectFromFile for NULL file name.
d3dx10: Support effect creation for compiled shader.
d3dx10: Introduce create_effect().
d3dx10/tests: Add tests for D3DX10CreateEffectFromResource.
d3dx10/tests: Add tests for D3DX10CreateEffectFromFile.
d3dx10/tests: Add tests for D3DX10CreateEffectFromMemory.
https://gitlab.winehq.org/wine/wine/-/merge_requests/697
This implements props access to the underlying items in the storage, which is supported on native (although quirky). Unlike most normal props, the underlying storage for the props is asynchronous, so it can disappear or appear at any point, so they have to be re-checked as needed. The props themselves just map a name to a DISPID, but other than that, DISP_E_MEMBERNOTFOUND can return even after a successful GetDispID for example, even if GetDispID already checked for the item (which it has to, for e.g. (x in y) check).
It also contains some fixes for enumerating props, which are needed now because these props also have to be enumerated. They are custom props, so it's needed to have GetMemberName work for them. And since they are asynchronous it makes it even more complicated when enumerating.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/731