build: enable Glave and all layers but drawState
v2: enable drawState too (olv)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3ab392b..25a91f6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -50,7 +50,7 @@
if (NOT WIN32)
add_subdirectory(tests)
endif()
-#add_subdirectory(layers)
+add_subdirectory(layers)
add_subdirectory(libs)
add_subdirectory(demos)
-#add_subdirectory(tools/glave)
+add_subdirectory(tools/glave)
diff --git a/layers/glave_snapshot.c b/layers/glave_snapshot.c
index b80986b..8f07925 100644
--- a/layers/glave_snapshot.c
+++ b/layers/glave_snapshot.c
@@ -1107,12 +1107,12 @@
return result;
}
-XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglCreateDescriptorSetLayout(XGL_DEVICE device, XGL_FLAGS stageFlags, const uint32_t* pSetBindPoints, XGL_DESCRIPTOR_SET_LAYOUT priorSetLayout, const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO* pSetLayoutInfoList, XGL_DESCRIPTOR_SET_LAYOUT* pSetLayout)
+XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglCreateDescriptorSetLayout( XGL_DEVICE device, const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO* pCreateInfo, XGL_DESCRIPTOR_SET_LAYOUT* pSetLayout)
{
loader_platform_thread_lock_mutex(&objLock);
ll_increment_use_count((void*)device, XGL_OBJECT_TYPE_DEVICE);
loader_platform_thread_unlock_mutex(&objLock);
- XGL_RESULT result = nextTable.CreateDescriptorSetLayout(device, stageFlags, pSetBindPoints, priorSetLayout, pSetLayoutInfoList, pSetLayout);
+ XGL_RESULT result = nextTable.CreateDescriptorSetLayout(device, pCreateInfo, pSetLayout);
if (result == XGL_SUCCESS)
{
loader_platform_thread_lock_mutex(&objLock);
@@ -1123,55 +1123,55 @@
return result;
}
-XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglBeginDescriptorRegionUpdate(XGL_DEVICE device, XGL_DESCRIPTOR_UPDATE_MODE updateMode)
+XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglBeginDescriptorPoolUpdate(XGL_DEVICE device, XGL_DESCRIPTOR_UPDATE_MODE updateMode)
{
loader_platform_thread_lock_mutex(&objLock);
ll_increment_use_count((void*)device, XGL_OBJECT_TYPE_DEVICE);
loader_platform_thread_unlock_mutex(&objLock);
- XGL_RESULT result = nextTable.BeginDescriptorRegionUpdate(device, updateMode);
+ XGL_RESULT result = nextTable.BeginDescriptorPoolUpdate(device, updateMode);
return result;
}
-XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglEndDescriptorRegionUpdate(XGL_DEVICE device, XGL_CMD_BUFFER cmd)
+XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglEndDescriptorPoolUpdate(XGL_DEVICE device, XGL_CMD_BUFFER cmd)
{
loader_platform_thread_lock_mutex(&objLock);
ll_increment_use_count((void*)device, XGL_OBJECT_TYPE_DEVICE);
loader_platform_thread_unlock_mutex(&objLock);
- XGL_RESULT result = nextTable.EndDescriptorRegionUpdate(device, cmd);
+ XGL_RESULT result = nextTable.EndDescriptorPoolUpdate(device, cmd);
return result;
}
-XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglCreateDescriptorRegion(XGL_DEVICE device, XGL_DESCRIPTOR_REGION_USAGE regionUsage, uint32_t maxSets, const XGL_DESCRIPTOR_REGION_CREATE_INFO* pCreateInfo, XGL_DESCRIPTOR_REGION* pDescriptorRegion)
+XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglCreateDescriptorPool(XGL_DEVICE device, XGL_DESCRIPTOR_POOL_USAGE poolUsage, uint32_t maxSets, const XGL_DESCRIPTOR_POOL_CREATE_INFO* pCreateInfo, XGL_DESCRIPTOR_POOL* pDescriptorPool)
{
loader_platform_thread_lock_mutex(&objLock);
ll_increment_use_count((void*)device, XGL_OBJECT_TYPE_DEVICE);
loader_platform_thread_unlock_mutex(&objLock);
- XGL_RESULT result = nextTable.CreateDescriptorRegion(device, regionUsage, maxSets, pCreateInfo, pDescriptorRegion);
+ XGL_RESULT result = nextTable.CreateDescriptorPool(device, poolUsage, maxSets, pCreateInfo, pDescriptorPool);
if (result == XGL_SUCCESS)
{
loader_platform_thread_lock_mutex(&objLock);
- GLV_VK_SNAPSHOT_LL_NODE* pNode = snapshot_insert_object(&s_delta, *pDescriptorRegion, XGL_OBJECT_TYPE_DESCRIPTOR_REGION);
+ GLV_VK_SNAPSHOT_LL_NODE* pNode = snapshot_insert_object(&s_delta, *pDescriptorPool, XGL_OBJECT_TYPE_DESCRIPTOR_POOL);
pNode->obj.pStruct = NULL;
loader_platform_thread_unlock_mutex(&objLock);
}
return result;
}
-XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglClearDescriptorRegion(XGL_DESCRIPTOR_REGION descriptorRegion)
+XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglResetDescriptorPool(XGL_DESCRIPTOR_POOL descriptorPool)
{
loader_platform_thread_lock_mutex(&objLock);
- ll_increment_use_count((void*)descriptorRegion, XGL_OBJECT_TYPE_DESCRIPTOR_REGION);
+ ll_increment_use_count((void*)descriptorPool, XGL_OBJECT_TYPE_DESCRIPTOR_POOL);
loader_platform_thread_unlock_mutex(&objLock);
- XGL_RESULT result = nextTable.ClearDescriptorRegion(descriptorRegion);
+ XGL_RESULT result = nextTable.ResetDescriptorPool(descriptorPool);
return result;
}
-XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglAllocDescriptorSets(XGL_DESCRIPTOR_REGION descriptorRegion, XGL_DESCRIPTOR_SET_USAGE setUsage, uint32_t count, const XGL_DESCRIPTOR_SET_LAYOUT* pSetLayouts, XGL_DESCRIPTOR_SET* pDescriptorSets, uint32_t* pCount)
+XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglAllocDescriptorSets(XGL_DESCRIPTOR_POOL descriptorPool, XGL_DESCRIPTOR_SET_USAGE setUsage, uint32_t count, const XGL_DESCRIPTOR_SET_LAYOUT* pSetLayouts, XGL_DESCRIPTOR_SET* pDescriptorSets, uint32_t* pCount)
{
loader_platform_thread_lock_mutex(&objLock);
- ll_increment_use_count((void*)descriptorRegion, XGL_OBJECT_TYPE_DESCRIPTOR_REGION);
+ ll_increment_use_count((void*)descriptorPool, XGL_OBJECT_TYPE_DESCRIPTOR_POOL);
loader_platform_thread_unlock_mutex(&objLock);
- XGL_RESULT result = nextTable.AllocDescriptorSets(descriptorRegion, setUsage, count, pSetLayouts, pDescriptorSets, pCount);
+ XGL_RESULT result = nextTable.AllocDescriptorSets(descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets, pCount);
if (result == XGL_SUCCESS)
{
for (uint32_t i = 0; i < *pCount; i++) {
@@ -1184,20 +1184,20 @@
return result;
}
-XGL_LAYER_EXPORT void XGLAPI xglClearDescriptorSets(XGL_DESCRIPTOR_REGION descriptorRegion, uint32_t count, const XGL_DESCRIPTOR_SET* pDescriptorSets)
+XGL_LAYER_EXPORT void XGLAPI xglClearDescriptorSets(XGL_DESCRIPTOR_POOL descriptorPool, uint32_t count, const XGL_DESCRIPTOR_SET* pDescriptorSets)
{
loader_platform_thread_lock_mutex(&objLock);
- ll_increment_use_count((void*)descriptorRegion, XGL_OBJECT_TYPE_DESCRIPTOR_REGION);
+ ll_increment_use_count((void*)descriptorPool, XGL_OBJECT_TYPE_DESCRIPTOR_POOL);
loader_platform_thread_unlock_mutex(&objLock);
- nextTable.ClearDescriptorSets(descriptorRegion, count, pDescriptorSets);
+ nextTable.ClearDescriptorSets(descriptorPool, count, pDescriptorSets);
}
-XGL_LAYER_EXPORT void XGLAPI xglUpdateDescriptors(XGL_DESCRIPTOR_SET descriptorSet, const void* pUpdateChain)
+XGL_LAYER_EXPORT void XGLAPI xglUpdateDescriptors(XGL_DESCRIPTOR_SET descriptorSet, uint32_t updateCount, const void** ppUpdateArray)
{
loader_platform_thread_lock_mutex(&objLock);
ll_increment_use_count((void*)descriptorSet, XGL_OBJECT_TYPE_DESCRIPTOR_SET);
loader_platform_thread_unlock_mutex(&objLock);
- nextTable.UpdateDescriptors(descriptorSet, pUpdateChain);
+ nextTable.UpdateDescriptors(descriptorSet, updateCount, ppUpdateArray);
}
XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglCreateDynamicViewportState(XGL_DEVICE device, const XGL_DYNAMIC_VP_STATE_CREATE_INFO* pCreateInfo, XGL_DYNAMIC_VP_STATE_OBJECT* pState)
@@ -1328,12 +1328,12 @@
nextTable.CmdBindDynamicStateObject(cmdBuffer, stateBindPoint, state);
}
-XGL_LAYER_EXPORT void XGLAPI xglCmdBindDescriptorSet(XGL_CMD_BUFFER cmdBuffer, XGL_PIPELINE_BIND_POINT pipelineBindPoint, XGL_DESCRIPTOR_SET descriptorSet, const uint32_t* pUserData)
+XGL_LAYER_EXPORT void XGLAPI xglCmdBindDescriptorSets(XGL_CMD_BUFFER cmdBuffer, XGL_PIPELINE_BIND_POINT pipelineBindPoint, XGL_DESCRIPTOR_SET_LAYOUT_CHAIN layoutChain, uint32_t layoutChainSlot, uint32_t count, const XGL_DESCRIPTOR_SET* pDescriptorSets, const uint32_t* pUserData)
{
loader_platform_thread_lock_mutex(&objLock);
ll_increment_use_count((void*)cmdBuffer, XGL_OBJECT_TYPE_CMD_BUFFER);
loader_platform_thread_unlock_mutex(&objLock);
- nextTable.CmdBindDescriptorSet(cmdBuffer, pipelineBindPoint, descriptorSet, pUserData);
+ nextTable.CmdBindDescriptorSets(cmdBuffer, pipelineBindPoint, layoutChain, layoutChainSlot, count, pDescriptorSets, pUserData);
}
XGL_LAYER_EXPORT void XGLAPI xglCmdBindVertexBuffer(XGL_CMD_BUFFER cmdBuffer, XGL_BUFFER buffer, XGL_GPU_SIZE offset, uint32_t binding)
diff --git a/layers/glave_snapshot.h b/layers/glave_snapshot.h
index fd54554..8bd1b09 100644
--- a/layers/glave_snapshot.h
+++ b/layers/glave_snapshot.h
@@ -64,7 +64,7 @@
XGL_OBJECT_TYPE_SAMPLER,
XGL_OBJECT_TYPE_DYNAMIC_DS_STATE_OBJECT,
XGL_OBJECT_TYPE_DESCRIPTOR_SET,
- XGL_OBJECT_TYPE_DESCRIPTOR_REGION,
+ XGL_OBJECT_TYPE_DESCRIPTOR_POOL,
XGL_OBJECT_TYPE_DYNAMIC_CB_STATE_OBJECT,
XGL_OBJECT_TYPE_IMAGE_VIEW,
XGL_OBJECT_TYPE_QUEUE_SEMAPHORE,
@@ -155,8 +155,8 @@
return "RENDER_PASS";
case XGL_OBJECT_TYPE_QUERY_POOL:
return "QUERY_POOL";
- case XGL_OBJECT_TYPE_DESCRIPTOR_REGION:
- return "DESCRIPTOR_REGION";
+ case XGL_OBJECT_TYPE_DESCRIPTOR_POOL:
+ return "DESCRIPTOR_POOL";
case XGL_OBJECT_TYPE_PRESENTABLE_IMAGE_MEMORY:
return "PRESENTABLE_IMAGE_MEMORY";
default:
diff --git a/tools/glave/scripts/vk_generate.py b/tools/glave/scripts/vk_generate.py
index b9d85a4..a8ff672 100755
--- a/tools/glave/scripts/vk_generate.py
+++ b/tools/glave/scripts/vk_generate.py
@@ -366,7 +366,7 @@
'finalize_txt': 'glv_finalize_buffer_address(pHeader, (void**)&(pPacket->pAllocInfo))'},
'XGL_GRAPHICS_PIPELINE_CREATE_INFO': {'add_txt': 'glv_add_buffer_to_trace_packet(pHeader, (void**)&(pPacket->pCreateInfo), sizeof(XGL_GRAPHICS_PIPELINE_CREATE_INFO), pCreateInfo);\n add_pipeline_state_to_trace_packet(pHeader, (void**)&(pPacket->pCreateInfo->pNext), pCreateInfo->pNext)',
'finalize_txt': 'glv_finalize_buffer_address(pHeader, (void**)&(pPacket->pCreateInfo))'},
- 'XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO': {'add_txt': 'if (pCreateInfo)\n add_create_ds_layout_to_trace_packet(pHeader, (void**)&(pPacket->pCreateInfo), pCreateInfo)',
+ 'XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO': {'add_txt': 'if (pCreateInfo)\n add_create_ds_layout_to_trace_packet(pHeader, &(pPacket->pCreateInfo), pCreateInfo)',
'finalize_txt': '// pCreateInfo finalized in add_create_ds_layout_to_trace_packet'},
'XGL_DESCRIPTOR_POOL_CREATE_INFO': {'add_txt': 'glv_add_buffer_to_trace_packet(pHeader, (void**)&(pPacket->pCreateInfo), sizeof(XGL_DESCRIPTOR_POOL_CREATE_INFO), pCreateInfo);\n glv_add_buffer_to_trace_packet(pHeader, (void**)&(pPacket->pCreateInfo->pTypeCount), rgCount * sizeof(XGL_DESCRIPTOR_TYPE_COUNT), pCreateInfo->pTypeCount)',
'finalize_txt': 'glv_finalize_buffer_address(pHeader, (void**)&(pPacket->pCreateInfo->pTypeCount));\n glv_finalize_buffer_address(pHeader, (void**)&(pPacket->pCreateInfo))'},
@@ -1591,9 +1591,9 @@
cdslc_body.append(' for (i = 0; i < pPacket->setLayoutArrayCount && pPacket->pSetLayoutArray != NULL; i++)')
cdslc_body.append(' {')
cdslc_body.append(' saveSetLayoutArray[i] = pPacket->pSetLayoutArray[i];')
- cdslc_body.append(' *pSetLayoutOrig++ = remap(pPacket->pSetLayoutArray[i]);')
+ cdslc_body.append(' *pSetLayoutOrig++ = m_objMapper.remap(pPacket->pSetLayoutArray[i]);')
cdslc_body.append(' }')
- cdslc_body.append(' replayResult = m_xglFuncs.real_xglCreateDescriptorSetLayoutChain(remap(pPacket->device), pPacket->setLayoutArrayCount, pPacket->pSetLayoutArray, &local_pLayoutChain);')
+ cdslc_body.append(' replayResult = m_xglFuncs.real_xglCreateDescriptorSetLayoutChain(m_objMapper.remap(pPacket->device), pPacket->setLayoutArrayCount, pPacket->pSetLayoutArray, &local_pLayoutChain);')
cdslc_body.append(' pSetLayoutOrig = (XGL_DESCRIPTOR_SET_LAYOUT *) pPacket->pSetLayoutArray;')
cdslc_body.append(' for (i = 0; i < pPacket->setLayoutArrayCount && pPacket->pSetLayoutArray != NULL; i++)')
cdslc_body.append(' {')
@@ -1601,7 +1601,7 @@
cdslc_body.append(' }')
cdslc_body.append(' if (replayResult == XGL_SUCCESS)')
cdslc_body.append(' {')
- cdslc_body.append(' add_to_map(pPacket->pLayoutChain, &local_pLayoutChain);')
+ cdslc_body.append(' m_objMapper.add_to_map(pPacket->pLayoutChain, &local_pLayoutChain);')
cdslc_body.append(' }')
cdslc_body.append(' free(saveSetLayoutArray);')
return "\n".join(cdslc_body)
@@ -1617,7 +1617,7 @@
cgp_body.append(' struct shaderPair saveShader[10];')
cgp_body.append(' unsigned int idx = 0;')
cgp_body.append(' memcpy(&createInfo, pPacket->pCreateInfo, sizeof(XGL_GRAPHICS_PIPELINE_CREATE_INFO));')
- cgp_body.append(' createInfo.lastSetLayout = m_objMapper.remap(createInfo.lastSetLayout);')
+ cgp_body.append(' createInfo.pSetLayoutChain = m_objMapper.remap(createInfo.pSetLayoutChain);')
cgp_body.append(' // Cast to shader type, as those are of primariy interest and all structs in LL have same header w/ sType & pNext')
cgp_body.append(' XGL_PIPELINE_SHADER_STAGE_CREATE_INFO* pPacketNext = (XGL_PIPELINE_SHADER_STAGE_CREATE_INFO*)pPacket->pCreateInfo->pNext;')
cgp_body.append(' XGL_PIPELINE_SHADER_STAGE_CREATE_INFO* pNext = (XGL_PIPELINE_SHADER_STAGE_CREATE_INFO*)createInfo.pNext;')
@@ -1658,9 +1658,9 @@
cbds_body.append(' {')
cbds_body.append(' XGL_DESCRIPTOR_SET *pSet = (XGL_DESCRIPTOR_SET *) &(pPacket->pDescriptorSets[idx]);')
cbds_body.append(' pSaveSets[idx] = pPacket->pDescriptorSets[idx];')
- cbds_body.append(' *pSet = remap(pPacket->pDescriptorSets[idx]);')
+ cbds_body.append(' *pSet = m_objMapper.remap(pPacket->pDescriptorSets[idx]);')
cbds_body.append(' }')
- cbds_body.append(' m_xglFuncs.real_xglCmdBindDescriptorSets(remap(pPacket->cmdBuffer), pPacket->pipelineBindPoint, remap(pPacket->layoutChain), pPacket->layoutChainSlot, pPacket->count, pPacket->pDescriptorSets, pPacket->pUserData);')
+ cbds_body.append(' m_xglFuncs.real_xglCmdBindDescriptorSets(m_objMapper.remap(pPacket->cmdBuffer), pPacket->pipelineBindPoint, m_objMapper.remap(pPacket->layoutChain), pPacket->layoutChainSlot, pPacket->count, pPacket->pDescriptorSets, pPacket->pUserData);')
cbds_body.append(' for (uint32_t idx = 0; idx < pPacket->count && pPacket->pDescriptorSets != NULL; idx++)')
cbds_body.append(' {')
cbds_body.append(' XGL_DESCRIPTOR_SET *pSet = (XGL_DESCRIPTOR_SET *) &(pPacket->pDescriptorSets[idx]);')
diff --git a/tools/glave/src/glv_extensions/glvtrace_xgl/glvtrace_xgl_helpers.h b/tools/glave/src/glv_extensions/glvtrace_xgl/glvtrace_xgl_helpers.h
index b8bdcf6..e6fd0d1 100644
--- a/tools/glave/src/glv_extensions/glvtrace_xgl/glvtrace_xgl_helpers.h
+++ b/tools/glave/src/glv_extensions/glvtrace_xgl/glvtrace_xgl_helpers.h
@@ -324,7 +324,7 @@
}
}
-static void add_create_ds_layout_to_trace_packet(glv_trace_packet_header* pHeader, void** ppOut, const void* pIn)
+static void add_create_ds_layout_to_trace_packet(glv_trace_packet_header* pHeader, const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO** ppOut, const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO* pIn)
{
const XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO* pInNow = pIn;
XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO** ppOutNext = (XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO**)ppOut;
@@ -340,33 +340,33 @@
{
XGL_DESCRIPTOR_SET_LAYOUT_BINDING *pLayoutBinding = (XGL_DESCRIPTOR_SET_LAYOUT_BINDING *) pInNow->pBinding + i;
XGL_DESCRIPTOR_SET_LAYOUT_BINDING *pOutLayoutBinding = (XGL_DESCRIPTOR_SET_LAYOUT_BINDING *) (*ppOutNow)->pBinding + i;
- glv_add_buffer_to_trace_packet(pHeader, (void**) &pOutLayoutBinding, sizeof(XGL_SAMPLER) * pLayoutBinding->count, pLayoutBinding->pImmutableSamplers);
- glv_finalize_buffer_address(pHeader, (void**) &pOutLayoutBinding);
+ glv_add_buffer_to_trace_packet(pHeader, (void**) &pOutLayoutBinding->pImmutableSamplers, sizeof(XGL_SAMPLER) * pLayoutBinding->count, pLayoutBinding->pImmutableSamplers);
+ glv_finalize_buffer_address(pHeader, (void**) &pOutLayoutBinding->pImmutableSamplers);
}
glv_add_buffer_to_trace_packet(pHeader, (void**)&((*ppOutNow)->pBinding), sizeof(XGL_DESCRIPTOR_SET_LAYOUT_BINDING) * pInNow->count, pInNow->pBinding);
glv_finalize_buffer_address(pHeader, (void**)&((*ppOutNow)->pBinding));
+ ppOutNext = (XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO**)&(*ppOutNow)->pNext;
pInNow = (XGL_DESCRIPTOR_SET_LAYOUT_CREATE_INFO*)pInNow->pNext;
}
return;
}
-static void add_update_descriptors_to_trace_packet(glv_trace_packet_header* pHeader, void** ppOut, const void* pIn)
+static void add_update_descriptors_to_trace_packet(glv_trace_packet_header* pHeader, const uint32_t count, void*** pppUpdateArrayOut, const void** ppUpdateArrayIn)
{
- const XGL_UPDATE_SAMPLERS* pInNow = pIn;
- XGL_UPDATE_SAMPLERS** ppOutNext = (XGL_UPDATE_SAMPLERS**)ppOut;
- while (pInNow != NULL)
+ uint32_t i;
+ for (i = 0; i < count; i++)
{
- XGL_UPDATE_SAMPLERS** ppOutNow = ppOutNext;
- ppOutNext = NULL;
+ const XGL_UPDATE_SAMPLERS* pInNow = (const XGL_UPDATE_SAMPLERS*)ppUpdateArrayIn[i];
+ XGL_UPDATE_SAMPLERS** ppOut = (XGL_UPDATE_SAMPLERS**)*pppUpdateArrayOut;
+ XGL_UPDATE_SAMPLERS** ppOutNow = &(ppOut[i]);
switch (pInNow->sType)
{
case XGL_STRUCTURE_TYPE_UPDATE_SAMPLERS:
{
glv_add_buffer_to_trace_packet(pHeader, (void**)(ppOutNow), sizeof(XGL_UPDATE_SAMPLERS), pInNow);
XGL_UPDATE_SAMPLERS* pPacket = (XGL_UPDATE_SAMPLERS*)*ppOutNow;
- glv_add_buffer_to_trace_packet(pHeader, (void **) &pPacket->pSamplers, ((XGL_UPDATE_SAMPLERS*)pInNow)->count * sizeof(XGL_SAMPLER), ((XGL_UPDATE_SAMPLERS*)pInNow)->pSamplers);
+ glv_add_buffer_to_trace_packet(pHeader, (void **) &pPacket->pSamplers, ((XGL_UPDATE_SAMPLERS*)pInNow)->count * sizeof(XGL_SAMPLER), pInNow->pSamplers);
glv_finalize_buffer_address(pHeader, (void**)&(pPacket->pSamplers));
- ppOutNext = (XGL_UPDATE_SAMPLERS**)&(*ppOutNow)->pNext;
glv_finalize_buffer_address(pHeader, (void**)(ppOutNow));
break;
}
@@ -376,14 +376,13 @@
glv_add_buffer_to_trace_packet(pHeader, (void**)(ppOutNow), sizeof(XGL_UPDATE_SAMPLER_TEXTURES), pInNow);
XGL_UPDATE_SAMPLER_TEXTURES* pPacket = (XGL_UPDATE_SAMPLER_TEXTURES*)*ppOutNow;
glv_add_buffer_to_trace_packet(pHeader, (void **) &pPacket->pSamplerImageViews, ((XGL_UPDATE_SAMPLER_TEXTURES*)pInNow)->count * sizeof(XGL_SAMPLER_IMAGE_VIEW_INFO), ((XGL_UPDATE_SAMPLER_TEXTURES*)pInNow)->pSamplerImageViews);
-// TODO : This is still broken. How to update the original XGL_SAMPLER_IMAGE_VIEW_INFO struct ptrs to have correct address for newly added XGL_IMAGE_VIEW_ATTACH_INFO blocks below?
- uint32_t i;
- for (i = 0; i < ((XGL_UPDATE_SAMPLER_TEXTURES*)pInNow)->count; i++) {
- glv_add_buffer_to_trace_packet(pHeader, (void **) &pPacket->pSamplerImageViews[i].pImageView, sizeof(XGL_IMAGE_VIEW_ATTACH_INFO), ((XGL_UPDATE_SAMPLER_TEXTURES*)pInNow)->pSamplerImageViews[i].pImageView);
- glv_finalize_buffer_address(pHeader, (void**)&(pPacket->pSamplerImageViews[i].pImageView));
+// TODO : is the below correct? is pImageView a pointer to a single struct or not?
+ uint32_t j;
+ for (j = 0; j < ((XGL_UPDATE_SAMPLER_TEXTURES*)pInNow)->count; j++) {
+ glv_add_buffer_to_trace_packet(pHeader, (void **) &pPacket->pSamplerImageViews[j].pImageView, sizeof(XGL_IMAGE_VIEW_ATTACH_INFO), ((XGL_UPDATE_SAMPLER_TEXTURES*)pInNow)->pSamplerImageViews[j].pImageView);
+ glv_finalize_buffer_address(pHeader, (void**)&(pPacket->pSamplerImageViews[j].pImageView));
}
glv_finalize_buffer_address(pHeader, (void**)&(pPacket->pSamplerImageViews));
- ppOutNext = (XGL_UPDATE_SAMPLERS**)&(*ppOutNow)->pNext;
glv_finalize_buffer_address(pHeader, (void**)(ppOutNow));
break;
}
@@ -391,14 +390,8 @@
{
glv_add_buffer_to_trace_packet(pHeader, (void**)(ppOutNow), sizeof(XGL_UPDATE_IMAGES), pInNow);
XGL_UPDATE_IMAGES* pPacket = (XGL_UPDATE_IMAGES*)*ppOutNow;
- uint32_t i;
- glv_add_buffer_to_trace_packet(pHeader, (void **) &pPacket->pImageViews, ((XGL_UPDATE_IMAGES*)pInNow)->count * sizeof(XGL_IMAGE_VIEW_ATTACH_INFO *), ((XGL_UPDATE_IMAGES*)pInNow)->pImageViews);
- for (i = 0; i < ((XGL_UPDATE_IMAGES*)pInNow)->count; i++) {
- glv_add_buffer_to_trace_packet(pHeader, (void **) &pPacket->pImageViews[i], sizeof(XGL_IMAGE_VIEW_ATTACH_INFO), ((XGL_UPDATE_IMAGES*)pInNow)->pImageViews[i]);
- glv_finalize_buffer_address(pHeader, (void**)&(pPacket->pImageViews[i]));
- }
+ glv_add_buffer_to_trace_packet(pHeader, (void **) &pPacket->pImageViews, ((XGL_UPDATE_IMAGES*)pInNow)->count * sizeof(XGL_IMAGE_VIEW_ATTACH_INFO), ((XGL_UPDATE_IMAGES*)pInNow)->pImageViews);
glv_finalize_buffer_address(pHeader, (void**)&(pPacket->pImageViews));
- ppOutNext = (XGL_UPDATE_SAMPLERS**)&(*ppOutNow)->pNext;
glv_finalize_buffer_address(pHeader, (void**)(ppOutNow));
break;
}
@@ -406,26 +399,21 @@
{
glv_add_buffer_to_trace_packet(pHeader, (void**)(ppOutNow), sizeof(XGL_UPDATE_BUFFERS), pInNow);
XGL_UPDATE_BUFFERS* pPacket = (XGL_UPDATE_BUFFERS*)*ppOutNow;
- glv_add_buffer_to_trace_packet(pHeader, (void **) &pPacket->pBufferViews, ((XGL_UPDATE_BUFFERS*)pInNow)->count * sizeof(XGL_BUFFER_VIEW_ATTACH_INFO *), ((XGL_UPDATE_BUFFERS*)pInNow)->pBufferViews);
- uint32_t i;
- for (i = 0; i < ((XGL_UPDATE_BUFFERS*)pInNow)->count; i++) {
- glv_add_buffer_to_trace_packet(pHeader, (void **) &pPacket->pBufferViews[i], sizeof(XGL_BUFFER_VIEW_ATTACH_INFO), ((XGL_UPDATE_BUFFERS*)pInNow)->pBufferViews[i]);
- glv_finalize_buffer_address(pHeader, (void**)&(pPacket->pBufferViews[i]));
- }
+ glv_add_buffer_to_trace_packet(pHeader, (void **) &pPacket->pBufferViews, ((XGL_UPDATE_BUFFERS*)pInNow)->count * sizeof(XGL_BUFFER_VIEW_ATTACH_INFO), ((XGL_UPDATE_BUFFERS*)pInNow)->pBufferViews);
glv_finalize_buffer_address(pHeader, (void**)&(pPacket->pBufferViews));
- ppOutNext = (XGL_UPDATE_SAMPLERS**)&(*ppOutNow)->pNext;
glv_finalize_buffer_address(pHeader, (void**)(ppOutNow));
break;
}
case XGL_STRUCTURE_TYPE_UPDATE_AS_COPY:
{
glv_add_buffer_to_trace_packet(pHeader, (void**)(ppOutNow), sizeof(XGL_UPDATE_AS_COPY), pInNow);
- ppOutNext = (XGL_UPDATE_SAMPLERS**)&(*ppOutNow)->pNext;
glv_finalize_buffer_address(pHeader, (void**)(ppOutNow));
break;
}
- default:
- assert(0);
+ default:
+ {
+ assert(0);
+ }
}
pInNow = (XGL_UPDATE_SAMPLERS*)pInNow->pNext;
}
diff --git a/tools/glave/src/glv_extensions/glvtrace_xgl/glvtrace_xgl_trace.c b/tools/glave/src/glv_extensions/glvtrace_xgl/glvtrace_xgl_trace.c
index 2cc7215..c1d8974 100644
--- a/tools/glave/src/glv_extensions/glvtrace_xgl/glvtrace_xgl_trace.c
+++ b/tools/glave/src/glv_extensions/glvtrace_xgl/glvtrace_xgl_trace.c
@@ -144,7 +144,7 @@
}
GLVTRACER_EXPORT XGL_RESULT XGLAPI __HOOKED_xglAllocDescriptorSets(
- XGL_DESCRIPTOR_REGION descriptorRegion,
+ XGL_DESCRIPTOR_POOL descriptorPool,
XGL_DESCRIPTOR_SET_USAGE setUsage,
uint32_t count,
const XGL_DESCRIPTOR_SET_LAYOUT* pSetLayouts,
@@ -157,12 +157,12 @@
uint64_t startTime;
SEND_ENTRYPOINT_ID(xglAllocDescriptorSets);
startTime = glv_get_time();
- result = real_xglAllocDescriptorSets(descriptorRegion, setUsage, count, pSetLayouts, pDescriptorSets, pCount);
+ result = real_xglAllocDescriptorSets(descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets, pCount);
size_t customSize = (*pCount <= 0) ? (sizeof(XGL_DESCRIPTOR_SET)) : (*pCount * sizeof(XGL_DESCRIPTOR_SET));
CREATE_TRACE_PACKET(xglAllocDescriptorSets, sizeof(XGL_DESCRIPTOR_SET_LAYOUT) + customSize + sizeof(uint32_t));
pHeader->entrypoint_begin_time = startTime;
pPacket = interpret_body_as_xglAllocDescriptorSets(pHeader);
- pPacket->descriptorRegion = descriptorRegion;
+ pPacket->descriptorPool = descriptorPool;
pPacket->setUsage = setUsage;
pPacket->count = count;
glv_add_buffer_to_trace_packet(pHeader, (void**)&(pPacket->pSetLayouts), count*sizeof(XGL_DESCRIPTOR_SET_LAYOUT), pSetLayouts);