Henri Verbeet : wined3d: Properly check if an attribute is used in streamsrc().

Alexandre Julliard julliard at winehq.org
Tue Aug 25 08:44:30 CDT 2009


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

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Tue Aug 25 08:17:11 2009 +0200

wined3d: Properly check if an attribute is used in streamsrc().

---

 dlls/wined3d/state.c |   27 ++++++++++++++++-----------
 1 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 0bbd917..8e05464 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -4426,18 +4426,23 @@ static void streamsrc(DWORD state, IWineD3DStateBlockImpl *stateblock, struct wi
             device->useDrawStridedSlow = FALSE;
         }
     }
-    else if (fixup || (!dataLocations->elements[WINED3D_FFP_PSIZE].data
-            && !dataLocations->position_transformed
-            && (GL_SUPPORT(EXT_VERTEX_ARRAY_BGRA)
-            || (!dataLocations->elements[WINED3D_FFP_DIFFUSE].data
-            && !dataLocations->elements[WINED3D_FFP_SPECULAR].data))))
+    else
     {
-        /* Load the vertex data using named arrays */
-        load_named = TRUE;
-        device->useDrawStridedSlow = FALSE;
-    } else {
-        TRACE("Not loading vertex data\n");
-        device->useDrawStridedSlow = TRUE;
+        WORD slow_mask = (1 << WINED3D_FFP_PSIZE);
+        slow_mask |= -!GL_SUPPORT(EXT_VERTEX_ARRAY_BGRA) & ((1 << WINED3D_FFP_DIFFUSE) | (1 << WINED3D_FFP_SPECULAR));
+
+        if (fixup || (!dataLocations->position_transformed
+                && !(dataLocations->use_map & slow_mask)))
+        {
+            /* Load the vertex data using named arrays */
+            load_named = TRUE;
+            device->useDrawStridedSlow = FALSE;
+        }
+        else
+        {
+            TRACE("Not loading vertex data\n");
+            device->useDrawStridedSlow = TRUE;
+        }
     }
 
     if (context->numberedArraysLoaded && !load_numbered)




More information about the wine-cvs mailing list