Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.cpp	(revision 46605)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.cpp	(revision 46606)
@@ -2446,26 +2446,38 @@
     VBOXVDBG_DUMP_DRAWPRIM_ENTER(pDevice);
 
-    if (!pDevice->cStreamSources)
-    {
-        if (pDevice->aStreamSourceUm[0].pvBuffer)
-        {
+    if (pDevice->cStreamSourcesUm)
+    {
 #ifdef DEBUG
-            for (UINT i = 1; i < RT_ELEMENTS(pDevice->aStreamSourceUm); ++i)
-            {
-                Assert(!pDevice->aStreamSourceUm[i].pvBuffer);
-            }
+        uint32_t cStreams = 0;
+        for (UINT i = 0; i < RT_ELEMENTS(pDevice->aStreamSourceUm); ++i)
+        {
+            if(pDevice->aStreamSourceUm[i].pvBuffer)
+            {
+                ++cStreams;
+            }
+        }
+
+        Assert(cStreams);
+        Assert(cStreams == pDevice->cStreamSourcesUm);
 #endif
-            hr = pDevice9If->DrawPrimitiveUP(pData->PrimitiveType,
-                                      pData->PrimitiveCount,
-                                      ((uint8_t*)pDevice->aStreamSourceUm[0].pvBuffer) + pData->VStart * pDevice->aStreamSourceUm[0].cbStride,
-                                      pDevice->aStreamSourceUm[0].cbStride);
-            Assert(hr == S_OK);
-
-//            vboxVDbgMpPrintF((pDevice, __FUNCTION__": DrawPrimitiveUP\n"));
+        if (pDevice->cStreamSourcesUm == 1)
+        {
+            for (UINT i = 0; i < RT_ELEMENTS(pDevice->aStreamSourceUm); ++i)
+            {
+                if(pDevice->aStreamSourceUm[i].pvBuffer)
+                {
+                    hr = pDevice9If->DrawPrimitiveUP(pData->PrimitiveType,
+                                              pData->PrimitiveCount,
+                                              ((uint8_t*)pDevice->aStreamSourceUm[i].pvBuffer) + pData->VStart * pDevice->aStreamSourceUm[i].cbStride,
+                                              pDevice->aStreamSourceUm[i].cbStride);
+                    Assert(hr == S_OK);
+                    break;
+                }
+            }
         }
         else
         {
             /* todo: impl */
-            Assert(0);
+            WARN(("multiple user stream sources (%d) not implemented!!", pDevice->cStreamSourcesUm));
         }
     }
@@ -2474,4 +2486,5 @@
 
 #ifdef DEBUG
+        Assert(!pDevice->cStreamSourcesUm);
             for (UINT i = 0; i < RT_ELEMENTS(pDevice->aStreamSourceUm); ++i)
             {
