H. Verbeet : wined3d: Properly handle the surface location in stretch_rect_fbo().
Alexandre Julliard
julliard at winehq.org
Thu Jan 3 06:43:40 CST 2008
Module: wine
Branch: master
Commit: 3f6c3d2db0b77f44e711d1ee2e2416e2708ef3d1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3f6c3d2db0b77f44e711d1ee2e2416e2708ef3d1
Author: H. Verbeet <hverbeet at gmail.com>
Date: Wed Jan 2 19:53:24 2008 +0100
wined3d: Properly handle the surface location in stretch_rect_fbo().
---
dlls/wined3d/device.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 30f7b61..9d17498 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -6318,6 +6318,9 @@ void stretch_rect_fbo(IWineD3DDevice *iface, IWineD3DSurface *src_surface, WINED
TRACE("Source surface %p is onscreen\n", src_surface);
ActivateContext(This, src_surface, CTXUSAGE_RESOURCELOAD);
+ /* Make sure the drawable is up to date. In the offscreen case
+ * attach_surface_fbo() implicitly takes care of this. */
+ IWineD3DSurface_LoadLocation(src_surface, SFLAG_INDRAWABLE, NULL);
ENTER_GL();
GL_EXTCALL(glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, 0));
@@ -6344,6 +6347,9 @@ void stretch_rect_fbo(IWineD3DDevice *iface, IWineD3DSurface *src_surface, WINED
TRACE("Destination surface %p is onscreen\n", dst_surface);
ActivateContext(This, dst_surface, CTXUSAGE_RESOURCELOAD);
+ /* Make sure the drawable is up to date. In the offscreen case
+ * attach_surface_fbo() implicitly takes care of this. */
+ IWineD3DSurface_LoadLocation(dst_surface, SFLAG_INDRAWABLE, NULL);
ENTER_GL();
GL_EXTCALL(glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, 0));
@@ -6380,6 +6386,8 @@ void stretch_rect_fbo(IWineD3DDevice *iface, IWineD3DSurface *src_surface, WINED
checkGLcall("glBlitFramebuffer()");
}
+ IWineD3DSurface_ModifyLocation(dst_surface, SFLAG_INDRAWABLE, TRUE);
+
if (This->render_offscreen) {
bind_fbo(iface, GL_FRAMEBUFFER_EXT, &This->fbo);
} else {
More information about the wine-cvs
mailing list