Skip to content
Snippets Groups Projects
Commit c2ede1d4 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard
Browse files

wined3d: Only invalidate state for the current context in swapchain_blit().

parent 68d692f4
Branches
Tags
No related merge requests found
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment