vkd3d-proton/libs
Hans-Kristian Arntzen 3c92b3a1bc vkd3d: Implement AddToStateObject().
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>
2022-07-11 12:11:27 +02:00
..
d3d12 d3d12: Do not export ordinals for most symbols. 2021-10-12 11:09:16 +01:00
vkd3d vkd3d: Implement AddToStateObject(). 2022-07-11 12:11:27 +02:00
vkd3d-common common: Fix missing include. 2022-04-22 18:31:59 +02:00
vkd3d-shader vkd3d-shader: Fix GRAD sample on cubes. 2022-06-28 12:14:41 +02:00
vkd3d-utils d3d12: Do not export ordinals for most symbols. 2021-10-12 11:09:16 +01:00
.gitignore libs/vkd3d: Trace build version. 2018-06-27 22:43:49 +02:00
meson.build meta: Add missing newlines to end of files 2020-11-05 17:16:57 +01:00