Skip to content
Snippets Groups Projects
Verified Commit 4dd24090 authored by Tobias Frisch's avatar Tobias Frisch
Browse files

Adjusted doxygen comments of buffer and buffer manager

parent fe3c7d13
No related branches found
No related tags found
1 merge request!97Resolve "Dokumentation vervollständigen"
......@@ -20,6 +20,8 @@ namespace vkcv {
Buffer() = delete;
/**
* @brief Returns the buffers handle.
*
* @return The #BufferHandle to be used with the #Core
*/
[[nodiscard]]
......@@ -28,6 +30,8 @@ namespace vkcv {
}
/**
* @brief Returns the type of the buffer.
*
* @return The #BufferType of the #Buffer
*/
[[nodiscard]]
......@@ -36,6 +40,8 @@ namespace vkcv {
};
/**
* @brief Returns the count of elements in the buffer.
*
* @return The number of objects of type T the #Buffer holds
*/
[[nodiscard]]
......@@ -44,6 +50,8 @@ namespace vkcv {
}
/**
* @brief Returns the size of the buffer in bytes.
*
* @return The size of the #Buffer in bytes
*/
[[nodiscard]]
......@@ -52,6 +60,8 @@ namespace vkcv {
}
/**
* @brief Returns the vulkan buffer handle of the buffer.
*
* @return The vulkan handle of the #Buffer to be used for manual vulkan commands
*/
[[nodiscard]]
......@@ -60,40 +70,44 @@ namespace vkcv {
}
/**
* Fill the #Buffer with data of type T
* @brief Fills the #Buffer with data of type T.
*
* @param data Pointer to the array of object type T
* @param count The number of objects to copy from the data array
* @param offset The offset into the #Buffer where the data is copied into
* @param[in] data Pointer to the array of object type T
* @param[in] count The number of objects to copy from the data array
* @param[in] offset The offset into the #Buffer where the data is copied into
*/
void fill(const T* data, size_t count = 0, size_t offset = 0) {
void fill(const T* data,
size_t count = 0,
size_t offset = 0) {
m_manager->fillBuffer(m_handle, data, count * sizeof(T), offset * sizeof(T));
}
/**
* Fill the #Buffer with data from a vector of type T
* @brief Fills the #Buffer with data from a vector of type T.
*
* @param vector Vector of type T to be copied into the #Buffer
* @param offset The offset into the #Buffer where the data is copied into
*/
void fill(const std::vector<T>& vector, size_t offset = 0) {
void fill(const std::vector<T>& vector,
size_t offset = 0) {
fill( static_cast<const T*>(vector.data()), static_cast<size_t>(vector.size()), offset);
}
/**
* Maps memory to the #Buffer and returns it
* @brief Maps memory to the #Buffer and returns it.
*
* @param offset Offset of mapping in objects of type T
* @param count Count of objects of type T that are mapped
* @param[in] offset Offset of mapping in objects of type T
* @param[in] count Count of objects of type T that are mapped
* @return Pointer to mapped memory as type T
*/
[[nodiscard]]
T* map(size_t offset = 0, size_t count = 0) {
T* map(size_t offset = 0,
size_t count = 0) {
return reinterpret_cast<T*>(m_manager->mapBuffer(m_handle, offset * sizeof(T), count * sizeof(T)));
}
/**
* Unmap the #Buffer, invalidates the pointer obtained by map()
* @brief Unmaps the #Buffer, invalidates the pointer obtained by map().
*/
void unmap() {
m_manager->unmapBuffer(m_handle);
......@@ -106,7 +120,20 @@ namespace vkcv {
const size_t m_count;
const BufferMemoryType m_memoryType;
Buffer(BufferManager* manager, BufferHandle handle, BufferType type, size_t count, BufferMemoryType memoryType) :
/**
* @brief Constructor of the buffer object.
*
* @param[in,out] manager Buffer manager
* @param[in] handle Buffer handle
* @param[in] type Type of buffer
* @param[in] count Count of elements
* @param[in] memoryType Type of memory
*/
Buffer(BufferManager* manager,
BufferHandle handle,
BufferType type,
size_t count,
BufferMemoryType memoryType) :
m_manager(manager),
m_handle(handle),
m_type(type),
......@@ -114,9 +141,36 @@ namespace vkcv {
m_memoryType(memoryType)
{}
/**
* @brief Creates a buffer object of type T with
* a selected type, count of elements, memory type
* and support of indirect usage.
*
* @param[in,out] manager Buffer manager
* @param[in] type Buffer type
* @param[in] count Count of elements
* @param[in] memoryType Type of memory
* @param[in] supportIndirect Support indirect usage
* @return New buffer object
*/
[[nodiscard]]
static Buffer<T> create(BufferManager* manager, BufferType type, size_t count, BufferMemoryType memoryType, bool supportIndirect) {
return Buffer<T>(manager, manager->createBuffer(type, count * sizeof(T), memoryType, supportIndirect), type, count, memoryType);
static Buffer<T> create(BufferManager* manager,
BufferType type,
size_t count,
BufferMemoryType memoryType,
bool supportIndirect) {
return Buffer<T>(
manager,
manager->createBuffer(
type,
count * sizeof(T),
memoryType,
supportIndirect
),
type,
count,
memoryType
);
}
};
......
......@@ -68,85 +68,94 @@ namespace vkcv
BufferManager& operator=(const BufferManager& other) = delete;
/**
* Creates and allocates a new buffer and returns its
* @brief Creates and allocates a new buffer and returns its
* unique buffer handle.
*
* @param type Type of buffer
* @param size Size of buffer in bytes
* @param memoryType Type of buffers memory
* @param[in] type Type of buffer
* @param[in] size Size of buffer in bytes
* @param[in] memoryType Type of buffers memory
* @param[in] supportIndirect Support of indirect usage
* @return New buffer handle
*/
BufferHandle createBuffer(BufferType type, size_t size, BufferMemoryType memoryType, bool supportIndirect);
BufferHandle createBuffer(BufferType type,
size_t size,
BufferMemoryType memoryType,
bool supportIndirect);
/**
* Returns the Vulkan buffer handle of a buffer
* @brief Returns the Vulkan buffer handle of a buffer
* represented by a given buffer handle.
*
* @param handle Buffer handle
* @param[in] handle Buffer handle
* @return Vulkan buffer handle
*/
[[nodiscard]]
vk::Buffer getBuffer(const BufferHandle& handle) const;
/**
* Returns the size of a buffer represented
* @brief Returns the size of a buffer represented
* by a given buffer handle.
*
* @param handle Buffer handle
* @param[in] handle Buffer handle
* @return Size of the buffer
*/
[[nodiscard]]
size_t getBufferSize(const BufferHandle& handle) const;
/**
* Returns the Vulkan device memory handle of a buffer
* @brief Returns the Vulkan device memory handle of a buffer
* represented by a given buffer handle id.
*
* @param handle Buffer handle
* @param[in] handle Buffer handle
* @return Vulkan device memory handle
*/
[[nodiscard]]
vk::DeviceMemory getDeviceMemory(const BufferHandle& handle) const;
/**
* Fills a buffer represented by a given buffer
* @brief Fills a buffer represented by a given buffer
* handle with custom data.
*
* @param handle Buffer handle
* @param data Pointer to data
* @param size Size of data in bytes
* @param offset Offset to fill in data in bytes
* @param[in] handle Buffer handle
* @param[in] data Pointer to data
* @param[in] size Size of data in bytes
* @param[in] offset Offset to fill in data in bytes
*/
void fillBuffer(const BufferHandle& handle, const void* data, size_t size, size_t offset);
void fillBuffer(const BufferHandle& handle,
const void* data,
size_t size,
size_t offset);
/**
* Maps memory to a buffer represented by a given
* @brief Maps memory to a buffer represented by a given
* buffer handle and returns it.
*
* @param handle Buffer handle
* @param offset Offset of mapping in bytes
* @param size Size of mapping in bytes
* @param[in] handle Buffer handle
* @param[in] offset Offset of mapping in bytes
* @param[in] size Size of mapping in bytes
* @return Pointer to mapped memory
*/
void* mapBuffer(const BufferHandle& handle, size_t offset, size_t size);
void* mapBuffer(const BufferHandle& handle,
size_t offset,
size_t size);
/**
* Unmaps memory from a buffer represented by a given
* @brief Unmaps memory from a buffer represented by a given
* buffer handle.
*
* @param handle Buffer handle
* @param[in] handle Buffer handle
*/
void unmapBuffer(const BufferHandle& handle);
/**
* Record a memory barrier for a buffer, synchronizing subsequent accesses to buffer data
* @brief Records a memory barrier for a buffer,
* synchronizing subsequent accesses to buffer data
*
* @param handle BufferHandle of the buffer
* @param cmdBuffer Vulkan command buffer to record the barrier into
* @param[in] handle BufferHandle of the buffer
* @param[in] cmdBuffer Vulkan command buffer to record the barrier into
*/
void recordBufferMemoryBarrier(
const BufferHandle& handle,
vk::CommandBuffer cmdBuffer);
void recordBufferMemoryBarrier(const BufferHandle& handle,
vk::CommandBuffer cmdBuffer);
};
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment