Commit Graph

17 Commits

Author SHA1 Message Date
8858c89f30 Created a buffer object. Use the new pipeline bind_vertex to use for verticies 2025-07-10 21:56:39 +10:00
4ad064578d Renamed argument when providing array of vertex binding attributes to reflect that they are, in fact attributes and not the binding description
Extended pipeline to support adding vertex bindings
Vertex bindings can now be added via a template function that assumes that the type implements the following;
 - A function matching the signature of PFN_GetVertexInputBindingDescription and with the name get_binding_description
 - A function matching the signature of PFN_GetVertexAttributeDescriptions and with the name get_attribute_descriptions
GetVertexAttributeDescriptions should set the num_attachments to the number of attachments if and only if the attachment output pointer is nullptr. If the output pointer is not nullptr, num_attachments should be treated as a size. Return VK_SUCCESS on success, or a different value otherwise.
2025-07-10 21:56:14 +10:00
aa752bc208 Extended SwapchainSupportDetails API to force it to requery values, use darray's rather than initializer lists and extended the get_framebuffer_extent function to allow disabling the final clamping step at the end of the function. This is used by the swapchain to avoid repeatedly requerying when minimised. 2025-07-10 21:50:26 +10:00
8ccafddb64 Updated swapchain to recreate swapchain with the proper extent required and re-poll the window features on resize.
Swapchain will no longer trigger a resize (internally) if the previous (non-zero) size is equal to the current size
2025-07-10 21:48:12 +10:00
d550307011 Updated PipelineBuilder to now allow adding vertex bindings 2025-07-10 00:46:33 +10:00
e4258318ee Disabled framebuffer caching by physical device
Swapchain is now capable of being recreated in a partially automatic manner (some effort is still required on the developer's side still)
Windows are now allowed to be resizeable
Updated main program to support resizable windows
2025-07-08 23:35:27 +10:00
c65d7fd4e3 Created a command buffer and command pool object for managing and tracking as well as wrapping vulkan functions to reduce boilerplate 2025-07-07 22:56:53 +10:00
b687d74e32 Created pipeline builder and wrapper
basalt::Pipeline is mainly just a wrapper around VkPipeline however there is no cast operator provided (yet)
2025-07-07 22:56:00 +10:00
4d797e1170 Created render_pass object
Some TODO's to handle regarding exposing access to vulkan functionallity
2025-07-07 22:54:59 +10:00
0598a89d0c Created swapchain object.
Manages most of the present-related stuff.
Still need to move some queue submits inside of it though
2025-07-07 22:54:19 +10:00
425c226793 Contains convenient function to design a device based on the requirements for the physical device it is based around
NOTE: To get the appropriate index into the basalt::Device queue list, track the order of request_queue(s) calls in the designer
2025-07-07 22:52:25 +10:00
a0ef896d1e Created a paper-thin wrapper around a VkQueue mainly so it manages its own lifecycle so long as its associated device is alive 2025-07-07 22:50:12 +10:00
42c45bbeb2 Updated the window to hold the vulkan context and a vulkan surface as well as providing a cast operator for the surface 2025-07-07 22:48:59 +10:00
78a5421021 Created physical device object
Contains helper functions for picking the most suitable device in a rust/java factory-like way
Has cast operator for underlying vulkan object
2025-07-07 22:48:07 +10:00
175897e7d9 Added cast operator for VkInstance
Now maintains a list of enabled extensions
2025-07-07 22:46:37 +10:00
2cd9844d07 Created basalt::context class and its implementation. Creates an underlying VkInstance, and if debug layers are present, creates a VkDebugUtilsMessengerEXT. There are two flags, should_free that controls whether the destructor will do anything, and using_validation_layers that states whether validation layers and debug utils have been setup. This is primarilly done to free them later and signify a runtime debug configuration. 2025-06-24 15:59:40 +10:00
b5ef8e4ab5 Library:
Added a very basic window object that essentially just wraps an GLFW window object.
TODO: Set the window userdata pointer to point to its wrapping object
2025-06-22 03:04:28 +10:00