VirtualBox

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


Ignore:
Timestamp:
Jun 26, 2011 2:13:00 PM (14 years ago)
Author:
vboxsync
Message:

wddm/3d: propper handling of ID3DDevice::Clear

Location:
trunk/src/VBox/Additions/WINNT/Graphics/Video
Files:
3 edited

Legend:

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

    r37626 r37640  
    25912591}
    25922592
     2593static HRESULT vboxWddmSwapchainBbUpdate(PVBOXWDDMDISP_DEVICE pDevice, PVBOXWDDMDISP_SWAPCHAIN pSwapchain, PVBOXWDDMDISP_ALLOCATION pBbAlloc)
     2594{
     2595    for (UINT i = 0; i < pSwapchain->cRTs; ++i)
     2596    {
     2597        PVBOXWDDMDISP_ALLOCATION pCurBb = vboxWddmSwapchainGetBb(pSwapchain)->pAlloc;
     2598        if (pCurBb == pBbAlloc)
     2599            return S_OK;
     2600
     2601        HRESULT hr = vboxWddmSwapchainPresentPerform(pDevice, pSwapchain);
     2602        if (FAILED(hr))
     2603        {
     2604            WARN(("vboxWddmSwapchainPresentPerform failed, hr (0x%x)", hr));
     2605            return hr;
     2606        }
     2607    }
     2608
     2609    AssertMsgFailed(("the given allocation not par of the swapchain\n"));
     2610    return E_FAIL;
     2611}
     2612
    25932613static HRESULT vboxWddmSwapchainPresent(PVBOXWDDMDISP_DEVICE pDevice, PVBOXWDDMDISP_ALLOCATION pBbAlloc)
    25942614{
     
    29632983    IDirect3DDevice9 * pDevice9If = VBOXDISP_D3DEV(pDevice);
    29642984    PVBOXWDDMDISP_SWAPCHAIN pSwapchain = vboxWddmSwapchainForAlloc(pAlloc);
     2985    HRESULT hr = S_OK;
    29652986    if (pSwapchain)
    29662987    {
    2967         /* backbuffer */
    2968         Assert(vboxWddmSwapchainGetBb(pSwapchain)->pAlloc == pAlloc);
    2969     }
    2970 
    2971     HRESULT hr = S_OK;
     2988        hr = vboxWddmSwapchainBbUpdate(pDevice, pSwapchain, pAlloc);
     2989        if (FAILED(hr))
     2990            return hr;
     2991    }
     2992
    29722993    IDirect3DSurface9 *pD3D9Surf;
    29732994    if (!bOnSwapchainSynch && pSwapchain)
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispDbg.cpp

    r37300 r37640  
    448448        case 0x000006d9: /* <- RPC exception, ignore */
    449449        case 0x406d1388: /* <- VS/WinDbg thread naming exception, ignore */
     450        case 0xe0434f4d: /* <- CLR exception */
    450451            break;
    451452        default:
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.cpp

    r37626 r37640  
    8282    if (pTbl->cSize == pTbl->cData)
    8383    {
    84         Assert(0);
    8584        NTSTATUS Status = vboxWddmHTableRealloc(pTbl, pTbl->cSize + RT_MAX(10, pTbl->cSize/4));
    8685        Assert(Status == STATUS_SUCCESS);
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