layers: DrawState changes to support resource binding updates
diff --git a/layers/draw_state.h b/layers/draw_state.h
index 0fb771e..d2d7650 100644
--- a/layers/draw_state.h
+++ b/layers/draw_state.h
@@ -32,18 +32,18 @@
     DRAWSTATE_NONE,                             // Used for INFO & other non-error messages
     DRAWSTATE_INTERNAL_ERROR,                   // Error with DrawState internal data structures
     DRAWSTATE_NO_PIPELINE_BOUND,                // Unable to identify a bound pipeline
-    DRAWSTATE_INVALID_REGION,                   // Invalid DS region
+    DRAWSTATE_INVALID_POOL,                     // Invalid DS pool
     DRAWSTATE_INVALID_SET,                      // Invalid DS
     DRAWSTATE_INVALID_LAYOUT,                   // Invalid DS layout
     DRAWSTATE_DS_END_WITHOUT_BEGIN,             // EndDSUpdate called w/o corresponding BeginDSUpdate
-    DRAWSTATE_UPDATE_WITHOUT_BEGIN,             // Attempt to update descriptors w/o calling BeginDescriptorRegionUpdate
+    DRAWSTATE_UPDATE_WITHOUT_BEGIN,             // Attempt to update descriptors w/o calling BeginDescriptorPoolUpdate
     DRAWSTATE_INVALID_PIPELINE,                 // Invalid Pipeline referenced
     DRAWSTATE_INVALID_CMD_BUFFER,               // Invalid CmdBuffer referenced
     DRAWSTATE_VTX_INDEX_OUT_OF_BOUNDS,          // binding in xglCmdBindVertexData() too large for PSO's pVertexBindingDescriptions array
     DRAWSTATE_INVALID_DYNAMIC_STATE_OBJECT,     // Invalid dyn state object
     DRAWSTATE_MISSING_DOT_PROGRAM,              // No "dot" program in order to generate png image
     DRAWSTATE_BINDING_DS_NO_END_UPDATE,         // DS bound to CmdBuffer w/o call to xglEndDescriptorSetUpdate())
-    DRAWSTATE_NO_DS_REGION,                     // No DS Region is available
+    DRAWSTATE_NO_DS_POOL,                       // No DS Pool is available
     DRAWSTATE_OUT_OF_MEMORY,                    // malloc failed
     DRAWSTATE_DESCRIPTOR_TYPE_MISMATCH,         // Type in layout vs. update are not the same
     DRAWSTATE_DESCRIPTOR_UPDATE_OUT_OF_BOUNDS,  // Descriptors set for update out of bounds for corresponding layout section
@@ -129,41 +129,37 @@
         XGL_DYNAMIC_CB_STATE_CREATE_INFO cbci;
         XGL_DYNAMIC_DS_STATE_CREATE_INFO dsci;
     } create_info;
-    //struct _DYNAMIC_STATE_NODE* pNext;
 } DYNAMIC_STATE_NODE;
 // Descriptor Data structures
 // Layout Node has the core layout data
 typedef struct _LAYOUT_NODE {
     XGL_DESCRIPTOR_SET_LAYOUT                    layout;
-    XGL_FLAGS                                    stageFlags;
-    uint32_t                                     shaderStageBindPoints[XGL_NUM_SHADER_STAGE];
     XGL_DESCRIPTOR_TYPE*                         pTypes; // Dynamic array that will be created to verify descriptor types
-    XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO*       pCreateInfoList;
+    XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO        createInfo;
     uint32_t                                     startIndex; // 1st index of this layout
     uint32_t                                     endIndex; // last index of this layout
-    struct _LAYOUT_NODE*                         pPriorSetLayout; // Points to node w/ priorSetLayout
 } LAYOUT_NODE;
 typedef struct _SET_NODE {
     XGL_DESCRIPTOR_SET                           set;
-    XGL_DESCRIPTOR_REGION                        region;
+    XGL_DESCRIPTOR_POOL                          pool;
     XGL_DESCRIPTOR_SET_USAGE                     setUsage;
     // Head of LL of all Update structs for this set
     GENERIC_HEADER*                              pUpdateStructs;
     // Total num of descriptors in this set (count of its layout plus all prior layouts)
     uint32_t                                     descriptorCount;
     GENERIC_HEADER**                             ppDescriptors; // Array where each index points to update node for its slot
-    LAYOUT_NODE*                                 pLayouts;
+    LAYOUT_NODE*                                 pLayout; // Layout for this set
     struct _SET_NODE*                            pNext;
 } SET_NODE;
 
-typedef struct _REGION_NODE {
-    XGL_DESCRIPTOR_REGION                        region;
-    XGL_DESCRIPTOR_REGION_USAGE                  regionUsage;
+typedef struct _POOL_NODE {
+    XGL_DESCRIPTOR_POOL                          pool;
+    XGL_DESCRIPTOR_POOL_USAGE                    poolUsage;
     uint32_t                                     maxSets;
-    XGL_DESCRIPTOR_REGION_CREATE_INFO            createInfo;
-    bool32_t                                     updateActive; // Track if Region is in an update block
-    SET_NODE*                                    pSets; // Head of LL of sets for this Region
-} REGION_NODE;
+    XGL_DESCRIPTOR_POOL_CREATE_INFO              createInfo;
+    bool32_t                                     updateActive; // Track if Pool is in an update block
+    SET_NODE*                                    pSets; // Head of LL of sets for this Pool
+} POOL_NODE;
 
 // Cmd Buffer Tracking
 typedef enum _CMD_TYPE
@@ -171,7 +167,7 @@
     CMD_BINDPIPELINE,
     CMD_BINDPIPELINEDELTA,
     CMD_BINDDYNAMICSTATEOBJECT,
-    CMD_BINDDESCRIPTORSET,
+    CMD_BINDDESCRIPTORSETS,
     CMD_BINDINDEXBUFFER,
     CMD_BINDVERTEXBUFFER,
     CMD_DRAW,
@@ -182,6 +178,7 @@
     CMD_DISPATCHINDIRECT,
     CMD_COPYBUFFER,
     CMD_COPYIMAGE,
+    CMD_BLITIMAGE,
     CMD_COPYBUFFERTOIMAGE,
     CMD_COPYIMAGETOBUFFER,
     CMD_CLONEIMAGEDATA,
@@ -222,7 +219,7 @@
 // Cmd Buffer Wrapper Struct
 typedef struct _GLOBAL_CB_NODE {
     XGL_CMD_BUFFER                  cmdBuffer;
-    uint32_t	                    queueNodeIndex;
+    uint32_t                        queueNodeIndex;
     XGL_FLAGS                       flags;
     XGL_FENCE                       fence;    // fence tracking this cmd buffer
     uint64_t                        numCmds;  // number of cmds in this CB