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.
--
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.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6042
The `-Wstringop-overread` fix feels a bit questionable (so I'll add Eric as a
reviewer to clarify the MSC structs details)
--
v4: winedump: Initialize size variable in dump_dir_exceptions().
winedump: Use offsetof() for string position calculations.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5625
GCC 14.1 emits a bunch of warning when compiling (winedump & dbghelp).
This stems from some of the structures attempting to reflect file
layout (after serialisation), whereas the variable length of
some contiguous fields make it impossible (in C).
So use flexible array members for variable length arrays,
and use an FAM as well for packing the more complicated bits.
This keeps these data blocks as C structures for the fields
that can be directly mapped, and leave to the caller the
responsability of deserializing the rest.
This seem to be enough to get rid of these GCC warnings.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6064