> > Shared SPIRV-Tools is not shipped by Debian Bullseye, and is broken if built manually.
>
> Is that a regression? I'm using a build of shared SPIRV-Tools I made myself, and it seems to work fine, although it's an older (v2019.5) version.
Okay, I think I remember / have reproduced the problem I was encountering.
If I build spirv-tools with a prefix that doesn't put it in $PATH, and then try to build vkd3d, I get this:
elizabeth@ledyba:~/git/vkd3d64$ make
make all-am
make[1]: Entering directory '/home/elizabeth/git/vkd3d64'
CCLD vkd3d-compiler
/usr/bin/ld: warning: libSPIRV-Tools-shared.so, needed by ./.libs/libvkd3d-shader.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: ./.libs/libvkd3d-shader.so: undefined reference to `spvContextCreate'
/usr/bin/ld: ./.libs/libvkd3d-shader.so: undefined reference to `spvContextDestroy'
/usr/bin/ld: ./.libs/libvkd3d-shader.so: undefined reference to `spvTextDestroy'
/usr/bin/ld: ./.libs/libvkd3d-shader.so: undefined reference to `spvDiagnosticDestroy'
/usr/bin/ld: ./.libs/libvkd3d-shader.so: undefined reference to `spvBinaryToText'
/usr/bin/ld: ./.libs/libvkd3d-shader.so: undefined reference to `spvValidateBinary'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:1510: vkd3d-compiler] Error 1
make[1]: Leaving directory '/home/elizabeth/git/vkd3d64'
make: *** [Makefile:1157: all] Error 2
I don't really understand linking enough to know whose fault this is, although I suspect it's the fault of spirv-tools, which is generally just a mess.
Either way I don't think this patch is the right thing to do, so I'm going to close this.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/52#note_37197
The Vulkan spec says:
Parameters to the command requesting a deferred operation may be accessed by the implementation at any time until the deferred operation enters the
complete state Pointer parameters must not be modified (e.g. reallocated/freed).
This fixes a regression in Doom Eternal with ray tracing enabled with drivers
that actually support deferred operations (e.g. nvidia, amdvlk).
--
v2: winevulkan: Keep deferred operation function params alive.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3188
The Vulkan spec says:
Parameters to the command requesting a deferred operation may be accessed by the implementation at any time until the deferred operation enters the
complete state Pointer parameters must not be modified (e.g. reallocated/freed).
This fixes a regression in Doom Eternal with ray tracing enabled with drivers
that actually support deferred operations (e.g. nvidia, amdvlk).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3188