layers: Fixes to get them building and working with descriptor changes
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index 5c44f9d..6bd2b77 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -1406,11 +1406,18 @@
     nextTable.CmdBindDynamicStateObject(cmdBuffer, stateBindPoint, state);
 }
 
-XGL_LAYER_EXPORT void XGLAPI xglCmdBindDescriptorSet(XGL_CMD_BUFFER cmdBuffer, XGL_PIPELINE_BIND_POINT pipelineBindPoint,
-    XGL_DESCRIPTOR_SET descriptorSet, const uint32_t* pUserData)
+XGL_LAYER_EXPORT void XGLAPI xglCmdBindDescriptorSets(
+    XGL_CMD_BUFFER                              cmdBuffer,
+    XGL_PIPELINE_BIND_POINT                     pipelineBindPoint,
+    XGL_DESCRIPTOR_SET_LAYOUT_CHAIN             layoutChain,
+    uint32_t                                    layoutChainSlot,
+    uint32_t                                    count,
+    const XGL_DESCRIPTOR_SET*                   pDescriptorSets,
+    const uint32_t*                             pUserData)
 {
+
     // TODO : Somewhere need to verify that all textures referenced by shaders in DS are in some type of *SHADER_READ* state
-    nextTable.CmdBindDescriptorSet(cmdBuffer, pipelineBindPoint, descriptorSet, pUserData);
+    nextTable.CmdBindDescriptorSets(cmdBuffer, pipelineBindPoint, layoutChain, layoutChainSlot, count, pDescriptorSets, pUserData);
 }
 
 XGL_LAYER_EXPORT void XGLAPI xglCmdBindVertexBuffer(XGL_CMD_BUFFER cmdBuffer, XGL_BUFFER buffer, XGL_GPU_SIZE offset, uint32_t binding)
@@ -1870,8 +1877,8 @@
         return (void*) xglCmdBindPipeline;
     if (!strcmp(funcName, "xglCmdBindDynamicStateObject"))
         return (void*) xglCmdBindDynamicStateObject;
-    if (!strcmp(funcName, "xglCmdBindDescriptorSet"))
-        return (void*) xglCmdBindDescriptorSet;
+    if (!strcmp(funcName, "xglCmdBindDescriptorSets"))
+        return (void*) xglCmdBindDescriptorSets;
     if (!strcmp(funcName, "xglCmdBindVertexBuffer"))
         return (void*) xglCmdBindVertexBuffer;
     if (!strcmp(funcName, "xglCmdBindIndexBuffer"))
diff --git a/layers/object_track.h b/layers/object_track.h
index af6be9b..65e1fef 100644
--- a/layers/object_track.h
+++ b/layers/object_track.h
@@ -61,12 +61,13 @@
     XGL_OBJECT_TYPE_SAMPLER,
     XGL_OBJECT_TYPE_DYNAMIC_DS_STATE_OBJECT,
     XGL_OBJECT_TYPE_DESCRIPTOR_SET,
-    XGL_OBJECT_TYPE_DESCRIPTOR_REGION,
+    XGL_OBJECT_TYPE_DESCRIPTOR_POOL,
     XGL_OBJECT_TYPE_DYNAMIC_CB_STATE_OBJECT,
     XGL_OBJECT_TYPE_IMAGE_VIEW,
     XGL_OBJECT_TYPE_SEMAPHORE,
     XGL_OBJECT_TYPE_SHADER,
     XGL_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
+    XGL_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_CHAIN,
     XGL_OBJECT_TYPE_BUFFER,
     XGL_OBJECT_TYPE_PIPELINE,
     XGL_OBJECT_TYPE_DEVICE,
@@ -105,6 +106,8 @@
             return "FENCE";
         case XGL_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT:
             return "DESCRIPTOR_SET_LAYOUT";
+        case XGL_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_CHAIN:
+            return "DESCRIPTOR_SET_LAYOUT_CHAIN";
         case XGL_OBJECT_TYPE_GPU_MEMORY:
             return "GPU_MEMORY";
         case XGL_OBJECT_TYPE_QUEUE:
@@ -153,8 +156,8 @@
             return "RENDER_PASS";
         case XGL_OBJECT_TYPE_QUERY_POOL:
             return "QUERY_POOL";
-        case XGL_OBJECT_TYPE_DESCRIPTOR_REGION:
-            return "DESCRIPTOR_REGION";
+        case XGL_OBJECT_TYPE_DESCRIPTOR_POOL:
+            return "DESCRIPTOR_POOL";
         case XGL_OBJECT_TYPE_PRESENTABLE_IMAGE_MEMORY:
             return "PRESENTABLE_IMAGE_MEMORY";
         default:
diff --git a/xgl_helper.py b/xgl_helper.py
index 9a52e33..397d43c 100755
--- a/xgl_helper.py
+++ b/xgl_helper.py
@@ -642,7 +642,7 @@
                         else:
                             if stp_list[index]['name'] in ['pImageViews', 'pBufferViews']:
                                 # TODO : This is a quick hack to handle these arrays of ptrs
-                                sh_funcs.append('        tmpStr = %s(pStruct->%s[0], extra_indent);' % (self._get_sh_func_name(stp_list[index]['type']), stp_list[index]['name']))
+                                sh_funcs.append('        tmpStr = %s(&pStruct->%s[0], extra_indent);' % (self._get_sh_func_name(stp_list[index]['type']), stp_list[index]['name']))
                             else:
                                 sh_funcs.append('        tmpStr = %s(pStruct->%s, extra_indent);' % (self._get_sh_func_name(stp_list[index]['type']), stp_list[index]['name']))
                             sh_funcs.append('        len = 256+strlen(tmpStr)+strlen(prefix);')
@@ -782,7 +782,7 @@
                         else:
                             if stp_list[index]['name'] in ['pImageViews', 'pBufferViews']:
                                 # TODO : This is a quick hack to handle these arrays of ptrs
-                                sh_funcs.append('        tmp_str = %s(pStruct->%s[0], extra_indent);' % (self._get_sh_func_name(stp_list[index]['type']), stp_list[index]['name']))
+                                sh_funcs.append('        tmp_str = %s(&pStruct->%s[0], extra_indent);' % (self._get_sh_func_name(stp_list[index]['type']), stp_list[index]['name']))
                             else:
                                 sh_funcs.append('        tmp_str = %s(pStruct->%s, extra_indent);' % (self._get_sh_func_name(stp_list[index]['type']), stp_list[index]['name']))
                         sh_funcs.append('        ss[%u] << %spStruct->%s;' % (index, addr_char, stp_list[index]['name']))