diff options
| author | Jon Ashburn <jon@lunarg.com> | 2015-02-10 13:49:30 -0700 |
|---|---|---|
| committer | Jon Ashburn <jon@lunarg.com> | 2015-02-11 15:30:18 -0700 |
| commit | 1b6967d9159cd07a8a409b2ca7d242bb7a9dc8bd (patch) | |
| tree | ff6de362a0dd35cb1bc241d6a2a15912a7fcdc43 | |
| parent | e173be589c44f3adf3085e43236e1b3d6dfdd6c4 (diff) | |
| download | usermoji-1b6967d9159cd07a8a409b2ca7d242bb7a9dc8bd.tar.xz | |
glave: Actually add the memory barrier list of structures to trace file
Was just adding a pointer to these structures.
| -rwxr-xr-x | glave-generate.py | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/glave-generate.py b/glave-generate.py index 49a79adf..a80c05c9 100755 --- a/glave-generate.py +++ b/glave-generate.py @@ -498,7 +498,7 @@ class Subcommand(object): 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 @@ class Subcommand(object): 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 @@ class Subcommand(object): 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;') |
