Module: wine Branch: master Commit: c1450356a7a7c01a607a9031200be0ba9c03b437 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c1450356a7a7c01a607a903120...
Author: Matteo Bruni matteo.mystral@gmail.com Date: Sat Aug 7 15:29:41 2010 +0200
wined3d: Fix context_apply_clear_state with ORM = backbuffer.
---
dlls/wined3d/context.c | 31 +++++++++++++++++++------------ 1 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index 93b4228..72b84c9 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -1972,7 +1972,7 @@ static void context_apply_draw_buffer(struct wined3d_context *context, BOOL blit { ENTER_GL(); glDrawBuffer(surface_get_gl_buffer(rt)); - checkGLcall("glDrawBuffers()"); + checkGLcall("glDrawBuffer()"); LEAVE_GL(); } else @@ -2172,22 +2172,29 @@ void context_apply_clear_state(struct wined3d_context *context, IWineD3DDeviceIm } else { - const struct wined3d_gl_info *gl_info = context->gl_info; + ENTER_GL();
- for (i = 0; i < gl_info->limits.buffers; ++i) + if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) { - if (i < rt_count && rts[i]) - context->draw_buffers[i] = GL_COLOR_ATTACHMENT0 + i; - else - context->draw_buffers[i] = GL_NONE; + const struct wined3d_gl_info *gl_info = context->gl_info; + for (i = 0; i < gl_info->limits.buffers; ++i) + { + if (i < rt_count && rts[i]) + context->draw_buffers[i] = GL_COLOR_ATTACHMENT0 + i; + else + context->draw_buffers[i] = GL_NONE; + } + GL_EXTCALL(glDrawBuffersARB(gl_info->limits.buffers, context->draw_buffers)); + checkGLcall("glDrawBuffers()"); + context->draw_buffer_dirty = TRUE; + } + else + { + glDrawBuffer(device->offscreenBuffer); + checkGLcall("glDrawBuffer()"); }
- ENTER_GL(); - GL_EXTCALL(glDrawBuffersARB(gl_info->limits.buffers, context->draw_buffers)); - checkGLcall("glDrawBuffers()"); LEAVE_GL(); - - context->draw_buffer_dirty = TRUE; }
if (context->last_was_blit)