[PATCH] wined3d: improve drawStridedInstanced()

Rico Schüller kgbricola at web.de
Sun Apr 6 09:33:10 CDT 2008


---
 dlls/wined3d/drawprim.c |   16 +++++++---------
 1 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
index fc09b75..4745d67 100644
--- a/dlls/wined3d/drawprim.c
+++ b/dlls/wined3d/drawprim.c
@@ -838,15 +838,13 @@ static inline void drawStridedInstanced(IWineD3DDevice *iface, WineDirect3DVerte
 
     /* First, figure out how many instances we have to draw */
     for(i = 0; i < MAX_STREAMS; i++) {
-        /* Look at all non-instanced streams */
-        if(!(stateblock->streamFlags[i] & WINED3DSTREAMSOURCE_INSTANCEDATA) &&
-           stateblock->streamSource[i]) {
-            int inst = stateblock->streamFreq[i];
-
-            if(numInstances && inst != numInstances) {
-                ERR("Two streams specify a different number of instances. Got %d, new is %d\n", numInstances, inst);
-            }
-            numInstances = inst;
+        /* Look at all streams and take the first one which matches */
+        if(((stateblock->streamFlags[i] & WINED3DSTREAMSOURCE_INSTANCEDATA) || (stateblock->streamFlags[i] & WINED3DSTREAMSOURCE_INDEXEDDATA)) && stateblock->streamSource[i]) {
+            if(stateblock->streamFreq[i] == 0)
+                numInstances = 1;
+            else
+                numInstances = stateblock->streamFreq[i];
+            break;
         }
     }
 
-- 
1.5.3.3


--------------020107060106070409020800--



More information about the wine-patches mailing list