Module: wine Branch: master Commit: ebaa0a9426864cfa6e36955f26ff4c66c1d5af76 URL: https://gitlab.winehq.org/wine/wine/-/commit/ebaa0a9426864cfa6e36955f26ff4c6...
Author: Zebediah Figura zfigura@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(-)