Closed kablooey123 closed 2 months ago
I have prototyped the merge, and found a few things:
vulkan.hpp
thing was easy to fix, but I had to be careful with VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1
FrameBufferInfoEx
I'm not sure if the new shader build system (ShaderMake) is any better than the previous one integrated with nvrhi. It seems like a sideways move with some changes providing less flexibility (e.g. fixed compiler options vs. pass-through to DXC which was more flexible before, and a less-complete shader blob library). However, I suspect nVidia sees a benefit for this to be separate. Just more work on the user side now.
It's up and working now against the current master of RBDoom3BFG (including MoltenVK/macOS). @RobertBeckebans I could contribute some of this if you are interested. Let me know.
@SRSaunders does the new NVRHI version have any impact on the performance? I think there is a general flaw in the Vulkan implementation of NVRHI which affects the performance. If you can wrap together your changes for a PR then I would be happy to look at it. ShaderMake was introduced 1 month before I wanted the feature freeze for RBDoom 1.5 so we went out of time to integrate it and seeing if it makes any trouble.
I can do some benchmarking this weekend and report back.
Regarding contributions, I can provide the RBDoom3BFG changes in a PR. However, It might be best if you would fast-forward your nvrhi fork yourself plus open a new fork for ShaderMake. I could then add fixes on those, as well as pushing them upstream.
The nvrhi merge itself was pretty easy. I just had to resolve one conflict to preserve some work from Stephen Pridham.
I have not merged any new stuff from Donut’s DeviceManager. I’m not sure if that’s important or even desirable at this point if you are happy with vulkan 1.2.
I looked into this today for several hours. I'm not really sure if I like the split of ShaderMake into another external repo and that it requires Vulkan 1.3 which might break it for some users and especially Linux users who just apt get Vulkan headers on older systems like I do. It seems that the new NVRHI version only adds minor bugfixes and some Nvidia specific Raytracing extensions.
A couple of things I have found:
The reason I have delayed pushing the PR until today was:
<vulkan/vulkan.hpp>
was included and change a few vk::
namespace references, but it is all working fine now on Windows, Linux, and macOS. While only a linux issue, it forced me to look closer at the #includes
and the implementation is probably more robust now.I will push a PR later today so you can look at it and decide the path forward.
NVRHI is update to date to the newest version now.
This project's NVRHI fork is two years old. There's been countless improvements since then.
I know of three incompatibilities; NVRHI headers no longer publicly include
vulkan.hpp
, upstreamFrameBufferInfoEx
has no hash template override, and the shader build system has changed. These seem trivial, but I remember there was something going on with MoltenVk.What are the blockers on this work?