[Mesa-stable] [PATCH] st/nine: Ignore null sized windows
Axel Davy
davyaxel0 at gmail.com
Sat Jan 5 19:54:33 UTC 2019
I drop this patch (for now).
It doesn't fully fix the issue, which is due to our wine implementation
using the wrong window for ID3DPresent_GetWindowInfo.
The issue is fixed either with a wine patch or with a nine workaround.
The nine workaround consists in forcing the backend to use the correct
window, which is simply passing hDestWindowOverride ?
hDestWindowOverride : This->params.hDeviceWindow instead of
hDestWindowOverride.
The problem about the nine patch is that maybe when hDestWindowOverride
is not null, specific handling would be required in wine ? So far not to
our knowledge, but that may tie our hands.
Anyone having opinion on whether I should push the workaround or
consider the issue fixed if using an updated wine backend ?
Axel
On 03/01/2019 21:48, Axel Davy wrote:
> If for some reason the window size detected
> is null, just render at normal size.
>
> Fixes the regression caused by:
> commit 2318ca68bbeb4fa6e21a4d8c650cec3f64246596
> "st/nine: Handle window resize when a presentation buffer is used"
>
> Fixes: https://github.com/iXit/Mesa-3D/issues/331
> Fixes: https://github.com/iXit/Mesa-3D/issues/332
>
> Cc: mesa-stable at lists.freedesktop.org
> Signed-off-by: Axel Davy <davyaxel0 at gmail.com>
> ---
> It may not apply cleanly to mesa stable. I can do another
> patch for stable if needed. Basically it's the very same code
> except the part "/* Switch to using presentation buffers ...*/"
> would be replaced by "pipe = NineDevice9_GetPipe(This->base.device);"
>
> src/gallium/state_trackers/nine/swapchain9.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/src/gallium/state_trackers/nine/swapchain9.c b/src/gallium/state_trackers/nine/swapchain9.c
> index 6c22be24c7c..ceaa1cd848a 100644
> --- a/src/gallium/state_trackers/nine/swapchain9.c
> +++ b/src/gallium/state_trackers/nine/swapchain9.c
> @@ -753,6 +753,12 @@ present( struct NineSwapChain9 *This,
> ID3DPresent_GetWindowInfo(This->present, hDestWindowOverride, &target_width, &target_height, &target_depth);
> (void)target_depth;
>
> + /* Can happen for a few frames. */
> + if (target_width == 0 || target_height == 0) {
> + target_width = resource->width0;
> + target_height = resource->height0;
> + }
> +
> /* Switch to using presentation buffers on window resize.
> * Note: Most apps should resize the d3d back buffers when
> * a window resize is detected, which will result in a call to
More information about the mesa-stable
mailing list