glaveSnapshot: snapshot now does deep copy of DEVICE_CREATE_INFO struct.

* Add new local methods to do a deep copy of the DEVICE_CREATE_INFO struct. A similar method is added to do a deep free of the struct. This is just to experiment with what will be needed to support all the Create* entrypoints; most of this should be code-gen'ed later on.
* The CreateInfo struct is now also printed as part of glvSnapshotPrintDelta to confirm that it is working via the UI. Note the helper function I'm using to print the struct will only print the first layer in the list. It doesn't support printing > 1 layer.
diff --git a/layers/glave_snapshot.h b/layers/glave_snapshot.h
index 54c00a5..fd54554 100644
--- a/layers/glave_snapshot.h
+++ b/layers/glave_snapshot.h
@@ -164,6 +164,28 @@
     }
 }
 
+//=============================================================================
+// Helper structure for a GLAVE vulkan snapshot.
+// These can probably be auto-generated at some point.
+//=============================================================================
+
+void glv_vk_malloc_and_copy(void** ppDest, size_t size, const void* pSrc);
+
+typedef struct _GLV_VK_SNAPSHOT_CREATEDEVICE_PARAMS
+{
+    XGL_PHYSICAL_GPU gpu;
+    XGL_DEVICE_CREATE_INFO* pCreateInfo;
+    XGL_DEVICE* pDevice;
+} GLV_VK_SNAPSHOT_CREATEDEVICE_PARAMS;
+
+XGL_DEVICE_CREATE_INFO* glv_deepcopy_xgl_device_create_info(const XGL_DEVICE_CREATE_INFO* pSrcCreateInfo);void glv_deepfree_xgl_device_create_info(XGL_DEVICE_CREATE_INFO* pCreateInfo);
+void glv_vk_snapshot_copy_createdevice_params(GLV_VK_SNAPSHOT_CREATEDEVICE_PARAMS* pDest, XGL_PHYSICAL_GPU gpu, const XGL_DEVICE_CREATE_INFO* pCreateInfo, XGL_DEVICE* pDevice);
+void glv_vk_snapshot_destroy_createdevice_params(GLV_VK_SNAPSHOT_CREATEDEVICE_PARAMS* pSrc);
+
+//=============================================================================
+// Glave Snapshot helper structs
+//=============================================================================
+
 // Node that stores information about an object
 typedef struct _GLV_VK_SNAPSHOT_OBJECT_NODE {
     void*           pVkObject;
@@ -179,8 +201,7 @@
     XGL_DEVICE device;
 
     // CreateDevice parameters
-    XGL_PHYSICAL_GPU gpu;
-    XGL_DEVICE_CREATE_INFO* pCreateInfo;
+    GLV_VK_SNAPSHOT_CREATEDEVICE_PARAMS params;
 
     // Other information a device needs to store.
     // TODO: anything?
@@ -227,7 +248,6 @@
     GLV_VK_SNAPSHOT_DELETED_OBJ_NODE* pDeltaDeletedObjects;
 } GLV_VK_SNAPSHOT;
 
-
 //=============================================================================
 // prototype for extension functions
 //=============================================================================