Skip to content

migration from nvpro_core to pknowles/vulkan_objects#2

Open
pknowles wants to merge 2 commits intomainfrom
dev
Open

migration from nvpro_core to pknowles/vulkan_objects#2
pknowles wants to merge 2 commits intomainfrom
dev

Conversation

@pknowles
Copy link
Owner

@pknowles pknowles commented Feb 1, 2026

Mostly non-functional refactor, replacing nvpro_core with vulkan_objects

This commit ports the entire application to the modern vulkan_objects
stack, removing many nvpro_core utilities and ecosystem dependencies in
favor of explicit, RAII-based Vulkan primitives, layered utilities and
features with clearer separation of concerns.

Core architecture changes

  • Replaced nvvkhl::Application with layered utilities
  • The main loop is visible in main() using e.g.
    vko::simple::Swapchain and vko::glfw::*
  • Vulkan SDK dependency removed, now handled by vulkan_objects
  • No global Vulkan symbols/functions

Memory, buffers, and images

  • Replaced nvvk::ResourceAllocator, MemAllocator, and
    StagingMemoryManager
  • Now using vko::vma::Allocator + vko::StagingStream
  • Buffers migrated to vko::DeviceBuffer / vko::BoundBuffer
  • Images/textures migrated to vko::BoundImage and vko::ViewedImage
  • Staging via vko::upload() and vko::download()

Pipelines, descriptors, and ray tracing

  • Replaced nvvk::DescriptorSetContainer with:
    vko::BindingsAndFlags, vko::SingleDescriptorSet,
    vko::WriteDescriptorSetBuilder

  • Graphics, compute, and ray tracing pipelines rebuilt using vko
    RAII wrappers

  • Shader Binding Tables migrated to vko::simple::ShaderBindingTables

  • Existing ray tracing acceleration structure utilities ported to use
    vko helpers

Command buffers, queues, and synchronization

  • Most visible vulkan calls are now vkCmd*, which are on the
    vko::Device function table
  • Timeline semaphore based submission via vko queue wrapper,
    which adds the concept of an explicit submit promise
  • New memory barrier and debug label calls

UI, tooling, and utilities

  • Direct ImGui + ImPlot integration (no nvvkhl elements)
  • Just using std::print() instead of LOGE etc.
  • Command-line parsing with Taywee/args
  • File utilities replaced with std::filesystem

Legacy isolation

  • Introduced nvpro_core_legacy_static for unavoidable leftovers:
  • DDS/KTX texture loading
  • Tonemapper postprocess
  • ImGui icon font

Build & tooling

  • CMake mostly using FetchContent
  • Removed nvpro_core build logic and custom macros
  • Vulkan SDK no longer required

@pknowles pknowles force-pushed the dev branch 2 times, most recently from 226c899 to d437dda Compare February 2, 2026 08:40
Mostly non-functional refactor, replacing nvpro_core with vulkan_objects

This commit ports the entire application to the modern vulkan_objects
stack, removing many nvpro_core utilities and ecosystem dependencies in
favor of explicit, RAII-based Vulkan primitives, layered utilities and
features with clearer separation of concerns.

Core architecture changes

- Replaced nvvkhl::Application with layered utilities
- The main loop is visible in main() using e.g.
  vko::simple::Swapchain and vko::glfw::*
- Vulkan SDK dependency removed, now handled by vulkan_objects
- No global Vulkan symbols/functions

Memory, buffers, and images

- Replaced nvvk::ResourceAllocator, MemAllocator, and
  StagingMemoryManager
- Now using vko::vma::Allocator + vko::StagingStream
- Buffers migrated to vko::DeviceBuffer / vko::BoundBuffer
- Images/textures migrated to vko::BoundImage and vko::ViewedImage
- Staging via vko::upload() and vko::download()

Pipelines, descriptors, and ray tracing

- Replaced nvvk::DescriptorSetContainer with:
  vko::BindingsAndFlags, vko::SingleDescriptorSet,
  vko::WriteDescriptorSetBuilder

- Graphics, compute, and ray tracing pipelines rebuilt using vko
  RAII wrappers
- Shader Binding Tables migrated to vko::simple::ShaderBindingTables
- Existing ray tracing acceleration structure utilities ported to use
  vko helpers

Command buffers, queues, and synchronization

- Most visible vulkan calls are now vkCmd*, which are on the
  vko::Device function table
- Timeline semaphore based submission via vko queue wrapper,
  which adds the concept of an explicit submit promise
- New memory barrier and debug label calls

UI, tooling, and utilities

- Direct ImGui + ImPlot integration (no nvvkhl elements)
- Just using std::print() instead of LOGE etc.
- Command-line parsing with Taywee/args
- File utilities replaced with std::filesystem

Legacy isolation

- Introduced nvpro_core_legacy_static for unavoidable leftovers:
- DDS/KTX texture loading
- Tonemapper postprocess
- ImGui icon font

Build & tooling

- CMake mostly using FetchContent
- Removed nvpro_core build logic and custom macros
- Vulkan SDK no longer required
moved recreatingswapchain
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant