diff options
| author | Jon Ashburn <jon@lunarg.com> | 2015-02-17 13:28:11 -0700 |
|---|---|---|
| committer | Jon Ashburn <jon@lunarg.com> | 2015-02-24 11:52:55 -0700 |
| commit | e02d43f7f31f4eca8f1803cc20ef3d6cd47bb41b (patch) | |
| tree | 0ab07c3f80ecbec4b8990bb43b420fbc708f4db2 | |
| parent | b88a55b71fceadabda1c0c9b76e6330217f62939 (diff) | |
| download | usermoji-e02d43f7f31f4eca8f1803cc20ef3d6cd47bb41b.tar.xz | |
glave: Add Dump() to debugger so DrawState dumping can occur on pauses
Conflicts:
glave-generate.py
| -rwxr-xr-x | glave-generate.py | 17 |
1 files 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): |
