[PATCH 2/5] wined3d: Don't load a rendertarget just because alpha test is enabled.

Henri Verbeet hverbeet at codeweavers.com
Fri Jun 19 04:04:31 CDT 2009


Unlike the depth test, the alpha test doesn't compare to the existing fragment
but against a reference value.
---
 dlls/wined3d/drawprim.c |   23 +++++++++++------------
 1 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
index 5ff7477..c644aa2 100644
--- a/dlls/wined3d/drawprim.c
+++ b/dlls/wined3d/drawprim.c
@@ -554,22 +554,21 @@ void drawPrimitive(IWineD3DDevice *iface, UINT index_count, UINT numberOfVertice
 
     IWineD3DDeviceImpl           *This = (IWineD3DDeviceImpl *)iface;
     IWineD3DSurfaceImpl          *target;
-    BOOL load_rt, modify_rt;
     unsigned int i;
 
     if (!index_count) return;
 
-    load_rt = This->stateBlock->renderState[WINED3DRS_COLORWRITEENABLE]
-            || This->stateBlock->renderState[WINED3DRS_ALPHATESTENABLE]
-            || This->stateBlock->renderState[WINED3DRS_COLORKEYENABLE];
-    modify_rt = This->stateBlock->renderState[WINED3DRS_COLORWRITEENABLE];
-
-    /* Invalidate the back buffer memory so LockRect will read it the next time */
-    for(i = 0; i < GL_LIMITS(buffers); i++) {
-        target = (IWineD3DSurfaceImpl *) This->render_targets[i];
-        if (target) {
-            if (load_rt) IWineD3DSurface_LoadLocation((IWineD3DSurface *)target, SFLAG_INDRAWABLE, NULL);
-            if (modify_rt) IWineD3DSurface_ModifyLocation((IWineD3DSurface *)target, SFLAG_INDRAWABLE, TRUE);
+    if (This->stateBlock->renderState[WINED3DRS_COLORWRITEENABLE])
+    {
+        /* Invalidate the back buffer memory so LockRect will read it the next time */
+        for (i = 0; i < GL_LIMITS(buffers); ++i)
+        {
+            target = (IWineD3DSurfaceImpl *)This->render_targets[i];
+            if (target)
+            {
+                IWineD3DSurface_LoadLocation((IWineD3DSurface *)target, SFLAG_INDRAWABLE, NULL);
+                IWineD3DSurface_ModifyLocation((IWineD3DSurface *)target, SFLAG_INDRAWABLE, TRUE);
+            }
         }
     }
 
-- 
1.6.0.6




More information about the wine-patches mailing list