Henri Verbeet : wined3d: Let the context handle the draw buffer in stretch_rect_fbo().
Alexandre Julliard
julliard at winehq.org
Mon Dec 14 09:51:13 CST 2009
Module: wine
Branch: master
Commit: 30f5883ef56c3d700ddb5ba7adc60a41cb559ee4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=30f5883ef56c3d700ddb5ba7adc60a41cb559ee4
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Sun Dec 13 22:03:58 2009 +0100
wined3d: Let the context handle the draw buffer in stretch_rect_fbo().
---
dlls/wined3d/device.c | 21 +++++++--------------
1 files changed, 7 insertions(+), 14 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 6529b23..c71d4eb 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -5775,16 +5775,16 @@ void stretch_rect_fbo(IWineD3DDevice *iface, IWineD3DSurface *src_surface, WINED
ENTER_GL();
context_bind_fbo(context, GL_DRAW_FRAMEBUFFER, NULL);
- glDrawBuffer(buffer);
- checkGLcall("glDrawBuffer()");
- } else {
+ context_set_draw_buffer(context, buffer);
+ }
+ else
+ {
TRACE("Destination surface %p is offscreen\n", dst_surface);
ENTER_GL();
context_bind_fbo(context, GL_DRAW_FRAMEBUFFER, &context->dst_fbo);
context_attach_surface_fbo(context, GL_DRAW_FRAMEBUFFER, 0, dst_surface);
- glDrawBuffer(GL_COLOR_ATTACHMENT0);
- checkGLcall("glDrawBuffer()");
+ context_set_draw_buffer(context, GL_COLOR_ATTACHMENT0);
context_attach_depth_stencil_fbo(context, GL_DRAW_FRAMEBUFFER, NULL, FALSE);
}
glDisable(GL_SCISSOR_TEST);
@@ -5800,17 +5800,10 @@ void stretch_rect_fbo(IWineD3DDevice *iface, IWineD3DSurface *src_surface, WINED
checkGLcall("glBlitFramebuffer()");
}
- IWineD3DSurface_ModifyLocation(dst_surface, SFLAG_INDRAWABLE, TRUE);
-
- /* If we switched from GL_BACK to GL_FRONT above, we need to switch back here */
- if (dst_swapchain && dst_surface == ((IWineD3DSwapChainImpl *)dst_swapchain)->frontBuffer
- && ((IWineD3DSwapChainImpl *)dst_swapchain)->backBuffer) {
- glDrawBuffer(GL_BACK);
- checkGLcall("glDrawBuffer()");
- }
LEAVE_GL();
-
context_release(context);
+
+ IWineD3DSurface_ModifyLocation(dst_surface, SFLAG_INDRAWABLE, TRUE);
}
static HRESULT WINAPI IWineD3DDeviceImpl_SetRenderTarget(IWineD3DDevice *iface, DWORD RenderTargetIndex, IWineD3DSurface *pRenderTarget,
More information about the wine-cvs
mailing list