Comments (9)
This impacts capturing any Source 2 game so for example can be reproduced with Dota 2. When I use gfxrecon I have to run with a command-line option to disable VK_EXT_pipeline_creation_cache_control to workaround this issue (vulkan_disable_ext_pipeline_creation_cache_control
).
from gfxreconstruct.
This error makes sense. Because the pipeline cache was invalidated, so it needed to compile. But it had VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
flag, so vkCreateGraphicsPipelines
returned VK_PIPELINE_COMPILE_REQUIRED
, and pipeline was VK_NULL_HANDLE
. And then, because pipeline was VK_NULL_HANDLE
, it crashed in the following command that was related to pipeline.
We might have a couple solutions.
- Require user to get a new capture to have a new pipeline cache.
- Add a replay option to disable VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT flag.
- I think you do something in your program, when
VK_PIPELINE_COMPILE_REQUIRED
happens. We could do the same thing if you tell us what you do.
I think No. 2 could be a better idea. What do you think? @zmike @bradgrantham-lunarg
vkspec:
VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT specifies that pipeline creation will fail if a compile is required for creation of a valid VkPipeline object; VK_PIPELINE_COMPILE_REQUIRED will be returned by pipeline creation, and the VkPipeline will be set to VK_NULL_HANDLE.
from gfxreconstruct.
In my personal view, I think gfxrecon should always fail vkCreateGraphicsPipeliens if VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT is specified, the traces are likely going to not be replayable since the most likely reason an app is asking is to avoid compiling a pipeline. Since you don't have access to the cache data (it might have come from an internal driver cache rather than a loaded VkPipelineCache) this just seems like it's not going to work in most cases.
from gfxreconstruct.
I think we could have an option (default on?) to always return COMPILE_REQUIRED
if the application passed VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
to vkCreate*Pipelines
. Would that work?
from gfxreconstruct.
My response was before you edited your comment - I think that sounds like a plan.
from gfxreconstruct.
@zmike @danginsburg could you help to view this PR? Thank you very much.
#1160
from gfxreconstruct.
@locke-lunarg I'm not familiar with the gfxreconstruct codebase, but at a conceptual level the change seems like it should resolve this issue. Thanks!
from gfxreconstruct.
I am in the same boat, looks OK to me but I'm not familiar with the code base.
from gfxreconstruct.
#1160 was merged. @danginsburg and @zmike do you think you will have a chance to try out this change in dev
?
from gfxreconstruct.
Related Issues (20)
- VK_EXT_frame_boundary not enabled during replay when --offscreen-swapchain-frame-boundary is enabled HOT 2
- Virtual swapchain and screenshot features are incompatible with protected-capable device queues HOT 1
- [capture] Crash in Sascha's geometry shader sample HOT 8
- Add Android-specific hints and tips to HOWTO_android.md
- Correct typo in HOWTO_android.md HOT 1
- --api <api> command line option of gfxrecon-replay.exe
- Handle use of AHB on Android without QueuePresent with FrameBoundary as frame HOT 1
- fullscreenexclusive causes inconsistent replay failure
- Trimming shaderobjects trace causes replay failure
- Linux custom path installation is somewhat broken
- Add macOS entry to Release Packages GitHub Action
- Ensure GFXR builds for macOS x86_64 HOT 4
- Sign resulting DSOs so they can be loaded into signed apps like vkcube shipped with SDK HOT 1
- Add macOS entry to BUILD.md
- Add macOS entry to README.md HOT 1
- Put static libraries for compressors for ARM and x86 macOS in external/precompiled
- [capture] Why capture failed with hwui=skiavk? HOT 4
- ray-tracing captures are not tracked correctly HOT 1
- Support --fwo(--force-windowed-origin) on xcb, xlib, wayland and metal
- Support --fw(--force-windowed) on Vulkan
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gfxreconstruct.