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;')
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;')
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):
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();')
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);')
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):