Skip to content

Vulkan Renderer Description & Roadmap #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
VReaperV opened this issue May 2, 2025 · 0 comments
Open

Vulkan Renderer Description & Roadmap #4

VReaperV opened this issue May 2, 2025 · 0 comments

Comments

@VReaperV
Copy link
Contributor

VReaperV commented May 2, 2025

This issue is to describe the general structure, goals, hardware requirements and some initial features of Daemon-vulkan.

Goals

  • Daemon-vulkan is aimed at creating, supporting, and expanding a Vulkan-based renderer using modern API features to provide a smooth, high-framerate experience on scenes of any (reasonable) complexity in Unvanquished.

  • Clear framework for hardware support.

Structure

Daemon-vulkan is (to be) a highly GPU-driven pipeline, with CPU tasks realised through a task (job) list.

The required API features and extensions are put into 3 featuresets: minimal, recommended, and experimental (names subject to change). This is in contrast to the granular extension enablement in the OpenGL renderer: while it might provide finer control over them, there usually isn't any need to - and at the same time hardware usually supports a whole set of features rather than just cherry-picking them (e. g. in OpenGL, if something supports SSBOs, it likely also supports compute shaders). At the same time, the fine-grained enablement increases the amount of potential codepaths exponentially, which is not great for maintenace.

Featuresets

The featuresets represent 3 different categories of devices:

  • minimal: minimal to run Daemon-vulkan (this means that it supports the requried features and extensions, but it does not necessarily guarantee that it would run well on such hardware; a list of minimal hardware requirements to run the game well might be created later)

  • recommended: TBA

  • experimental: this is where newer things like mesh shaders or hardware raytracing will land

Once some initial development is done, the first 2 featuresets will be fairly set-in-stone: more features might be added to them, but likely only those that are already supported by the minimum hardware for that featureset. The 3rd featureset, on the other hand, is less strict, so hardware requirements for it may fluctuate. Some extensions might be enabled alongside a featureset, e. g. the NVidia version of Device Generated Commands, which is supported on fairly old GPUs, compared to the core version of this extension.

The featureset list is still under construction, and can be found here - #12
Note that this list might fluctuate quite a lot in the near future.

Code-wise these featuresets would be contained in their own directories. Any shared parts would be outside of that.

Phasing out

At this time, there's no hardware phasing out planned. However, if we do need it at some point, it will simply require:

  1. Deleting the minimal featureset directory.
  2. Renaming recommended featureset to minimal.
  3. Copying the experimental featureset directory to a newly-created recommended featureset directory (potentially with some changes, based on feature/extension availability in the experimental featureset at the time).

Versioning

Daemon-vulkan has its own versioning system on top of the Daemon one. It is not a replacement for the Daemon version, only an addition to it! Daemon-vulkan has the exact same API/ABI compatibility to Unvanquished as the GL-renderer does.

The version consists of 3 numbers [major].[minor].[patch]:

  • [major]: Major features and milestones.
  • [minor]: Minor features and milestones.
  • [patch]: Bugfixes and minor changes that don't qualify for [minor] version.

Roadmap

The projected features are sorted by their expected version. Mainly, they will be projected a few minor versions (for minor features) and one major version (for major features) ahead. This does not include changes for [patch] versions. Other features will be in the unsorted category, version to be added later. The major and minor versions are also reflected through the milestones.

The current feature list can be found in: https://github.com/orgs/DaemonEngine/projects/25/views/1

The goal for version 1.0.0 is feature parity with the GL renderer. The current minor goal is the task list and Vulkan device initialisation.

@VReaperV VReaperV pinned this issue May 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant