Isolate render passes during replay (#3016) - #42
Open
olehkuznetsov wants to merge 1 commit into
Open
olehkuznetsov wants to merge 1 commit into
olehkuznetsov wants to merge 1 commit into
Conversation
olehkuznetsov
force-pushed
the
cherry-pick-pr-3016
branch
from
September 17, 2026 16:22
0dd0a10 to
d8bc02b
Compare
Add a --isolate-render-passes replay option backed by a new VulkanCommandSplitter, which splits a command buffer at each render pass boundary and submits the segments separately, chained through a semaphore. It is hooked into OverrideCmdBegin/EndRenderPass, OverrideQueueSubmit, OverrideBeginCommandBuffer, and OverrideResetCommandBuffer. Also adds the capture_and_replay() test helper, which captures a test app and replays the resulting gfxr headless against the mock ICD, plus an isolate-render-passes test app and test case exercising it. Cherry-pick notes: this fork already declares VulkanCommandPoolInfo as a struct with a `flags` member (alongside `queue_family_index`, used by the frame loop consumer), so the upstream `create_flags` member was dropped and its two uses now read the pre-existing field. (cherry picked from commit 9a83f8a) Change-Id: I8ade75b52d52d66bdd6ccfaf34d5f7fd6a6a6964
olehkuznetsov
force-pushed
the
cherry-pick-pr-3016
branch
from
September 17, 2026 17:00
d8bc02b to
8cbaf87
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cherry-pick of upstream commit LunarG/gfxreconstruct@9a83f8a (PR #3016).
Note
This is a prerequisite for #41 (
--serialize-compute-and-transfer), which uses thecapture_and_replay()test helper introduced here.Upstream Description
Add a
--isolate-render-passesreplay option backed by a newVulkanCommandSplitter, which splits a command buffer at each render pass boundary and submits the segments separately, chained through a semaphore.Changes
framework/decode/vulkan_command_splitter.{h,cpp}, hooked intoOverrideCmdBeginRenderPass,OverrideCmdEndRenderPass,OverrideQueueSubmit,OverrideBeginCommandBuffer, andOverrideResetCommandBuffer.OverrideCreateCommandPoolso the splitter can tell whether the pool was created withVK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT(implicit reset onvkBeginCommandBuffer).gfxrecon.py,replay_settings.h, andtool_settings.h, and document it inUSAGE_android.mdandUSAGE_desktop_Vulkan.md.capture_and_replay()test helper (test/verify-gfxr.{h,cpp}), which captures a test app and replays the resulting gfxr headless (--swapchain offscreen) against the mock ICD, asserting the replay exits cleanly. This makesgfxrecon-replaya build dependency ofgfxrecon-testapp-runnerand installs it into the test directory.isolate-render-passestest app and test case.Cherry-pick notes
Upstream replaces
typedef VulkanPoolInfo<VkCommandPool> VulkanCommandPoolInfo;with a struct carrying acreate_flagsmember, relocated further downvulkan_object_info.h. This fork already declaresVulkanCommandPoolInfoas a struct with aflagsmember (plusqueue_family_index, used byvulkan_replay_frame_loop_consumer.cpp), so the upstream struct was dropped and its two uses now read the pre-existingflagsfield. No existing call sites were renamed.The
tools/replay/replay_settings.hoption list was merged to keep this fork's--screenshot-apply-prerotationalongside the new--isolate-render-passes.