Roderick Colenbrander : wined3d: Improve FBO support in ClearSurface.
Alexandre Julliard
julliard at winehq.org
Thu Apr 15 11:37:36 CDT 2010
Module: wine
Branch: master
Commit: 10f58c14bcdeba9f7ea82701b9d9ab8f2bb3414b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=10f58c14bcdeba9f7ea82701b9d9ab8f2bb3414b
Author: Roderick Colenbrander <thunderbird2k at gmail.com>
Date: Mon Apr 12 12:08:06 2010 +0200
wined3d: Improve FBO support in ClearSurface.
---
dlls/wined3d/device.c | 23 +++++++++++++++++++++++
1 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 6cd2831..91e595c 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4377,6 +4377,29 @@ HRESULT IWineD3DDeviceImpl_ClearSurface(IWineD3DDeviceImpl *This, IWineD3DSurfac
}
context = context_acquire(This, (IWineD3DSurface *)target, CTXUSAGE_CLEAR);
+ if (wined3d_settings.offscreen_rendering_mode == ORM_FBO)
+ {
+ if (!surface_is_offscreen((IWineD3DSurface *)target))
+ {
+ TRACE("Surface %p is onscreen\n", target);
+
+ ENTER_GL();
+ context_bind_fbo(context, GL_FRAMEBUFFER, NULL);
+ context_set_draw_buffer(context, surface_get_gl_buffer((IWineD3DSurface *)target));
+ LEAVE_GL();
+ }
+ else
+ {
+ TRACE("Surface %p is offscreen\n", target);
+
+ ENTER_GL();
+ context_bind_fbo(context, GL_FRAMEBUFFER, &context->dst_fbo);
+ context_attach_surface_fbo(context, GL_FRAMEBUFFER, 0, (IWineD3DSurface *)target);
+ context_attach_depth_stencil_fbo(context, GL_FRAMEBUFFER, NULL, FALSE);
+ LEAVE_GL();
+ }
+ }
+
if (!context->valid)
{
context_release(context);
More information about the wine-cvs
mailing list