VirtualBox

Changeset 46606 in vbox for trunk/src/VBox/Additions/WINNT


Ignore:
Timestamp:
Jun 17, 2013 6:59:28 PM (12 years ago)
Author:
vboxsync
Message:

wddm/3d: fix DrawPrimitive impl

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.cpp

    r46593 r46606  
    24462446    VBOXVDBG_DUMP_DRAWPRIM_ENTER(pDevice);
    24472447
    2448     if (!pDevice->cStreamSources)
    2449     {
    2450         if (pDevice->aStreamSourceUm[0].pvBuffer)
    2451         {
     2448    if (pDevice->cStreamSourcesUm)
     2449    {
    24522450#ifdef DEBUG
    2453             for (UINT i = 1; i < RT_ELEMENTS(pDevice->aStreamSourceUm); ++i)
    2454             {
    2455                 Assert(!pDevice->aStreamSourceUm[i].pvBuffer);
    2456             }
     2451        uint32_t cStreams = 0;
     2452        for (UINT i = 0; i < RT_ELEMENTS(pDevice->aStreamSourceUm); ++i)
     2453        {
     2454            if(pDevice->aStreamSourceUm[i].pvBuffer)
     2455            {
     2456                ++cStreams;
     2457            }
     2458        }
     2459
     2460        Assert(cStreams);
     2461        Assert(cStreams == pDevice->cStreamSourcesUm);
    24572462#endif
    2458             hr = pDevice9If->DrawPrimitiveUP(pData->PrimitiveType,
    2459                                       pData->PrimitiveCount,
    2460                                       ((uint8_t*)pDevice->aStreamSourceUm[0].pvBuffer) + pData->VStart * pDevice->aStreamSourceUm[0].cbStride,
    2461                                       pDevice->aStreamSourceUm[0].cbStride);
    2462             Assert(hr == S_OK);
    2463 
    2464 //            vboxVDbgMpPrintF((pDevice, __FUNCTION__": DrawPrimitiveUP\n"));
     2463        if (pDevice->cStreamSourcesUm == 1)
     2464        {
     2465            for (UINT i = 0; i < RT_ELEMENTS(pDevice->aStreamSourceUm); ++i)
     2466            {
     2467                if(pDevice->aStreamSourceUm[i].pvBuffer)
     2468                {
     2469                    hr = pDevice9If->DrawPrimitiveUP(pData->PrimitiveType,
     2470                                              pData->PrimitiveCount,
     2471                                              ((uint8_t*)pDevice->aStreamSourceUm[i].pvBuffer) + pData->VStart * pDevice->aStreamSourceUm[i].cbStride,
     2472                                              pDevice->aStreamSourceUm[i].cbStride);
     2473                    Assert(hr == S_OK);
     2474                    break;
     2475                }
     2476            }
    24652477        }
    24662478        else
    24672479        {
    24682480            /* todo: impl */
    2469             Assert(0);
     2481            WARN(("multiple user stream sources (%d) not implemented!!", pDevice->cStreamSourcesUm));
    24702482        }
    24712483    }
     
    24742486
    24752487#ifdef DEBUG
     2488        Assert(!pDevice->cStreamSourcesUm);
    24762489            for (UINT i = 0; i < RT_ELEMENTS(pDevice->aStreamSourceUm); ++i)
    24772490            {
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette