Henri Verbeet : wined3d: Framebuffer blits are affected by the color mask.

Alexandre Julliard julliard at winehq.org
Thu Jul 22 12:09:19 CDT 2010


Module: wine
Branch: master
Commit: 3d8ff7f27a8818d6a89192c56f993d0689a419bf
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3d8ff7f27a8818d6a89192c56f993d0689a419bf

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Wed Jul 21 18:48:24 2010 +0200

wined3d: Framebuffer blits are affected by the color mask.

---

 dlls/wined3d/device.c    |    7 +++++++
 dlls/wined3d/swapchain.c |    6 ++++++
 2 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 447aa40..4b87245 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -5835,6 +5835,13 @@ void stretch_rect_fbo(IWineD3DDeviceImpl *device, IWineD3DSurfaceImpl *src_surfa
         context_apply_fbo_state_blit(context, GL_DRAW_FRAMEBUFFER, dst_surface, NULL);
         context_set_draw_buffer(context, GL_COLOR_ATTACHMENT0);
     }
+
+    glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+    IWineD3DDeviceImpl_MarkStateDirty(device, STATE_RENDER(WINED3DRS_COLORWRITEENABLE));
+    IWineD3DDeviceImpl_MarkStateDirty(device, STATE_RENDER(WINED3DRS_COLORWRITEENABLE1));
+    IWineD3DDeviceImpl_MarkStateDirty(device, STATE_RENDER(WINED3DRS_COLORWRITEENABLE2));
+    IWineD3DDeviceImpl_MarkStateDirty(device, STATE_RENDER(WINED3DRS_COLORWRITEENABLE3));
+
     glDisable(GL_SCISSOR_TEST);
     IWineD3DDeviceImpl_MarkStateDirty(device, STATE_RENDER(WINED3DRS_SCISSORTESTENABLE));
 
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index 783033c..87db680 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -126,6 +126,12 @@ static void swapchain_blit(IWineD3DSwapChainImpl *This, struct wined3d_context *
         context_bind_fbo(context, GL_DRAW_FRAMEBUFFER, NULL);
         context_set_draw_buffer(context, GL_BACK);
 
+        glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+        IWineD3DDeviceImpl_MarkStateDirty(device, STATE_RENDER(WINED3DRS_COLORWRITEENABLE));
+        IWineD3DDeviceImpl_MarkStateDirty(device, STATE_RENDER(WINED3DRS_COLORWRITEENABLE1));
+        IWineD3DDeviceImpl_MarkStateDirty(device, STATE_RENDER(WINED3DRS_COLORWRITEENABLE2));
+        IWineD3DDeviceImpl_MarkStateDirty(device, STATE_RENDER(WINED3DRS_COLORWRITEENABLE3));
+
         glDisable(GL_SCISSOR_TEST);
         IWineD3DDeviceImpl_MarkStateDirty(This->device, STATE_RENDER(WINED3DRS_SCISSORTESTENABLE));
 




More information about the wine-cvs mailing list