Various code clean-ups for glave and codegen with updated xgl.h
Conflicts:
glave-generate.py
diff --git a/glave-generate.py b/glave-generate.py
index b5fb735..af23b80 100755
--- a/glave-generate.py
+++ b/glave-generate.py
@@ -795,21 +795,8 @@
hf_body.append('')
hf_body.append('static size_t calculate_pipeline_shader_size(const XGL_PIPELINE_SHADER* shader)')
hf_body.append('{')
- hf_body.append(' // TODO : Figure this out for new binding mode')
hf_body.append(' size_t size = 0;')
- hf_body.append(' uint32_t i, j;')
- hf_body.append(' ')
hf_body.append(' size += sizeof(XGL_PIPELINE_SHADER);')
- hf_body.append(' // descriptor sets')
- hf_body.append(' /*for (j = 0; j < shader->descriptorSetMapping[i].descriptorCount; j++)')
- hf_body.append(' {')
- hf_body.append(' size += sizeof(XGL_DESCRIPTOR_SLOT_INFO);')
- hf_body.append(' if (shader->descriptorSetMapping[i].pDescriptorInfo[j].slotObjectType == XGL_SLOT_NEXT_DESCRIPTOR_SET)')
- hf_body.append(' {')
- hf_body.append(' size += sizeof(XGL_DESCRIPTOR_SET_MAPPING);')
- hf_body.append(' }')
- hf_body.append(' }')
- hf_body.append('')
hf_body.append(' // constant buffers')
hf_body.append(' if (shader->linkConstBufferCount > 0 && shader->pLinkConstBufferInfo != NULL)')
hf_body.append(' {')
@@ -819,25 +806,13 @@
hf_body.append(' size += sizeof(XGL_LINK_CONST_BUFFER);')
hf_body.append(' size += shader->pLinkConstBufferInfo[i].bufferSize;')
hf_body.append(' }')
- hf_body.append(' }*/')
+ hf_body.append(' }')
hf_body.append(' return size;')
hf_body.append('}')
hf_body.append('')
hf_body.append('static void add_pipeline_shader_to_trace_packet(glv_trace_packet_header* pHeader, XGL_PIPELINE_SHADER* packetShader, const XGL_PIPELINE_SHADER* paramShader)')
hf_body.append('{')
- hf_body.append(' // TODO : Figure this out for new binding mode')
- hf_body.append(' uint32_t i, j;')
- hf_body.append(' // descriptor sets')
- hf_body.append(' /*glv_add_buffer_to_trace_packet(pHeader, (void**)&(packetShader->descriptorSetMapping[i].pDescriptorInfo), sizeof(XGL_DESCRIPTOR_SLOT_INFO)* paramShader->descriptorSetMapping[i].descriptorCount, paramShader->descriptorSetMapping[i].pDescriptorInfo);')
- hf_body.append(' for (j = 0; j < paramShader->descriptorSetMapping[i].descriptorCount; j++)')
- hf_body.append(' {')
- hf_body.append(' if (paramShader->descriptorSetMapping[i].pDescriptorInfo[j].slotObjectType == XGL_SLOT_NEXT_DESCRIPTOR_SET)')
- hf_body.append(' {')
- hf_body.append(' glv_add_buffer_to_trace_packet(pHeader, (void**)&(packetShader->descriptorSetMapping[i].pDescriptorInfo[j].pNextLevelSet), sizeof(XGL_DESCRIPTOR_SET_MAPPING), paramShader->descriptorSetMapping[i].pDescriptorInfo[j].pNextLevelSet);')
- hf_body.append(' }')
- hf_body.append(' }')
- hf_body.append(' packetShader->descriptorSetMapping[i].descriptorCount = paramShader->descriptorSetMapping[i].descriptorCount;')
- hf_body.append('*/')
+ hf_body.append(' uint32_t i;')
hf_body.append(' // constant buffers')
hf_body.append(' if (paramShader->linkConstBufferCount > 0 && paramShader->pLinkConstBufferInfo != NULL)')
hf_body.append(' {')
@@ -851,18 +826,7 @@
hf_body.append('')
hf_body.append('static void finalize_pipeline_shader_address(glv_trace_packet_header* pHeader, const XGL_PIPELINE_SHADER* packetShader)')
hf_body.append('{')
- hf_body.append(' uint32_t i, j;')
- hf_body.append(' // TODO : Figure this out for new binding mode')
- hf_body.append(' // descriptor sets')
- hf_body.append(' /*for (j = 0; j < packetShader->descriptorSetMapping[i].descriptorCount; j++)')
- hf_body.append(' {')
- hf_body.append(' if (packetShader->descriptorSetMapping[i].pDescriptorInfo[j].slotObjectType == XGL_SLOT_NEXT_DESCRIPTOR_SET)')
- hf_body.append(' {')
- hf_body.append(' glv_finalize_buffer_address(pHeader, (void**)&(packetShader->descriptorSetMapping[i].pDescriptorInfo[j].pNextLevelSet));')
- hf_body.append(' }')
- hf_body.append(' }')
- hf_body.append(' glv_finalize_buffer_address(pHeader, (void**)&(packetShader->descriptorSetMapping[i].pDescriptorInfo));')
- hf_body.append('*/')
+ hf_body.append(' uint32_t i;')
hf_body.append(' // constant buffers')
hf_body.append(' if (packetShader->linkConstBufferCount > 0 && packetShader->pLinkConstBufferInfo != NULL)')
hf_body.append(' {')
@@ -1167,22 +1131,10 @@
pid_enum.append(' }\n')
pid_enum.append(' return pXGL_DEVICE_CREATE_INFO;')
pid_enum.append('}\n')
- pid_enum.append('#if 0 // Need to update this code for new resource binding method')
pid_enum.append('static void interpret_pipeline_shader(glv_trace_packet_header* pHeader, XGL_PIPELINE_SHADER* pShader)')
pid_enum.append('{')
- pid_enum.append(' uint32_t i, j;')
pid_enum.append(' if (pShader != NULL)')
pid_enum.append(' {')
- pid_enum.append(' // descriptor sets')
- pid_enum.append(' pShader->descriptorSetMapping[i].pDescriptorInfo = (const XGL_DESCRIPTOR_SLOT_INFO*)glv_trace_packet_interpret_buffer_pointer(pHeader, (intptr_t)pShader->descriptorSetMapping[i].pDescriptorInfo);')
- pid_enum.append(' for (j = 0; j < pShader->descriptorSetMapping[i].descriptorCount; j++)')
- pid_enum.append(' {')
- pid_enum.append(' if (pShader->descriptorSetMapping[i].pDescriptorInfo[j].slotObjectType == XGL_SLOT_NEXT_DESCRIPTOR_SET)')
- pid_enum.append(' {')
- pid_enum.append(' XGL_DESCRIPTOR_SLOT_INFO* pInfo = (XGL_DESCRIPTOR_SLOT_INFO*)pShader->descriptorSetMapping[i].pDescriptorInfo;')
- pid_enum.append(' pInfo[j].pNextLevelSet = (const XGL_DESCRIPTOR_SET_MAPPING*)glv_trace_packet_interpret_buffer_pointer(pHeader, (intptr_t)pShader->descriptorSetMapping[i].pDescriptorInfo[j].pNextLevelSet);')
- pid_enum.append(' }')
- pid_enum.append(' }\n')
pid_enum.append(' // constant buffers')
pid_enum.append(' if (pShader->linkConstBufferCount > 0)')
pid_enum.append(' {')
@@ -1196,13 +1148,12 @@
pid_enum.append(' }')
pid_enum.append(' }')
pid_enum.append('}\n')
- pid_enum.append('#endif')
pid_enum.append('//=============================================================================')
return "\n".join(pid_enum)
def _generate_interp_funcs(self):
# Custom txt for given function and parameter. First check if param is NULL, then insert txt if not
- custom_case_dict = { 'InitAndEnumerateGpus' : {'param': 'pAppInfo', 'txt': ['XGL_APPLICATION_INFO* pInfo = (XGL_APPLICATION_INFO*)pPacket->pAppInfo;\n',
+ custom_case_dict = { 'CreateInstance' : {'param': 'pAppInfo', 'txt': ['XGL_APPLICATION_INFO* pInfo = (XGL_APPLICATION_INFO*)pPacket->pAppInfo;\n',
'pInfo->pAppName = (const char*)glv_trace_packet_interpret_buffer_pointer(pHeader, (intptr_t)pPacket->pAppInfo->pAppName);\n',
'pInfo->pEngineName = (const char*)glv_trace_packet_interpret_buffer_pointer(pHeader, (intptr_t)pPacket->pAppInfo->pEngineName);']},
'CreateShader' : {'param': 'pCreateInfo', 'txt': ['XGL_SHADER_CREATE_INFO* pInfo = (XGL_SHADER_CREATE_INFO*)pPacket->pCreateInfo;\n',
@@ -1255,7 +1206,7 @@
' {\n',
' void** ppNextVoidPtr = (void**)&pNext->pNext;\n',
' *ppNextVoidPtr = (void*)glv_trace_packet_interpret_buffer_pointer(pHeader, (intptr_t)pNext->pNext);\n',
- ' // TODO : update interpret_pipeline_shader(pHeader, &pNext->shader);\n',
+ ' interpret_pipeline_shader(pHeader, &pNext->shader);\n',
' break;\n',
' }\n',
' case XGL_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO:\n',
@@ -1272,7 +1223,7 @@
' }\n',
' pNext = (XGL_PIPELINE_SHADER_STAGE_CREATE_INFO*)pNext->pNext;\n',
'}']},
- 'CreateComputePipeline' : {'param': 'pCreateInfo', 'txt': ['// TODO : Update interpret_pipeline_shader(pHeader, (XGL_PIPELINE_SHADER*)(&pPacket->pCreateInfo->cs));']}}
+ 'CreateComputePipeline' : {'param': 'pCreateInfo', 'txt': ['interpret_pipeline_shader(pHeader, (XGL_PIPELINE_SHADER*)(&pPacket->pCreateInfo->cs));']}}
if_body = []
if_body.append('typedef struct struct_xglApiVersion {')
if_body.append(' glv_trace_packet_header* header;')
@@ -1980,15 +1931,15 @@
return 'remap(pPacket->%s)' % (n)
return 'pPacket->%s' % (n)
- def _gen_replay_init_and_enum_gpus(self):
+ def _gen_replay_enum_gpus(self):
ieg_body = []
ieg_body.append(' if (!m_display->m_initedXGL)')
ieg_body.append(' {')
ieg_body.append(' uint32_t gpuCount;')
ieg_body.append(' XGL_PHYSICAL_GPU gpus[XGL_MAX_PHYSICAL_GPUS];')
ieg_body.append(' uint32_t maxGpus = (pPacket->maxGpus < XGL_MAX_PHYSICAL_GPUS) ? pPacket->maxGpus : XGL_MAX_PHYSICAL_GPUS;')
- ieg_body.append(' replayResult = m_xglFuncs.real_xglInitAndEnumerateGpus(pPacket->pAppInfo, pPacket->pAllocCb, maxGpus, &gpuCount, &gpus[0]);')
- ieg_body.append(' CHECK_RETURN_VALUE(xglInitAndEnumerateGpus);')
+ ieg_body.append(' replayResult = m_xglFuncs.real_xglEnumerateGpus(remap(pPacket->instance), maxGpus, &gpuCount, &gpus[0]);')
+ ieg_body.append(' CHECK_RETURN_VALUE(xglEnumerateGpus);')
ieg_body.append(' //TODO handle different number of gpus in trace versus replay')
ieg_body.append(' if (gpuCount != *(pPacket->pGpuCount))')
ieg_body.append(' {')
@@ -1996,12 +1947,13 @@
ieg_body.append(' }')
ieg_body.append(' else if (gpuCount == 0)')
ieg_body.append(' {')
- ieg_body.append(' glv_LogError("xglInitAndEnumerateGpus number of gpus is zero\\n");')
+ ieg_body.append(' glv_LogError("xglEnumerateGpus number of gpus is zero\\n");')
ieg_body.append(' }')
ieg_body.append(' else')
ieg_body.append(' {')
ieg_body.append(' glv_LogInfo("Enumerated %d GPUs in the system\\n", gpuCount);')
ieg_body.append(' }')
+ ieg_body.append(' // Do we care about the instance handel? Need to keep from clearing it? Not sure it will be used again...')
ieg_body.append(' clear_all_map_handles();')
ieg_body.append(' // TODO handle enumeration results in a different order from trace to replay')
ieg_body.append(' for (uint32_t i = 0; i < gpuCount; i++)')
@@ -2514,7 +2466,7 @@
def _generate_replay(self):
# map protos to custom functions if body is fully custom
- custom_body_dict = {'InitAndEnumerateGpus': self._gen_replay_init_and_enum_gpus,
+ custom_body_dict = {'EnumerateGpus': self._gen_replay_enum_gpus,
'GetGpuInfo': self._gen_replay_get_gpu_info,
'CreateDevice': self._gen_replay_create_device,
'GetExtensionSupport': self._gen_replay_get_extension_support,