Matteo Bruni (@Mystral) commented about dlls/d3dx9_36/surface.c:
{ - if (surface_rect) + D3DSURFACE_DESC desc; + + IDirect3DSurface9_GetDesc(surface, &desc); + IDirect3DSurface9_GetDevice(surface, &device); + if (desc.MultiSampleType != D3DMULTISAMPLE_NONE) { - surface_point.x = surface_rect->left; - surface_point.y = surface_rect->top; + IDirect3DSurface9 *temp_surface2; + D3DSURFACE_DESC temp_desc; + + IDirect3DSurface9_GetDesc(temp_surface, &temp_desc); + hr = IDirect3DDevice9_CreateRenderTarget(device, temp_desc.Width, temp_desc.Height, temp_desc.Format, + D3DMULTISAMPLE_NONE, 0, FALSE, &temp_surface2, NULL);
I think this intermediate rendertarget can be avoided when D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES is advertised? I might be overlooking some other reason for it though. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/6157#note_77232