Changelog

The history of changes of Tephra in the main branch is described here. Early development versions (0.x) have breaking changes in minor version increments. Once stable (1.x & onward), breaking changes will happen only on major version increments.

In-dev version 0.4.0

Released 2024-01-21

  • Improved resource view implementation and added internal guarantees of safe usage of resources even after their the user has destroyed them.
  • Added support for the CMake build system and fixed compilation issues on Linux.
  • Included cube demo data and helpers, rather than pulling the files from the Vulkan SDK.

Breaking changes

  • Changed Vulkan function pointer types from void* to PFN_vkVoidFunction

In-dev version 0.3.0

Released 2023-11-17

  • This version cleans up some mistakes in the interface. Nothing too exciting.
  • Added tp::HostMappedMemory::getArrayView methods for easier interpretation of mapped memory as an array.
  • Added a new "Streaming compute test" that shows off and validates streaming data to the gpu, processing it there and then streaming it back.

Breaking changes

  • Most methods of tp::GraphicsPipelineSetup had their first default parameter removed. This was to avoid confusing calls like pipeline.setMultisampling() actually disabling multisampling.
  • tp::OverallocationBehavior growFactor now more intuitively relates to how much the pool will grow after an allocation. For example growFactor = 2.0 will try to at least double the size of the pool. Before this change to get the same behavior you needed a growFactor of 1.0.
  • Template parameter of tp::HostMappedMemory::getPtr now accepts a type of the pointed-to element, rather than the type of the pointer itself. I feel like this is less surprising and consistent with the new tp::HostMappedMemory::getArrayView methods.

In-dev version 0.2.1

Released 2023-11-08

  • Added optional parameters to tp::Device::submitQueuedJobs to allow inserting additional wait operations that will be done before any of the enqueued jobs will be executed on the device. This allows for waiting on workloads that may be determined to be needed during the recording phase of a job, after it has already been enqueued.
  • Removed the requirement to finish recording of all tp::RenderList and tp::ComputeList in a render or compute pass, respectively.

In-dev version 0.2.0

Released 2023-10-25

Breaking changes

  • Bumped up the minimum required Vulkan API version to 1.3
  • Removed tp::AttachmentBindPoint, tp::AttachmentBinding, tp::SubpassDependency, tp::SubpassLayout, tp::AttachmentDescription, tp::AttachmentBindPointType, tp::RenderPassLayout and tp::RenderPassAttachment.
  • Removed tp::MultisampleLevel::Undefined and tp::DescriptorType::InputAttachment enum values.
  • Removed tp::Device::createRenderPassLayout.
  • Removed tp::GraphicsPipelineSetup::setRenderPassLayout.
  • Changed tp::GraphicsPipelineSetup constructor parameters. It no longer accepts a render pass layout and subpass index.
  • Removed tp::RenderPassSetup structure's layout and attachments fields. Added depthStencilAttachment, colorAttachments and viewMask fields instead. Changed the structure's constructors accordingly.
  • Changed tp::Job::cmdExecuteRenderPass parameters. It now accepts a single recording variant instead of one per subpass.

In-dev version 0.1.1

Released 2023-10-23

  • Allowed limited asynchronous enqueue and submit to the same device queue.
  • Fixed several bugs in the job-local image allocator.
    • Unused images now don't get allocated at all.

In-dev version 0.1.0

Released 2023-07-15

  • Initial release on GitHub.