Fixes Bug 23029 (Devil May Cry® 3 Special Edition) (6550) Intro Video is covered by green, transparent square for a majority of it.
Before these patches, surface data for planar formats is not copied
correctly when the application uses a custom allocator-presenter and
allocates a surface of different size than the VMR9 source.
Patch 2/2 adds support for performing this copy correctly when the
source dimensions are less or equal than the rendering surface
dimensions.
---
I have some questions:
- Should I also make it work for when the dst is smaller than the src?
- If not, should the FIXME() in 1/2 be promoted to an error? Otherwise we might have segfaults, writing out of scope.
- Should I use copy_plane(), introduced in 2/2 also in the implementation of the other formats? Changing what needs to be changed to preserve behavior of course.
--
v2: quartz: Properly copy data to render surfaces of planar formats in VMR9.
quartz: Emit FIXME when the rendering surface is smaller than the source in VMR9.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6069
The first two patches here address an issue I encountered when using Wine's d3dx9 with DXVK in the game Command and Conquer 3. The game calls `D3DXLoadSurfaceFromMemory` on a multisampled render target. This ends up going through the `lock_surface()` helper in d3dx9, which eventually calls `UpdateSurface()` in `unlock_surface()` to copy the staging surface back to the multisampled render target. This succeeds on wined3d even though it shouldn't, and fails on DXVK like it should.
The second two patches address an issue reported in Empires: Dawn of the Modern World, where the game expects a device reset to reset the scene state.
--
v2: wined3d: Clear scene state on device state reset.
d3d8/tests: Add a test for device reset after beginning a scene.
d3d9/tests: Add a test for device reset after beginning a scene.
ddraw/tests: Add tests for preserving d3d scene state during primary surface creation.
d3d9: Return failure if a multisampled surface is passed to IDirect3DDevice9::UpdateSurface().
d3d9/tests: Add tests for IDirect3DDevice9::UpdateSurface() with a multisampled surface.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6042