From e02d43f7f31f4eca8f1803cc20ef3d6cd47bb41b Mon Sep 17 00:00:00 2001 From: Jon Ashburn Date: Tue, 17 Feb 2015 13:28:11 -0700 Subject: glave: Add Dump() to debugger so DrawState dumping can occur on pauses Conflicts: glave-generate.py --- glave-generate.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/glave-generate.py b/glave-generate.py index 258c353a..7742d552 100755 --- a/glave-generate.py +++ b/glave-generate.py @@ -1824,6 +1824,7 @@ class Subcommand(object): cd_body.append(' virtual int init(glv_replay::Display & disp) = 0;') cd_body.append(' virtual void push_validation_msg(XGL_VALIDATION_LEVEL validationLevel, XGL_BASE_OBJECT srcObject, size_t location, int32_t msgCode, const char* pMsg) = 0;') cd_body.append(' virtual glv_replay::GLV_REPLAY_RESULT pop_validation_msgs() = 0;') + cd_body.append(' virtual int dump_validation_data() = 0;') cd_body.append('};\n') cd_body.append('class xglDisplay: public glv_replay::DisplayImp {') cd_body.append('friend class xglReplay;') @@ -1932,8 +1933,10 @@ class Subcommand(object): rc_body.append(' glv_replay::GLV_REPLAY_RESULT handle_replay_errors(const char* entrypointName, const XGL_RESULT resCall, const XGL_RESULT resTrace, const glv_replay::GLV_REPLAY_RESULT resIn);\n') rc_body.append(' void push_validation_msg(XGL_VALIDATION_LEVEL validationLevel, XGL_BASE_OBJECT srcObject, size_t location, int32_t msgCode, const char* pMsg);') rc_body.append(' glv_replay::GLV_REPLAY_RESULT pop_validation_msgs();') + rc_body.append(' int dump_validation_data();') rc_body.append('private:') rc_body.append(' struct xglFuncs m_xglFuncs;') + rc_body.append(' DRAW_STATE_DUMP_DOT_FILE m_pDSDump;') rc_body.append(' xglDisplay *m_display;') rc_body.append(' struct shaderPair {') rc_body.append(' XGL_SHADER *addr;') @@ -2406,6 +2409,15 @@ class Subcommand(object): rvf_body.append(' m_validationMsgs.clear();') rvf_body.append(' return glv_replay::GLV_REPLAY_VALIDATION_ERROR;') rvf_body.append('}') + rvf_body.append('int xglReplay::dump_validation_data()') + rvf_body.append('{') + rvf_body.append(' if (m_pDSDump)') + rvf_body.append(' {') + rvf_body.append(' m_pDSDump((char *) "pipeline_dump.dot");') + rvf_body.append(' return 0;') + rvf_body.append(' }') + rvf_body.append(' return -1;') + rvf_body.append('}') return "\n".join(rvf_body) def _generate_replay_init_funcs(self): @@ -2557,9 +2569,6 @@ class Subcommand(object): cd_body.append(' if (g_xglReplaySettings.debugLevel > 0)') cd_body.append(' {') cd_body.append(' XGL_DEVICE_CREATE_INFO cInfo, *ci, *pCreateInfoSaved;') - cd_body.append(' // TODO what is the real list of layers to be running with??') -# cd_body.append(' const char * layersStr[2] = {(char *) "DrawState", (char *) "ObjectTracker"};') - cd_body.append(' unsigned int numLayers = 0;') cd_body.append(' char ** layersStr = get_enableLayers_list(&numLayers);') cd_body.append(' apply_layerSettings_overrides();') @@ -2589,6 +2598,7 @@ class Subcommand(object): cd_body.append(' release_enableLayer_list(layersStr);') 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(' }') cd_body.append(' else ') cd_body.append(' replayResult = m_xglFuncs.real_xglCreateDevice(remap(pPacket->gpu), pPacket->pCreateInfo, &device);') @@ -3645,6 +3655,7 @@ class GlaveReplayHeader(Subcommand): header_txt.append('#else') header_txt.append('#include "xglWsiWinExt.h"') header_txt.append('#endif') + header_txt.append('#include "draw_state.h"') return "\n".join(header_txt) def generate_body(self): -- cgit v1.2.3