Module: wine Branch: master Commit: 83c0b13c5b2bf710542f365b6aa876b103a46147 URL: http://source.winehq.org/git/wine.git/?a=commit;h=83c0b13c5b2bf710542f365b6a...
Author: Stefan Dösinger stefan@codeweavers.com Date: Sun Dec 16 00:18:20 2007 +0100
wined3d: Split up the render target -> render target blit.
---
dlls/wined3d/surface.c | 20 +++++++++++++++++--- 1 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index bedb306..7971908 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; }