Initialize a buffer for use with the graphics backend.
259{
260 if (!buffer) {
262 "Attempted to initialize null VKBuffer");
263 return;
264 }
265 if (buffer->is_initialized()) {
267 "VKBuffer already initialized, skipping");
268 return;
269 }
270
271 vk::Buffer vk_buffer;
272 vk::DeviceMemory memory;
273 void* mapped_ptr = nullptr;
274
276 buffer->get_size_bytes(),
277 buffer->get_usage_flags(),
278 vk::MemoryPropertyFlags(buffer->get_memory_properties()),
279 buffer->is_host_visible(),
280 vk_buffer, memory, mapped_ptr);
281
282 auto& resources = buffer->get_buffer_resources();
283 resources.buffer = vk_buffer;
284 resources.memory = memory;
285 resources.mapped_ptr = mapped_ptr;
286
288
290 "VKBuffer initialized: {} bytes, modality: {}, VkBuffer: {:p}",
291 buffer->get_size_bytes(),
293 (void*)buffer->get_buffer());
294}
#define MF_INFO(comp, ctx,...)
#define MF_ERROR(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
void allocate_raw_buffer(size_t size_bytes, vk::BufferUsageFlags usage, vk::MemoryPropertyFlags memory_properties, bool host_visible, vk::Buffer &out_buffer, vk::DeviceMemory &out_memory, void *&out_mapped_ptr)
Allocate a raw VkBuffer/VkDeviceMemory pair without an owning VKBuffer object.
std::vector< std::shared_ptr< Buffers::VKBuffer > > m_managed_buffers
@ GraphicsBackend
Graphics/visual rendering backend (Vulkan, OpenGL)
@ Core
Core engine, backend, subsystems.
std::string_view modality_to_string(DataModality modality)
Convert DataModality enum to string representation.