From 83c0b13c5b2bf710542f365b6aa876b103a46147 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20D=C3=B6singer?= Date: Sun, 16 Dec 2007 00:18:20 +0100 Subject: [PATCH] wined3d: Split up the render target -> render target blit. --- dlls/wined3d/surface.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index bedb3065cd..79719086ac 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -2967,9 +2967,23 @@ static HRESULT IWineD3DSurfaceImpl_BltOverride(IWineD3DSurfaceImpl *This, RECT * TRACE("Unsupported blit between buffers on the same swapchain\n"); return WINED3DERR_INVALIDCALL; - } else if((dstSwapchain || This == (IWineD3DSurfaceImpl *) myDevice->render_targets[0]) && - (srcSwapchain || SrcSurface == myDevice->render_targets[0]) ) { - ERR("Can't perform hardware blit between 2 different swapchains, falling back to software\n"); + } else if(dstSwapchain && dstSwapchain == srcSwapchain) { + FIXME("Implement hardware blit between two surfaces on the same swapchain\n"); + return WINED3DERR_INVALIDCALL; + } else if(dstSwapchain && srcSwapchain) { + FIXME("Implement hardware blit between two different swapchains\n"); + return WINED3DERR_INVALIDCALL; + } else if(dstSwapchain) { + if(SrcSurface != myDevice->render_targets[0]) { + ERR("Unexpected render target -> render target blit\n"); + } + FIXME("Implement blit from active render target to a swapchain\n"); + return WINED3DERR_INVALIDCALL; + } else if(srcSwapchain) { + if(This != (IWineD3DSurfaceImpl *) myDevice->render_targets[0]) { + ERR("Unexpected render target -> render target blit\n"); + } + FIXME("Implement blit from a swapchain to the active render target\n"); return WINED3DERR_INVALIDCALL; } -- 2.32.0.93.g670b81a890