Module: wine
Branch: master
Commit: ebaa0a9426864cfa6e36955f26ff4c66c1d5af76
URL: https://gitlab.winehq.org/wine/wine/-/commit/ebaa0a9426864cfa6e36955f26ff4c…
Author: Zebediah Figura <zfigura(a)codeweavers.com>
Date: Tue Dec 27 13:05:49 2022 -0600
wined3d: Recreate swapchain textures in wined3d_swapchain_resize_buffers().
Instead of using wined3d_texture_update_desc(). This is safe, because:
* ddraw never exposes wined3d textures directly, and always retrieves them
directly from wined3d when rendering.
* d3d8 and d3d9 (non-extended) will only resize buffers during a reset, and
resetting is forbidden if the application holds any references to the
backbuffers. RTVs are also replaced during a reset, so there is no concern
about retrieving the old RTVs from the device state.
* d3d9ex allows resetting while holding references to the backbuffers, but tests
(fixed by this patch) show that the backbuffers should in fact be recreated.
* dxgi forbids holding references to back buffers during ResizeBuffers(),
including indirect references via command lists or device contexts.
---
dlls/d3d8/device.c | 23 ++++++++++++--
dlls/d3d9/device.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++--
dlls/d3d9/tests/d3d9ex.c | 19 +++++-------
dlls/dxgi/swapchain.c | 15 ++++++++--
dlls/wined3d/swapchain.c | 32 +++++++++++++-------
5 files changed, 137 insertions(+), 30 deletions(-)