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 XGL_CHAR * layersStr[2] = {(XGL_CHAR *) "DrawState", (XGL_CHAR *) "ObjectTracker"};')
+# cd_body.append(' const XGL_CHAR * layersStr[2] = {(XGL_CHAR *) "DrawState", (XGL_CHAR *) "ObjectTracker"};')
+
+ cd_body.append(' unsigned int numLayers = 0;')
+ cd_body.append(' XGL_CHAR ** layersStr = get_enableLayers_list(&numLayers);')
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(' ci->pNext = &layerInfo;')
- cd_body.append(' layerInfo.sType = XGL_STRUCTURE_TYPE_LAYER_CREATE_INFO;')
- cd_body.append(' layerInfo.pNext = 0;')
- cd_body.append(' layerInfo.layerCount = 2;')
- cd_body.append(' layerInfo.ppActiveLayerNames = layersStr;')
+
+ cd_body.append(' if (layersStr != NULL && numLayers > 0)')
+ cd_body.append(' {')
+ cd_body.append(' while (ci->pNext != NULL)')
+ cd_body.append(' ci = (XGL_DEVICE_CREATE_INFO *) ci->pNext;')
+ cd_body.append(' ci->pNext = &layerInfo;')
+ cd_body.append(' layerInfo.sType = XGL_STRUCTURE_TYPE_LAYER_CREATE_INFO;')
+ cd_body.append(' layerInfo.pNext = 0;')
+ cd_body.append(' layerInfo.layerCount = numLayers;')
+ cd_body.append(' layerInfo.ppActiveLayerNames = layersStr;')
+ cd_body.append(' }')
+
cd_body.append(' memcpy(&cInfo, pPacket->pCreateInfo, sizeof(XGL_DEVICE_CREATE_INFO));')
cd_body.append(' cInfo.flags = pPacket->pCreateInfo->flags | XGL_DEVICE_CREATE_VALIDATION_BIT;')
cd_body.append(' cInfo.maxValidationLevel = (XGL_VALIDATION_LEVEL)((g_xglReplaySettings.debugLevel <= 4) ? XGL_VALIDATION_LEVEL_0 + g_xglReplaySettings.debugLevel : XGL_VALIDATION_LEVEL_0);')
cd_body.append(' // restore the packet for next replay')
cd_body.append(' ci->pNext = NULL;')
cd_body.append(' pPacket->pCreateInfo = pCreateInfoSaved;')
+ 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(' }')