aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Ashburn <jon@lunarg.com>2015-02-10 13:49:30 -0700
committerJon Ashburn <jon@lunarg.com>2015-02-11 15:30:18 -0700
commit1b6967d9159cd07a8a409b2ca7d242bb7a9dc8bd (patch)
treeff6de362a0dd35cb1bc241d6a2a15912a7fcdc43
parente173be589c44f3adf3085e43236e1b3d6dfdd6c4 (diff)
downloadusermoji-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-xglave-generate.py44
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;')