Magnum::Vk::BufferMemoryBarrier class new in Git master

Memory barrier affecting a single buffer.

Wraps a VkBufferMemoryBarrier. Compared to MemoryBarrier only affects a single buffer. This class is subsequently used in CommandBuffer::pipelineBarrier(), see Copying buffer data for usage examples.

Constructors, destructors, conversion operators

BufferMemoryBarrier(Accesses sourceAccesses, Accesses destinationAccesses, VkBuffer buffer, UnsignedLong offset = 0, UnsignedLong size = VK_WHOLE_SIZE)
Constructor.
BufferMemoryBarrier(NoInitT) explicit noexcept
Construct without initializing the contents.
BufferMemoryBarrier(const VkBufferMemoryBarrier& barrier) explicit
Construct from existing data.
operator const VkBufferMemoryBarrier*() const

Public functions

auto operator*() -> VkBufferMemoryBarrier&
Underlying VkBufferMemoryBarrier structure.
auto operator*() const -> const VkBufferMemoryBarrier&
auto operator->() -> VkBufferMemoryBarrier*
auto operator->() const -> const VkBufferMemoryBarrier*

Function documentation

Magnum::Vk::BufferMemoryBarrier::BufferMemoryBarrier(Accesses sourceAccesses, Accesses destinationAccesses, VkBuffer buffer, UnsignedLong offset = 0, UnsignedLong size = VK_WHOLE_SIZE)

Constructor.

Parameters
sourceAccesses Source memory access types participating in a dependency. While allowed, passing Read accesses here is redundant — that's already taken care of by the stage execution dependency in CommandBuffer::pipelineBarrier().
destinationAccesses Destination memory access types participating in a dependency
buffer A Buffer or a raw Vulkan buffer handle affected by the barrier
offset Buffer memory offset affected by the barrier, in bytes
size Buffer memory size affected by the barrier, in bytes

The following VkBufferMemoryBarrier fields are pre-filled in addition to sType, everything else is zero-filled:

  • srcAccessMask to sourceAccesses
  • dstAccessMask to destinationAccesses
  • buffer
  • offset
  • size

Magnum::Vk::BufferMemoryBarrier::BufferMemoryBarrier(NoInitT) explicit noexcept

Construct without initializing the contents.

Note that not even the sType field is set — the structure has to be fully initialized afterwards in order to be usable.

Magnum::Vk::BufferMemoryBarrier::BufferMemoryBarrier(const VkBufferMemoryBarrier& barrier) explicit

Construct from existing data.

Copies the existing values verbatim, pointers are kept unchanged without taking over the ownership. Modifying the newly created instance will not modify the original data nor the pointed-to data.

Magnum::Vk::BufferMemoryBarrier::operator const VkBufferMemoryBarrier*() const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

const VkBufferMemoryBarrier& Magnum::Vk::BufferMemoryBarrier::operator*() const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

VkBufferMemoryBarrier* Magnum::Vk::BufferMemoryBarrier::operator->()

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

const VkBufferMemoryBarrier* Magnum::Vk::BufferMemoryBarrier::operator->() const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.