Module: wine Branch: master Commit: c2ede1d4c895548918b007a81943d73929b6a54e URL: http://source.winehq.org/git/wine.git/?a=commit;h=c2ede1d4c895548918b007a819...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Tue Jul 26 19:52:45 2011 +0200
wined3d: Only invalidate state for the current context in swapchain_blit().
---
dlls/wined3d/context.c | 2 +- dlls/wined3d/swapchain.c | 14 +++++++------- dlls/wined3d/wined3d_private.h | 1 + 3 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index 9892791..b83dab5 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -1032,7 +1032,7 @@ static void context_enter(struct wined3d_context *context) } }
-static void context_invalidate_state(struct wined3d_context *context, DWORD state) +void context_invalidate_state(struct wined3d_context *context, DWORD state) { DWORD rep = context->state_table[state].representative; DWORD idx; diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index 5b065be..a7e61fb 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -281,7 +281,6 @@ static void swapchain_blit(const struct wined3d_swapchain *swapchain, struct wined3d_context *context, const RECT *src_rect, const RECT *dst_rect) { struct wined3d_surface *backbuffer = swapchain->back_buffers[0]; - struct wined3d_device *device = swapchain->device; UINT src_w = src_rect->right - src_rect->left; UINT src_h = src_rect->bottom - src_rect->top; GLenum gl_filter; @@ -309,16 +308,16 @@ static void swapchain_blit(const struct wined3d_swapchain *swapchain,
context_bind_fbo(context, GL_DRAW_FRAMEBUFFER, NULL); context_set_draw_buffer(context, GL_BACK); - device_invalidate_state(device, STATE_FRAMEBUFFER); + context_invalidate_state(context, STATE_FRAMEBUFFER);
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - device_invalidate_state(device, STATE_RENDER(WINED3DRS_COLORWRITEENABLE)); - device_invalidate_state(device, STATE_RENDER(WINED3DRS_COLORWRITEENABLE1)); - device_invalidate_state(device, STATE_RENDER(WINED3DRS_COLORWRITEENABLE2)); - device_invalidate_state(device, STATE_RENDER(WINED3DRS_COLORWRITEENABLE3)); + context_invalidate_state(context, STATE_RENDER(WINED3DRS_COLORWRITEENABLE)); + context_invalidate_state(context, STATE_RENDER(WINED3DRS_COLORWRITEENABLE1)); + context_invalidate_state(context, STATE_RENDER(WINED3DRS_COLORWRITEENABLE2)); + context_invalidate_state(context, STATE_RENDER(WINED3DRS_COLORWRITEENABLE3));
glDisable(GL_SCISSOR_TEST); - device_invalidate_state(device, STATE_RENDER(WINED3DRS_SCISSORTESTENABLE)); + context_invalidate_state(context, STATE_RENDER(WINED3DRS_SCISSORTESTENABLE));
/* Note that the texture is upside down */ gl_info->fbo_ops.glBlitFramebuffer(src_rect->left, src_rect->top, src_rect->right, src_rect->bottom, @@ -329,6 +328,7 @@ static void swapchain_blit(const struct wined3d_swapchain *swapchain, } else { + struct wined3d_device *device = swapchain->device; struct wined3d_context *context2; float tex_left = src_rect->left; float tex_top = src_rect->top; diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index a7699b5..0bbe9d1 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1245,6 +1245,7 @@ void context_free_event_query(struct wined3d_event_query *query) DECLSPEC_HIDDEN void context_free_occlusion_query(struct wined3d_occlusion_query *query) DECLSPEC_HIDDEN; struct wined3d_context *context_get_current(void) DECLSPEC_HIDDEN; DWORD context_get_tls_idx(void) DECLSPEC_HIDDEN; +void context_invalidate_state(struct wined3d_context *context, DWORD state_id) DECLSPEC_HIDDEN; void context_release(struct wined3d_context *context) DECLSPEC_HIDDEN; void context_resource_released(const struct wined3d_device *device, struct wined3d_resource *resource, WINED3DRESOURCETYPE type) DECLSPEC_HIDDEN;