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.5.0
Released 2024-11-11
- Implemented device queries, see the Queries section of the user guide.
- Added additional Vulkan and VMA flags to tp::
BufferSetup and tp:: ImageSetup. - Improved support for bindless - fixes to tp::
DescriptorBindingFlag:: UpdateAfterBind and tp:: utils:: MutableDescriptorSet
Breaking changes
- Renamed tp::Device::updateSemaphores to tp::
Device:: updateDeviceProgress. It now also handles updating the results of device queries.
In-dev version 0.4.1
Released 2024-05-20
- Added support for passing additional Vulkan extension structures to tp::
RenderPassSetup. This needed to be more than a simple pNext
pointer, since it needs to be stored internally. Instead, a variant of tp::VkStructureMap was introduced for this purpose: tp:: VkRenderingInfoExtMap. - Properly identifying atomic accesses as combined read/write operations.
- Improved buffer memory reuse when using the tp::
JobResourcePoolFlag:: DisableSuballocation flag. - Fixed rare threading issue in assigning pending timeline values to jobs.
- Removed VulkanHeaderPath.props from the VS solution as it wasn't really needed.
- Fixed compilation issues on recent versions of GCC and Clang compilers
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 examplegrowFactor = 2.0
will try to at least double the size of the pool. Before this change to get the same behavior you needed agrowFactor
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
- Switched to using Vulkan's dynamic rendering feature, replacing Vulkan render passes. Tephra's render passes remain as a concept, but received a significant change and are closer to Tephra's compute passes now.
- Introduced multi-view rendering functionality as a part of this switch.
- Added tp::
ColorAttachment, tp:: DepthStencilAttachment and tp:: ResolveMode. - Added tp::
GraphicsPipelineSetup:: setDepthStencilAttachment, tp:: GraphicsPipelineSetup:: setColorAttachments and tp:: GraphicsPipelineSetup:: setMultiViewMask.
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.
- Added
lastJobToSubmit
parameter to tp::Device:: submitQueuedJobs to be able to specify a partial submit operation.
- Added
- 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.