VirtualBox

Changeset 41475 in vbox


Ignore:
Timestamp:
May 29, 2012 10:14:42 AM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
78225
Message:

wddm/3d: burn fixes + logging enhancements

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

Legend:

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

    r41471 r41475  
    10851085        if (!pDevice->aSamplerTextures[i]) continue;
    10861086        vboxWddmDalCheckAddRc(pDevice, pDevice->aSamplerTextures[i], FALSE);
    1087         ++iSampler; \
    1088     } \
    1089 
     1087        ++iSampler;
     1088    }
    10901089}
    10911090
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispDbg.cpp

    r41472 r41475  
    5050#include <iprt/assert.h>
    5151
     52static void vboxDispLogDbgFormatStringV(char * szBuffer, uint32_t cbBuffer, const char * szString, va_list pArgList)
     53{
     54    uint32_t cbWritten = sprintf(szBuffer, "[0x%x.0x%x] Disp: ", GetCurrentProcessId(), GetCurrentThreadId());
     55    if (cbWritten > cbBuffer)
     56    {
     57        AssertReleaseFailed();
     58        return;
     59    }
     60
     61    _vsnprintf(szBuffer + cbWritten, cbBuffer - cbWritten, szString, pArgList);
     62}
     63
    5264#ifdef VBOXWDDMDISP_DEBUG
    5365#define VBOXWDDMDISP_DEBUG_DUMP_DEFAULT 0
     
    94106DWORD g_VBoxVDbgCfgCreateSwapchainOnDdiOnce = 0;
    95107
    96 static void vboxDispLogDbgFormatStringV(char * szBuffer, uint32_t cbBuffer, const char * szString, va_list pArgList)
    97 {
    98     uint32_t cbWritten = sprintf(szBuffer, "[0x%x.0x%x] Disp: ", GetCurrentProcessId(), GetCurrentThreadId());
    99     if (cbWritten > cbBuffer)
    100     {
    101         AssertReleaseFailed();
    102         return;
    103     }
    104 
    105     _vsnprintf(szBuffer + cbWritten, cbBuffer - cbWritten, szString, pArgList);
    106 }
    107 
    108108void vboxDispLogDbgPrintF(char * szString, ...)
    109109{
     
    174174    DWORD fFlags = pInfo->fFlags;
    175175
    176     if (!VBOXVDBG_DUMP_TYPE_ENABLED(fFlags))
     176    if (!VBOXVDBG_DUMP_TYPE_ENABLED_FOR_INFO(pInfo, fFlags))
    177177        return;
    178178
     
    380380}
    381381
     382VOID vboxVDbgDoDumpSamplers(const char * pPrefix, PVBOXWDDMDISP_DEVICE pDevice, const char * pSuffix, DWORD fFlags)
     383{
     384    for (UINT i = 0, iSampler = 0; iSampler < pDevice->cSamplerTextures; ++i)
     385    {
     386        Assert(i < RT_ELEMENTS(pDevice->aSamplerTextures));
     387        if (!pDevice->aSamplerTextures[i]) continue;
     388        PVBOXWDDMDISP_RESOURCE pRc = pDevice->aSamplerTextures[i];
     389        for (UINT j = 0; j < pRc->cAllocations; ++j)
     390        {
     391            PVBOXWDDMDISP_ALLOCATION pAlloc = &pRc->aAllocations[j];
     392            vboxVDbgDoDumpRcRect(pPrefix, pAlloc, NULL, NULL, pSuffix, fFlags);
     393        }
     394        ++iSampler;
     395    }
     396}
     397
    382398static DECLCALLBACK(void) vboxVDbgLockUnlockSurfTexContentsDumperCb(PVBOXVDBG_DUMP_INFO pInfo, BOOLEAN fBreak, void *pvDumper)
    383399{
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispDbg.h

    r41472 r41475  
    209209typedef struct VBOXWDDMDISP_RESOURCE *PVBOXWDDMDISP_RESOURCE;
    210210
    211 /* functions all dump finally comes to */
    212211#define VBOXVDBG_DUMP_TYPEF_FLOW                   0x00000001
    213212#define VBOXVDBG_DUMP_TYPEF_CONTENTS               0x00000002
    214213#define VBOXVDBG_DUMP_TYPEF_DONT_BREAK_ON_CONTENTS 0x00000004
    215214#define VBOXVDBG_DUMP_TYPEF_BREAK_ON_FLOW          0x00000008
     215#define VBOXVDBG_DUMP_TYPEF_SHARED_ONLY            0x00000010
    216216
    217217#define VBOXVDBG_DUMP_FLAGS_IS_SETANY(_fFlags, _Value) (((_fFlags) & (_Value)) != 0)
     
    222222
    223223#define VBOXVDBG_DUMP_TYPE_ENABLED(_fFlags) (VBOXVDBG_DUMP_FLAGS_IS_SETANY(_fFlags, VBOXVDBG_DUMP_TYPEF_FLOW | VBOXVDBG_DUMP_TYPEF_CONTENTS))
     224#define VBOXVDBG_DUMP_TYPE_ENABLED_FOR_INFO(_pInfo, _fFlags) ( \
     225        VBOXVDBG_DUMP_TYPE_ENABLED(_fFlags) \
     226        && ( \
     227                   !(_pInfo)->pAlloc \
     228                || (_pInfo)->pAlloc->pRc->aAllocations[0].hSharedHandle \
     229                || VBOXVDBG_DUMP_FLAGS_IS_CLEARED(_fFlags, VBOXVDBG_DUMP_TYPEF_SHARED_ONLY) \
     230            ))
     231
    224232#define VBOXVDBG_DUMP_TYPE_FLOW_ONLY(_fFlags) (VBOXVDBG_DUMP_FLAGS_IS_SET(_fFlags, VBOXVDBG_DUMP_TYPEF_FLOW) \
    225233        && VBOXVDBG_DUMP_FLAGS_IS_CLEARED(_fFlags, VBOXVDBG_DUMP_TYPEF_CONTENTS))
     
    234242VOID vboxVDbgDoDumpRcRect(const char * pPrefix, PVBOXWDDMDISP_ALLOCATION pAlloc, IDirect3DResource9 *pD3DRc, RECT *pRect, const char * pSuffix, DWORD fFlags);
    235243VOID vboxVDbgDoDumpLockUnlockSurfTex(const char * pPrefix, const PVBOXWDDMDISP_ALLOCATION pAlloc, const char * pSuffix, DWORD fFlags);
    236 /* */
    237 
    238244VOID vboxVDbgDoDumpRt(const char * pPrefix, struct VBOXWDDMDISP_DEVICE *pDevice, const char * pSuffix, DWORD fFlags);
    239245VOID vboxVDbgDoDumpBb(const char * pPrefix, IDirect3DSwapChain9 *pSwapchainIf, const char * pSuffix, DWORD fFlags);
    240246VOID vboxVDbgDoDumpFb(const char * pPrefix, IDirect3DSwapChain9 *pSwapchainIf, const char * pSuffix, DWORD fFlags);
     247VOID vboxVDbgDoDumpSamplers(const char * pPrefix, struct VBOXWDDMDISP_DEVICE *pDevice, const char * pSuffix, DWORD fFlags);
    241248
    242249void vboxVDbgDoPrintRect(const char * pPrefix, const RECT *pRect, const char * pSuffix);
     
    376383        { \
    377384            vboxVDbgDoDumpRt("==>"__FUNCTION__": Rt: ", (_pDevice), "", VBOXVDBG_DUMP_FLAGS_FOR_TYPE(Flush) | VBOXVDBG_DUMP_FLAGS_FOR_TYPE(DrawPrim)); \
     385            vboxVDbgDoDumpSamplers("==>"__FUNCTION__": Sl: ", (_pDevice), "", VBOXVDBG_DUMP_FLAGS_FOR_TYPE(Flush) | VBOXVDBG_DUMP_FLAGS_FOR_TYPE(DrawPrim)); \
    378386        }\
    379387    } while (0)
     
    387395            vboxVDbgDoDumpRt("<=="__FUNCTION__": Rt: ", (_pDevice), "", \
    388396                VBOXVDBG_DUMP_FLAGS_FOR_TYPE(DrawPrim) | VBOXVDBG_DUMP_FLAGS_FOR_TYPE(Shared)); \
     397            vboxVDbgDoDumpSamplers("<=="__FUNCTION__": Sl: ", (_pDevice), "", VBOXVDBG_DUMP_FLAGS_FOR_TYPE(Flush) | VBOXVDBG_DUMP_FLAGS_FOR_TYPE(DrawPrim)); \
    389398        }\
    390399    } while (0)
Note: See TracChangeset for help on using the changeset viewer.

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