Nebula
Loading...
Searching...
No Matches
vkbuffer.cc File Reference
#include "vkgraphicsdevice.h"
#include "vkcommandbuffer.h"
#include "vkbuffer.h"
#include "util/bit.h"

Namespaces

namespace  Vulkan
 Vulkan implementation of GPU acceleration structure.
namespace  CoreGraphics
 Acceleration structures are used to enable ray tracing on the GPU by dividing the scene into a BVH.

Functions

VkBuffer Vulkan::BufferGetVk (const CoreGraphics::BufferId id)
 get buffer object
VkDeviceMemory Vulkan::BufferGetVkMemory (const CoreGraphics::BufferId id)
 get buffer memory
VkDevice Vulkan::BufferGetVkDevice (const CoreGraphics::BufferId id)
 get buffer device
 CoreGraphics::_IMPL_ACQUIRE_RELEASE (BufferId, bufferAllocator)
const BufferId CoreGraphics::CreateBuffer (const BufferCreateInfo &info)
 create buffer
void CoreGraphics::DestroyBuffer (const BufferId id)
 destroy buffer
const BufferUsage CoreGraphics::BufferGetType (const BufferId id)
 get type of buffer
const uint64_t CoreGraphics::BufferGetSize (const BufferId id)
 get buffer size, which is the number of elements
const uint64_t CoreGraphics::BufferGetElementSize (const BufferId id)
 get buffer element size, this is the size of a single element, like a vertex or index, and is multiplied with the size
const uint64_t CoreGraphics::BufferGetByteSize (const BufferId id)
 get buffer total byte size
const uint64_t CoreGraphics::BufferGetUploadMaxSize ()
 get maximum size of upload for BufferUpload
void * CoreGraphics::BufferMap (const BufferId id)
 map memory
void CoreGraphics::BufferUnmap (const BufferId id)
 unmap memory
void CoreGraphics::BufferUpdate (const BufferId id, const void *data, const size_t size, const size_t offset=0)
 update buffer data
void CoreGraphics::BufferUpload (const CoreGraphics::CmdBufferId cmdBuf, const BufferId id, const void *data, const size_t size, const size_t offset)
 update buffer directly on command buffer during frame update, asserts if size is too big
void CoreGraphics::BufferFill (const CoreGraphics::CmdBufferId cmdBuf, const BufferId id, char pattern)
 fill buffer with data much like memset
void CoreGraphics::BufferFlush (const BufferId id, uint64_t offset=0ull, uint64_t size=NEBULA_WHOLE_BUFFER_SIZE)
 flush any changes done to the buffer on the CPU side so they are visible on the GPU
void CoreGraphics::BufferInvalidate (const BufferId id, uint64_t offset=0ull, uint64_t size=NEBULA_WHOLE_BUFFER_SIZE)
 invalidate buffer CPU side, such that any GPU changes will be made visible
void CoreGraphics::BufferSparseEvict (const BufferId id, IndexT pageIndex)
 Evict a page.
void CoreGraphics::BufferSparseMakeResident (const BufferId id, IndexT pageIndex)
 Make a page resident.
IndexT CoreGraphics::BufferSparseGetPageIndex (const BufferId id, SizeT offset)
 Get the page index given an offset.
SizeT CoreGraphics::BufferSparseGetPageSize (const BufferId id)
 Get the buffer page size.
void CoreGraphics::BufferSparseCommitChanges (const BufferId id)
 Commit sparse bindings.
CoreGraphics::DeviceAddress CoreGraphics::BufferGetDeviceAddress (const BufferId id)
 Get buffer device address.
void CoreGraphics::BufferCopyWithStaging (const CoreGraphics::BufferId dest, const size_t offset, const void *data, const size_t size)
 Shortcut for creating a staging buffer and copy.

Variables

VkBufferAllocator Vulkan::bufferAllocator
VkBufferSparseExtensionAllocator Vulkan::bufferSparseExtensionAllocator