Remove create pipeline cache control feature during replay#2620
Open
bartosz-muszarski-arm wants to merge 2 commits intoLunarG:devfrom
Open
Remove create pipeline cache control feature during replay#2620bartosz-muszarski-arm wants to merge 2 commits intoLunarG:devfrom
bartosz-muszarski-arm wants to merge 2 commits intoLunarG:devfrom
Conversation
Collaborator
|
CI gfxreconstruct build queued with queue ID 629006. |
Collaborator
|
CI gfxreconstruct build # 8669 running. |
Collaborator
|
CI gfxreconstruct build # 8669 passed. |
0cd90c8 to
c2b4dd3
Compare
Collaborator
|
CI gfxreconstruct build queued with queue ID 640698. |
Collaborator
|
CI gfxreconstruct build # 8806 running. |
Collaborator
|
CI gfxreconstruct build # 8806 passed. |
All pipeline types that support VK_EXT_pipeline_creation_cache_control can have VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT flag enabled in the creation call. This flag allows the driver to not create pipelines if the creation would require compilation. This feature is problematic for capture/replay - gfxreconstruct will currently remove such calls during capture and always return VK_PIPELINE_COMPILE_REQUIRED to the caller. This behavior results in corruptions in new UE based content. This commit attempts to fix that by allowing the feature on capture, but removing it during replay: Capture: * change allow_pipeline_compile_required option to true by default This prevents capture layer from introducing any changes to the calls Replay - on Create(Compute/Graphics/RayTracing)Pipeline: * If creation call returned VK_PIPELINE_COMPILE_REQUIRED originally (pipeline creation failed), skip it on replay * otherwise (pipeline creation succeeded) remove VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT flag if present This ensures the driver creates exactly the same set of objects it did during capture - it no longer has an option to fail if compilation is required. Change-Id: Ibaa901fc4f4f83ff5149680fc6e45564269beb9b
c2b4dd3 to
ad67f31
Compare
Collaborator
|
CI gfxreconstruct build queued with queue ID 640724. |
Collaborator
|
CI gfxreconstruct build # 8807 running. |
Collaborator
|
CI gfxreconstruct build # 8807 passed. |
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.
All pipeline types that support VK_EXT_pipeline_creation_cache_control can have VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT flag enabled in the creation call. This flag allows the driver to not create pipelines if the creation would require compilation. This feature is problematic for capture/replay - gfxreconstruct will currently remove such calls during capture and always return VK_PIPELINE_COMPILE_REQUIRED to the caller. This behavior results in corruptions in new UE based content. This commit attempts to fix that by allowing the feature on capture, but removing it during replay:
Capture:
Replay - on Create(Compute/Graphics/RayTracing)Pipeline:
This ensures the driver creates exactly the same set of objects it did during capture - it no longer has an option to fail if compilation is required.