VirtualBox

Ignore:
Timestamp:
May 29, 2012 7:12:09 AM (13 years ago)
Author:
vboxsync
Message:

wddm/3d: more correct shared rc usage reporting

File:
1 edited

Legend:

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

    r41337 r41471  
    10591059}
    10601060
    1061 static VOID vboxWddmDalCheckAddRts(PVBOXWDDMDISP_DEVICE pDevice)
     1061static DECLINLINE(BOOLEAN) vboxWddmDalCheckAddRc(PVBOXWDDMDISP_DEVICE pDevice, PVBOXWDDMDISP_RESOURCE pRc, BOOLEAN fWrite)
     1062{
     1063    BOOLEAN fChanged = FALSE;
     1064    for (UINT i = 0; i < pRc->cAllocations; ++i)
     1065    {
     1066        PVBOXWDDMDISP_ALLOCATION pDAlloc = &pRc->aAllocations[i];
     1067        fChanged |= vboxWddmDalCheckAdd(pDevice, pDAlloc, fWrite);
     1068    }
     1069    return fChanged;
     1070}
     1071
     1072static VOID vboxWddmDalCheckAddRtsSamplers(PVBOXWDDMDISP_DEVICE pDevice)
    10621073{
    10631074    for (UINT i = 0; i < pDevice->cRTs; ++i)
     
    10681079        }
    10691080    }
     1081
     1082    for (UINT i = 0, iSampler = 0; iSampler < pDevice->cSamplerTextures; ++i)
     1083    {
     1084        Assert(i < RT_ELEMENTS(pDevice->aSamplerTextures));
     1085        if (!pDevice->aSamplerTextures[i]) continue;
     1086        vboxWddmDalCheckAddRc(pDevice, pDevice->aSamplerTextures[i], FALSE);
     1087        ++iSampler; \
     1088    } \
     1089
    10701090}
    10711091
     
    35273547        }
    35283548
    3529 #ifdef VBOXWDDMDISP_DEBUG
    35303549        Assert(pDevice->cSamplerTextures < RT_ELEMENTS(pDevice->aSamplerTextures));
    35313550        int idx = VBOXWDDMDISP_SAMPLER_IDX(Stage);
     
    35503569            WARN(("incorrect dampler index1! (%d)\n", Stage));
    35513570        }
    3552 #endif
    35533571    }
    35543572    else
    35553573    {
    35563574        pD3DIfTex = NULL;
    3557 #ifdef VBOXWDDMDISP_DEBUG
    35583575        Assert(pDevice->cSamplerTextures < RT_ELEMENTS(pDevice->aSamplerTextures));
    35593576        int idx = VBOXWDDMDISP_SAMPLER_IDX(Stage);
     
    35733590            WARN(("incorrect dampler index2! (%d)\n", Stage));
    35743591        }
    3575 #endif
    35763592    }
    35773593
     
    37533769    }
    37543770
    3755     vboxWddmDalCheckAddRts(pDevice);
     3771    vboxWddmDalCheckAddRtsSamplers(pDevice);
    37563772
    37573773    VBOXVDBG_DUMP_DRAWPRIM_LEAVE(pDevice);
     
    38073823    Assert(hr == S_OK);
    38083824
    3809     vboxWddmDalCheckAddRts(pDevice);
     3825    vboxWddmDalCheckAddRtsSamplers(pDevice);
    38103826
    38113827    VBOXVDBG_DUMP_DRAWPRIM_LEAVE(pDevice);
     
    38233839    VBOXDISPCRHGSMI_SCOPE_SET_DEV(pDevice);
    38243840    Assert(0);
    3825     vboxWddmDalCheckAddRts(pDevice);
     3841    vboxWddmDalCheckAddRtsSamplers(pDevice);
    38263842    vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
    38273843    return E_FAIL;
     
    38363852    VBOXDISPCRHGSMI_SCOPE_SET_DEV(pDevice);
    38373853    Assert(0);
    3838     vboxWddmDalCheckAddRts(pDevice);
     3854    vboxWddmDalCheckAddRtsSamplers(pDevice);
    38393855    vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
    38403856    return E_FAIL;
     
    39293945#endif
    39303946
    3931     vboxWddmDalCheckAddRts(pDevice);
     3947    vboxWddmDalCheckAddRtsSamplers(pDevice);
    39323948
    39333949    VBOXVDBG_DUMP_DRAWPRIM_LEAVE(pDevice);
     
    39463962    VBOXDISPCRHGSMI_SCOPE_SET_DEV(pDevice);
    39473963    Assert(0);
    3948     vboxWddmDalCheckAddRts(pDevice);
     3964    vboxWddmDalCheckAddRtsSamplers(pDevice);
    39493965    vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
    39503966    return E_FAIL;
     
    40494065    }
    40504066
    4051     for (UINT i = 0; i < pDstRc->cAllocations; ++i)
    4052     {
    4053         PVBOXWDDMDISP_ALLOCATION pDAlloc = &pDstRc->aAllocations[i];
    4054         vboxWddmDalCheckAdd(pDevice, pDAlloc, TRUE);
    4055     }
    4056 
    4057     for (UINT i = 0; i < pSrcRc->cAllocations; ++i)
    4058     {
    4059         PVBOXWDDMDISP_ALLOCATION pDAlloc = &pSrcRc->aAllocations[i];
    4060         vboxWddmDalCheckAdd(pDevice, pDAlloc, FALSE);
    4061     }
     4067    vboxWddmDalCheckAddRc(pDevice, pDstRc, TRUE);
     4068    vboxWddmDalCheckAddRc(pDevice, pSrcRc, FALSE);
    40624069
    40634070    vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p), hr(0x%x)\n", hDevice, hr));
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