@@ -1330,18 +1330,51 @@ static void handle_VkCopyDescriptorSets(lava_file_reader& reader, uint32_t descr
13301330
13311331void replay_postprocess_vkCmdPushDescriptorSetKHR (lava_file_reader& reader, VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites)
13321332{
1333- assert (false );
1334- // trackedcommand cmd { VKCMDPUSHDESCRIPTORSETKHR };
1335- // TBD - need to delay
1336- // handle_VkWriteDescriptorSets(writer, descriptorWriteCount, pDescriptorWrites, false);
1333+ const uint32_t cmdbuffer_index = index_to_VkCommandBuffer.index (commandBuffer);
1334+ auto & cmdbuffer_data = VkCommandBuffer_index.at (cmdbuffer_index);
1335+ trackedcommand cmd { VKCMDPUSHDESCRIPTORSETKHR };
1336+ cmd.data .push_descriptorset .pipelineBindPoint = pipelineBindPoint;
1337+ cmd.data .push_descriptorset .layout = layout;
1338+ cmd.data .push_descriptorset .set = set;
1339+ // TBD handle pDescriptorWrites here
1340+ cmdbuffer_data.commands .push_back (cmd);
13371341}
13381342
13391343void replay_postprocess_vkCmdPushDescriptorSet2KHR (lava_file_reader& reader, VkCommandBuffer commandBuffer, const VkPushDescriptorSetInfoKHR* pPushDescriptorSetInfo)
13401344{
1341- assert (false );
1342- // trackedcommand cmd { VKCMDPUSHDESCRIPTORSET2KHR };
1343- // TBD - need to delay
1344- // handle_VkWriteDescriptorSets(writer, pPushDescriptorSetInfo->descriptorWriteCount, pPushDescriptorSetInfo->pDescriptorWrites, false);
1345+ const uint32_t cmdbuffer_index = index_to_VkCommandBuffer.index (commandBuffer);
1346+ auto & cmdbuffer_data = VkCommandBuffer_index.at (cmdbuffer_index);
1347+
1348+ // "If stageFlags specifies a subset of all stages corresponding to one or more pipeline bind points, the binding operation still affects all stages corresponding to
1349+ // the given pipeline bind point(s) as if the equivalent original version of this command had been called with the same parameters. For example, specifying a
1350+ // stageFlags value of VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT | VK_SHADER_STAGE_COMPUTE_BIT is equivalent to calling the original version of this
1351+ // command once with VK_PIPELINE_BIND_POINT_GRAPHICS and once with VK_PIPELINE_BIND_POINT_COMPUTE."
1352+
1353+ if (pPushDescriptorSetInfo->stageFlags & (VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT))
1354+ {
1355+ trackedcommand cmd { VKCMDPUSHDESCRIPTORSETKHR };
1356+ cmd.data .push_descriptorset .pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
1357+ cmd.data .push_descriptorset .layout = pPushDescriptorSetInfo->layout ;
1358+ cmd.data .push_descriptorset .set = pPushDescriptorSetInfo->set ;
1359+ cmd.data .push_descriptorset .descriptorWriteCount = pPushDescriptorSetInfo->descriptorWriteCount ;
1360+ // TBD handle pDescriptorWrites here
1361+ cmdbuffer_data.commands .push_back (cmd);
1362+ }
1363+ if (pPushDescriptorSetInfo->stageFlags & VK_SHADER_STAGE_COMPUTE_BIT)
1364+ {
1365+ trackedcommand cmd { VKCMDPUSHDESCRIPTORSETKHR };
1366+ cmd.data .push_descriptorset .pipelineBindPoint = VK_PIPELINE_BIND_POINT_COMPUTE;
1367+ cmd.data .push_descriptorset .layout = pPushDescriptorSetInfo->layout ;
1368+ cmd.data .push_descriptorset .set = pPushDescriptorSetInfo->set ;
1369+ cmd.data .push_descriptorset .descriptorWriteCount = pPushDescriptorSetInfo->descriptorWriteCount ;
1370+ // TBD handle pDescriptorWrites here
1371+ cmdbuffer_data.commands .push_back (cmd);
1372+ }
1373+ }
1374+
1375+ void replay_postprocess_vkCmdPushDescriptorSet2 (lava_file_reader& reader, VkCommandBuffer commandBuffer, const VkPushDescriptorSetInfo* pPushDescriptorSetInfo)
1376+ {
1377+ replay_postprocess_vkCmdPushDescriptorSet2KHR (reader, commandBuffer, pPushDescriptorSetInfo);
13451378}
13461379
13471380void replay_postprocess_vkUpdateDescriptorSets (lava_file_reader& reader, VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies)
0 commit comments