3c92b3a1bc
This is barely implementable, and relies on implementations to do kinda what we want. To make this work in practice, we need to allow two pipelines per state object. One that is created with LIBRARY and one that can be bound. When incrementing the PSO, we use the LIBRARY one. It seems to be allowed to create a new library from an old library. It is more convenient for us if we're allowed to do this, so do this until we're forced to do otherwise. DXR 1.1 requires that shader identifiers remain invariant for child pipelines if the parent pipeline also have them. Vulkan has no such guarantee, but we can speculate that it works and validate that identifiers remain invariant. This seems to work fine on NVIDIA at least ... It probably makes sense that it works for implementations where pipeline libraries are compiled at that time. The basic implementation of AddToStateObject() is to consider the parent pipeline as a COLLECTION pipeline. This composes well and avoids a lot of extra implementation cruft. Also adds validation to ensure that COLLECTION global state matches with other COLLECTION objects and the parent. We will also inherit global state like root signatures, pipeline config, shader configs etc when using AddToStateObject(). The tests pass on NVIDIA at least. Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no> |
||
---|---|---|
.. | ||
d3d12 | ||
vkd3d | ||
vkd3d-common | ||
vkd3d-shader | ||
vkd3d-utils | ||
.gitignore | ||
meson.build |