diff options
| author | Peter Lohrmann <peterl@valvesoftware.com> | 2015-02-27 08:34:47 -0800 |
|---|---|---|
| committer | Peter Lohrmann <peterl@valvesoftware.com> | 2015-02-27 08:38:07 -0800 |
| commit | c6f4127c6e3a5f69c5f5f3ebba2c7ed40442bba3 (patch) | |
| tree | 5e00cacd9cec63aa1986c7e918edf686a394c353 | |
| parent | eeb77b76a815d6b534670764089f819fd5f8d2b1 (diff) | |
| parent | 8f19c7f45b3b4690482487fa151652ce82b287a4 (diff) | |
| download | usermoji-c6f4127c6e3a5f69c5f5f3ebba2c7ed40442bba3.tar.xz | |
Merge ReplayThread change with Detach Replay Window.
| -rwxr-xr-x | glave-generate.py | 11 | ||||
| -rw-r--r-- | layers/draw_state.h | 2 | ||||
| -rw-r--r-- | layers/mem_tracker.c | 16 |
3 files changed, 19 insertions, 10 deletions
diff --git a/glave-generate.py b/glave-generate.py index 94de7d1f..e8a0adb7 100755 --- a/glave-generate.py +++ b/glave-generate.py @@ -1945,6 +1945,7 @@ class Subcommand(object): rc_body.append('private:') rc_body.append(' struct xglFuncs m_xglFuncs;') rc_body.append(' DRAW_STATE_DUMP_DOT_FILE m_pDSDump;') + rc_body.append(' DRAW_STATE_DUMP_COMMAND_BUFFER_DOT_FILE m_pCBDump;') rc_body.append(' xglDisplay *m_display;') rc_body.append(' struct shaderPair {') rc_body.append(' XGL_SHADER *addr;') @@ -2420,12 +2421,13 @@ class Subcommand(object): rvf_body.append('}') rvf_body.append('int xglReplay::dump_validation_data()') rvf_body.append('{') - rvf_body.append(' if (m_pDSDump)') + rvf_body.append(' if (!m_pDSDump || !m_pCBDump)') rvf_body.append(' {') - rvf_body.append(' m_pDSDump((char *) "pipeline_dump.dot");') - rvf_body.append(' return 0;') + rvf_body.append(' return -1;') rvf_body.append(' }') - rvf_body.append(' return -1;') + rvf_body.append(' m_pDSDump((char *) "pipeline_dump.dot");') + rvf_body.append(' m_pCBDump((char *) "cb_dump.dot");') + rvf_body.append(' return 0;') rvf_body.append('}') return "\n".join(rvf_body) @@ -2608,6 +2610,7 @@ class Subcommand(object): cd_body.append(' if (xglDbgRegisterMsgCallback(g_fpDbgMsgCallback, NULL) != XGL_SUCCESS)') cd_body.append(' glv_LogError("Failed to register xgl callback for replayer error handling\\n");') cd_body.append(' m_pDSDump = (DRAW_STATE_DUMP_DOT_FILE) m_xglFuncs.real_xglGetProcAddr(remap(pPacket->gpu), "drawStateDumpDotFile");') + cd_body.append(' m_pCBDump = (DRAW_STATE_DUMP_COMMAND_BUFFER_DOT_FILE) m_xglFuncs.real_xglGetProcAddr(remap(pPacket->gpu), "drawStateDumpCommandBufferDotFile");') cd_body.append(' }') cd_body.append(' else ') cd_body.append(' replayResult = m_xglFuncs.real_xglCreateDevice(remap(pPacket->gpu), pPacket->pCreateInfo, &device);') diff --git a/layers/draw_state.h b/layers/draw_state.h index 7466e389..3fcf820e 100644 --- a/layers/draw_state.h +++ b/layers/draw_state.h @@ -220,6 +220,8 @@ typedef struct _GLOBAL_CB_NODE { //prototypes for extension functions void drawStateDumpDotFile(char* outFileName); void drawStateDumpPngFile(char* outFileName); +void drawStateDumpCommandBufferDotFile(char* outFileName); // Func ptr typedefs typedef void (*DRAW_STATE_DUMP_DOT_FILE)(char*); typedef void (*DRAW_STATE_DUMP_PNG_FILE)(char*); +typedef void (*DRAW_STATE_DUMP_COMMAND_BUFFER_DOT_FILE)(char*); diff --git a/layers/mem_tracker.c b/layers/mem_tracker.c index df2cdd73..0c36934a 100644 --- a/layers/mem_tracker.c +++ b/layers/mem_tracker.c @@ -365,7 +365,7 @@ static void reportMemReferences(const GLOBAL_MEM_OBJ_NODE* pMemObjTrav) if (refCount != pMemObjTrav->refCount) { char str[1024]; sprintf(str, "Refcount of %u for Mem Obj %p does't match reported refs of %u", pMemObjTrav->refCount, pMemObjTrav->mem, refCount); - layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, pObjTrav->object, 0, MEMTRACK_INTERNAL_ERROR, "MEM", str); + layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, pMemObjTrav->mem, 0, MEMTRACK_INTERNAL_ERROR, "MEM", str); } } @@ -558,10 +558,10 @@ static bool32_t updateObjectBinding(XGL_OBJECT object, XGL_GPU_MEMORY mem) } char str[1024]; GLOBAL_OBJECT_NODE* pGlobalObjTrav = getGlobalObjectNode(object); - assert(pGlobalObjTrav); if (!pGlobalObjTrav) { sprintf(str, "Attempting to update Binding of Obj(%p) that's not in global list()", (void*)object); layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, object, 0, MEMTRACK_INTERNAL_ERROR, "MEM", str); + return XGL_FALSE; } // non-null case so should have real mem obj GLOBAL_MEM_OBJ_NODE* pTrav = getGlobalMemNode(mem); @@ -655,11 +655,15 @@ static void printMemList() layerCbMsg(XGL_DBG_MSG_UNKNOWN, XGL_VALIDATION_LEVEL_0, NULL, 0, MEMTRACK_NONE, "MEM", str); sprintf(str, " pNext Mem Obj Node: %p", (void*)pTrav->pNextGlobalNode); layerCbMsg(XGL_DBG_MSG_UNKNOWN, XGL_VALIDATION_LEVEL_0, NULL, 0, MEMTRACK_NONE, "MEM", str); - if (0 != pTrav->allocInfo.allocationSize) - sprintf(str, " Mem Alloc info:\n%s", xgl_print_xgl_memory_alloc_info(&pTrav->allocInfo, "{MEM}INFO : ")); - else + if (0 != pTrav->allocInfo.allocationSize) { + char* pAllocInfoMsg = xgl_print_xgl_memory_alloc_info(&pTrav->allocInfo, "{MEM}INFO : "); + sprintf(str, " Mem Alloc info:\n%s", pAllocInfoMsg); + layerCbMsg(XGL_DBG_MSG_UNKNOWN, XGL_VALIDATION_LEVEL_0, NULL, 0, MEMTRACK_NONE, "MEM", str); + free(pAllocInfoMsg); + } else { sprintf(str, " Mem Alloc info is NULL (alloc done by xglWsiX11CreatePresentableImage())"); - layerCbMsg(XGL_DBG_MSG_UNKNOWN, XGL_VALIDATION_LEVEL_0, NULL, 0, MEMTRACK_NONE, "MEM", str); + layerCbMsg(XGL_DBG_MSG_UNKNOWN, XGL_VALIDATION_LEVEL_0, NULL, 0, MEMTRACK_NONE, "MEM", str); + } MINI_NODE* pObjTrav = pTrav->pObjBindings; if (!pObjTrav) { sprintf(str, " No XGL Object bindings"); |
