glave: Actually add the memory barrier list of structures to trace file

Was just adding a pointer to these structures.
diff --git a/glave-generate.py b/glave-generate.py
index 49a79ad..a80c05c 100755
--- a/glave-generate.py
+++ b/glave-generate.py
@@ -498,7 +498,7 @@
                             event_array_type = 'XGL_SET_EVENT'
                         func_body.append('    uint32_t eventCount = (%s != NULL && %s->pEvents != NULL) ? %s->eventCount : 0;' % (proto.params[-1].name, proto.params[-1].name, proto.params[-1].name))
                         func_body.append('    uint32_t mbCount = (%s != NULL && %s->ppMemBarriers != NULL) ? %s->memBarrierCount : 0;' % (proto.params[-1].name, proto.params[-1].name, proto.params[-1].name))
-                        func_body.append('    customSize = (eventCount * sizeof(%s)) + (mbCount * 2 * sizeof(void*));' % event_array_type)
+                        func_body.append('    customSize = (eventCount * sizeof(%s)) + mbCount * sizeof(void*) + calculate_memory_barrier_size(mbCount, %s->ppMemBarriers);' % (event_array_type, proto.params[-1].name))
                         func_body.append('    CREATE_TRACE_PACKET(xgl%s, sizeof(%s) + customSize);' % (proto.name, proto.params[-1].ty.strip('*').replace('const ', '')))
                     else: #'CreateComputePipeline'
                         func_body.append('    customSize = calculate_pipeline_state_size(pCreateInfo->pNext);')
@@ -608,9 +608,25 @@
                             func_body.append('    glv_add_buffer_to_trace_packet(pHeader, (void**)&(pPacket->%s->pEvents), eventCount * sizeof(%s), %s->pEvents);' % (proto.params[-1].name, event_array_type, proto.params[-1].name))
                             func_body.append('    glv_finalize_buffer_address(pHeader, (void**)&(pPacket->%s->pEvents));' % (proto.params[-1].name))
                             func_body.append('    glv_add_buffer_to_trace_packet(pHeader, (void**)&(pPacket->%s->ppMemBarriers), mbCount * sizeof(void*), %s->ppMemBarriers);' % (proto.params[-1].name, proto.params[-1].name))
-                            func_body.append('    uint32_t i;')
+                            func_body.append('    uint32_t i, siz;')
                             func_body.append('    for (i = 0; i < mbCount; i++) {')
-                            func_body.append('        glv_add_buffer_to_trace_packet(pHeader, (void**)&(pPacket->%s->ppMemBarriers[i]), sizeof(void*), %s->ppMemBarriers[i]);' % (proto.params[-1].name, proto.params[-1].name))
+                            func_body.append('        XGL_MEMORY_BARRIER *pNext = (XGL_MEMORY_BARRIER *) %s->ppMemBarriers[i];' % proto.params[-1].name)
+                            func_body.append('        switch (pNext->sType) {')
+                            func_body.append('            case XGL_STRUCTURE_TYPE_MEMORY_BARRIER:')
+                            func_body.append('                siz = sizeof(XGL_MEMORY_BARRIER);')
+                            func_body.append('                break;')
+                            func_body.append('            case XGL_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:')
+                            func_body.append('                siz = sizeof(XGL_BUFFER_MEMORY_BARRIER);')
+                            func_body.append('                break;')
+                            func_body.append('            case XGL_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:')
+                            func_body.append('                siz = sizeof(XGL_IMAGE_MEMORY_BARRIER);')
+                            func_body.append('                break;')
+                            func_body.append('            default:')
+                            func_body.append('                assert(0);')
+                            func_body.append('                siz = 0;')
+                            func_body.append('                break;')
+                            func_body.append('        }')
+                            func_body.append('        glv_add_buffer_to_trace_packet(pHeader, (void**)&(pPacket->%s->ppMemBarriers[i]), siz, %s->ppMemBarriers[i]);' % (proto.params[-1].name, proto.params[-1].name))
                             func_body.append('        glv_finalize_buffer_address(pHeader, (void**)&(pPacket->%s->ppMemBarriers[i]));' % (proto.params[-1].name))
                             func_body.append('    }')
                             func_body.append('    glv_finalize_buffer_address(pHeader, (void**)&(pPacket->%s->ppMemBarriers));' % (proto.params[-1].name))
@@ -949,6 +965,28 @@
         hf_body.append('    return siz;')
         hf_body.append('}')
         hf_body.append('')
+        hf_body.append('static size_t calculate_memory_barrier_size(uint32_t mbCount, const void** ppMemBarriers)')
+        hf_body.append('{')
+        hf_body.append('    uint32_t i, siz=0;')
+        hf_body.append('    for (i = 0; i < mbCount; i++) {')
+        hf_body.append('        XGL_MEMORY_BARRIER *pNext = (XGL_MEMORY_BARRIER *) ppMemBarriers[i];')
+        hf_body.append('        switch (pNext->sType) {')
+        hf_body.append('            case XGL_STRUCTURE_TYPE_MEMORY_BARRIER:')
+        hf_body.append('                siz += sizeof(XGL_MEMORY_BARRIER);')
+        hf_body.append('                break;')
+        hf_body.append('            case XGL_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:')
+        hf_body.append('                siz += sizeof(XGL_BUFFER_MEMORY_BARRIER);')
+        hf_body.append('                break;')
+        hf_body.append('            case XGL_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:')
+        hf_body.append('                siz += sizeof(XGL_IMAGE_MEMORY_BARRIER);')
+        hf_body.append('                break;')
+        hf_body.append('            default:')
+        hf_body.append('                assert(0);')
+        hf_body.append('                break;')
+        hf_body.append('        }')
+        hf_body.append('    }')
+        hf_body.append('    return siz;')
+        hf_body.append('}')
         hf_body.append('static size_t calculate_pipeline_shader_size(const XGL_PIPELINE_SHADER* shader)')
         hf_body.append('{')
         hf_body.append('    size_t size = 0;')