cd_body.append(' XGL_DEVICE device;')
cd_body.append(' if (m_debugLevel > 0)')
cd_body.append(' {')
- cd_body.append(' XGL_DEVICE_CREATE_INFO cInfo, *ci;')
+ 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 XGL_CHAR * layersStr[2] = {(XGL_CHAR *) "DrawState", (XGL_CHAR *) "ObjectTracker"};')
cd_body.append(' XGL_LAYER_CREATE_INFO layerInfo;')
+ cd_body.append(' pCreateInfoSaved = (XGL_DEVICE_CREATE_INFO *) pPacket->pCreateInfo;')
cd_body.append(' ci = (XGL_DEVICE_CREATE_INFO *) pPacket->pCreateInfo;')
cd_body.append(' while (ci->pNext != NULL)')
cd_body.append(' ci = (XGL_DEVICE_CREATE_INFO *) ci->pNext;')
cd_body.append(' cInfo.maxValidationLevel = (XGL_VALIDATION_LEVEL)((m_debugLevel <= 4) ? XGL_VALIDATION_LEVEL_0 + m_debugLevel : XGL_VALIDATION_LEVEL_0);')
cd_body.append(' pPacket->pCreateInfo = &cInfo;')
cd_body.append(' replayResult = m_xglFuncs.real_xglCreateDevice(remap(pPacket->gpu), pPacket->pCreateInfo, &device);')
+ cd_body.append(' // restore the packet for next replay')
+ cd_body.append(' ci->pNext = NULL;')
+ cd_body.append(' pPacket->pCreateInfo = pCreateInfoSaved;')
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(' }')