glvreplay_xgl: Add 'EnableLayers' setting to control which XGL validation layers...
authorPeter Lohrmann <peterl@valvesoftware.com>
Fri, 9 Jan 2015 20:34:50 +0000 (12:34 -0800)
committerCourtney Goeltzenleuchter <courtney@LunarG.com>
Thu, 5 Feb 2015 00:58:06 +0000 (17:58 -0700)
* The string is a comma separated list of layer names, defaulting to "Drawstate,ObjectTracker".
* Fix the way in which the settings are assigned to the default values, as the previous approach was attempting to delete the default 'EnableLayers' value, which would have caused problems eventually.

glave-generate.py

index bcab9b52aad3dae301458f1a9fbec164e0aa80cf..6fa69d9709999e663a63cfcd1739eb6d9431570b 100755 (executable)
@@ -2109,17 +2109,25 @@ class Subcommand(object):
         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);')
@@ -2128,6 +2136,7 @@ class Subcommand(object):
         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('                }')