78 template<
typename ItemT,
unsigned int USAGE >
112 bool empty()
const {
return d_size == 0; }
115 size_t size()
const {
return d_size; }
124 template<
typename ... ArgsT >
136 void resize (
size_t newSize,
const ItemT& value = ItemT() );
141 void setSize (
size_t newSize );
150 const ItemT&
operator[] (
size_t index )
const;
157 size_t firstItem = 0,
158 size_t nItems = std::numeric_limits< size_t >::max() );
165 size_t firstItem = 0,
166 size_t nItems = std::numeric_limits< size_t >::max() );
172 size_t firstItem = 0,
173 size_t nItems = std::numeric_limits< size_t >::max() );
179 size_t firstItem = 0,
180 size_t nItems = std::numeric_limits< size_t >::max() );
187 size_t firstItem = 0,
188 size_t nItems = std::numeric_limits< size_t >::max() );
194 size_t firstItem = 0,
195 size_t nItems = std::numeric_limits< size_t >::max() );
203 EQueueType eQueue = Q_GRAPHICS,
211 EQueueType eQueue = Q_GRAPHICS );
219 EQueueType eQueue = Q_GRAPHICS,
226 EQueueType eQueue = Q_GRAPHICS );
235 VkImageLayout targetLayout,
236 std::uint32_t mipLevel = 0,
237 std::uint32_t layer = 0,
238 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
239 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
240 VkDeviceSize bufferOffset = 0,
241 std::uint32_t bufferRowLength = 0,
242 std::uint32_t bufferImageHeight = 0 );
251 VkImageLayout targetLayout,
252 std::uint32_t mipLevel = 0,
253 std::uint32_t layer = 0,
254 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
255 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
256 VkDeviceSize bufferOffset = 0,
257 std::uint32_t bufferRowLength = 0,
258 std::uint32_t bufferImageHeight = 0 );
267 VkImageLayout targetLayout,
268 const Fence& signalFenceOnEnd = Fence(),
269 const Semaphore& waitOnBegin = Semaphore(),
270 const Semaphore& signalOnEnd = Semaphore(),
271 std::uint32_t mipLevel = 0,
272 std::uint32_t layer = 0,
273 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
274 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
275 VkDeviceSize bufferOffset = 0,
276 std::uint32_t bufferRowLength = 0,
277 std::uint32_t bufferImageHeight = 0 );
287 VkImageLayout targetLayout,
288 std::uint32_t mipLevel = 0,
289 std::uint32_t layer = 0,
290 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
291 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
292 VkDeviceSize bufferOffset = 0,
293 std::uint32_t bufferRowLength = 0,
294 std::uint32_t bufferImageHeight = 0 );
302 CommandBuffer hCmdBuffer,
304 VkImageLayout sourceImageLayout,
305 std::uint32_t mipLevel = 0,
306 std::uint32_t layer = 0,
307 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
308 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
309 VkDeviceSize bufferOffset = 0,
310 std::uint32_t bufferRowLength = 0,
311 std::uint32_t bufferImageHeight = 0 );
321 VkImageLayout sourceImageLayout,
322 std::uint32_t mipLevel = 0,
323 std::uint32_t layer = 0,
324 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
325 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
326 VkDeviceSize bufferOffset = 0,
327 std::uint32_t bufferRowLength = 0,
328 std::uint32_t bufferImageHeight = 0 );
338 VkImageLayout sourceImageLayout,
339 const Fence& signalFenceOnEnd = Fence(),
340 const Semaphore& waitOnBegin = Semaphore(),
341 const Semaphore& signalOnEnd = Semaphore(),
342 std::uint32_t mipLevel = 0,
343 std::uint32_t layer = 0,
344 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
345 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
346 VkDeviceSize bufferOffset = 0,
347 std::uint32_t bufferRowLength = 0,
348 std::uint32_t bufferImageHeight = 0 );
359 VkImageLayout sourceImageLayout,
360 std::uint32_t mipLevel = 0,
361 std::uint32_t layer = 0,
362 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
363 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
364 VkDeviceSize bufferOffset = 0,
365 std::uint32_t bufferRowLength = 0,
366 std::uint32_t bufferImageHeight = 0 );
377 public gvector< VkDrawIndirectCommand, Buf::INDIRECT >
394 public gvector< VkDrawIndexedIndirectCommand, Buf::INDIRECT >
411 public gvector< VkDispatchIndirectCommand, Buf::INDIRECT >
428 public gvector< std::uint32_t, Buf::INDEX >
451 template<
typename ItemT,
unsigned int USAGE >
463 VkImageLayout targetLayout,
464 std::uint32_t mipLevel = 0,
465 std::uint32_t layer = 0,
466 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
467 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
468 VkDeviceSize bufferOffset = 0,
469 std::uint32_t bufferRowLength = 0,
470 std::uint32_t bufferImageHeight = 0 );
476 VkImageLayout targetLayout,
477 std::uint32_t mipLevel = 0,
478 std::uint32_t layer = 0,
479 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
480 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
481 VkDeviceSize bufferOffset = 0,
482 std::uint32_t bufferRowLength = 0,
483 std::uint32_t bufferImageHeight = 0 );
489 VkImageLayout targetLayout,
493 std::uint32_t mipLevel = 0,
494 std::uint32_t layer = 0,
495 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
496 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
497 VkDeviceSize bufferOffset = 0,
498 std::uint32_t bufferRowLength = 0,
499 std::uint32_t bufferImageHeight = 0 );
507 VkImageLayout targetLayout,
508 std::uint32_t mipLevel = 0,
509 std::uint32_t layer = 0,
510 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
511 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
512 VkDeviceSize bufferOffset = 0,
513 std::uint32_t bufferRowLength = 0,
514 std::uint32_t bufferImageHeight = 0 );
520 VkImageLayout sourceImageLayout,
521 std::uint32_t mipLevel = 0,
522 std::uint32_t layer = 0,
523 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
524 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
525 VkDeviceSize bufferOffset = 0,
526 std::uint32_t bufferRowLength = 0,
527 std::uint32_t bufferImageHeight = 0 );
533 VkImageLayout sourceImageLayout,
534 std::uint32_t mipLevel = 0,
535 std::uint32_t layer = 0,
536 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
537 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
538 VkDeviceSize bufferOffset = 0,
539 std::uint32_t bufferRowLength = 0,
540 std::uint32_t bufferImageHeight = 0 );
546 VkImageLayout sourceImageLayout,
550 std::uint32_t mipLevel = 0,
551 std::uint32_t layer = 0,
552 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
553 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
554 VkDeviceSize bufferOffset = 0,
555 std::uint32_t bufferRowLength = 0,
556 std::uint32_t bufferImageHeight = 0 );
564 VkImageLayout sourceImageLayout,
565 std::uint32_t mipLevel = 0,
566 std::uint32_t layer = 0,
567 const VkOffset3D& imageOffset = VkOffset3D { 0, 0, 0 },
568 const VkExtent3D& imageExtent = VkExtent3D { 0, 0, 0 },
569 VkDeviceSize bufferOffset = 0,
570 std::uint32_t bufferRowLength = 0,
571 std::uint32_t bufferImageHeight = 0 );
void copyFromImageAndWait(EQueueType eQueue, const Img &img, VkImageLayout sourceImageLayout, std::uint32_t mipLevel=0, std::uint32_t layer=0, const VkOffset3D &imageOffset=VkOffset3D { 0, 0, 0 }, const VkExtent3D &imageExtent=VkExtent3D { 0, 0, 0 }, VkDeviceSize bufferOffset=0, std::uint32_t bufferRowLength=0, std::uint32_t bufferImageHeight=0)
Submits a command to copy the buffer contents from specified image. Waits for completion.
Represents logical rendering device.
Definition: vppDevice.hpp:49
void push_back(const ItemT &item)
Adds element to the end of the valid range.
Generic STL-style vector allocating memory on the GPU.
Definition: vppContainers.hpp:79
void copyToImageAndWait(EQueueType eQueue, const Img &img, VkImageLayout targetLayout, std::uint32_t mipLevel=0, std::uint32_t layer=0, const VkOffset3D &imageOffset=VkOffset3D { 0, 0, 0 }, const VkExtent3D &imageExtent=VkExtent3D { 0, 0, 0 }, VkDeviceSize bufferOffset=0, std::uint32_t bufferRowLength=0, std::uint32_t bufferImageHeight=0)
Submits a command to copy the buffer contents to specified image, waits for completion.
void cmdCommit(CommandBuffer cmdBuffer, size_t firstItem=0, size_t nItems=std::numeric_limits< size_t >::max())
Generates a command ensuring that valid elements have been synchronized from host to device...
Class representing generic (untyped) Vulkan image.
Definition: vppImage.hpp:54
ECharacteristic
Enumeration specifying the characteristic of requested memory.
Definition: vppDeviceMemory.hpp:45
void cmdCopyFromImage(CommandBuffer hCmdBuffer, const Img &img, VkImageLayout sourceImageLayout, std::uint32_t mipLevel=0, std::uint32_t layer=0, const VkOffset3D &imageOffset=VkOffset3D { 0, 0, 0 }, const VkExtent3D &imageExtent=VkExtent3D { 0, 0, 0 }, VkDeviceSize bufferOffset=0, std::uint32_t bufferRowLength=0, std::uint32_t bufferImageHeight=0)
Generates a command to copy the buffer contents from specified image.
The VPP namespace.
Definition: main.hpp:1
void cmdCopyToImage(CommandBuffer hCmdBuffer, const Img &img, VkImageLayout targetLayout, std::uint32_t mipLevel=0, std::uint32_t layer=0, const VkOffset3D &imageOffset=VkOffset3D { 0, 0, 0 }, const VkExtent3D &imageExtent=VkExtent3D { 0, 0, 0 }, VkDeviceSize bufferOffset=0, std::uint32_t bufferRowLength=0, std::uint32_t bufferImageHeight=0)
Generates a command to copy the buffer contents to specified image.
void resize(size_t newSize, const ItemT &value=ItemT())
Resizes the vector in proper way (constructing/destructing elements).
const_iterator cbegin() const
Const iterator to begin of the vector.
Definition: vppContainers.hpp:106
void cmdLoad(CommandBuffer cmdBuffer, size_t firstItem=0, size_t nItems=std::numeric_limits< size_t >::max())
Generates a command ensuring that valid elements have been synchronized from device to host...
void load(EQueueType eQueue=Q_GRAPHICS, const Fence &signalFenceOnEnd=Fence(), const Semaphore &waitOnBegin=Semaphore(), const Semaphore &signalOnEnd=Semaphore())
Synchronizes entire buffer from device to host.
Represents a sequence of Vulkan commands.
Definition: vppCommandBuffer.hpp:68
void copyToImage(EQueueType eQueue, const Img &img, VkImageLayout targetLayout, const Fence &signalFenceOnEnd=Fence(), const Semaphore &waitOnBegin=Semaphore(), const Semaphore &signalOnEnd=Semaphore(), std::uint32_t mipLevel=0, std::uint32_t layer=0, const VkOffset3D &imageOffset=VkOffset3D { 0, 0, 0 }, const VkExtent3D &imageExtent=VkExtent3D { 0, 0, 0 }, VkDeviceSize bufferOffset=0, std::uint32_t bufferRowLength=0, std::uint32_t bufferImageHeight=0)
Submits a command to copy the buffer contents to specified image.
void copyFromImageAndWait(EQueueType eQueue, const Img &img, VkImageLayout sourceImageLayout, std::uint32_t mipLevel=0, std::uint32_t layer=0, const VkOffset3D &imageOffset=VkOffset3D { 0, 0, 0 }, const VkExtent3D &imageExtent=VkExtent3D { 0, 0, 0 }, VkDeviceSize bufferOffset=0, std::uint32_t bufferRowLength=0, std::uint32_t bufferImageHeight=0)
Submits a command to copy the buffer contents from specified image. Waits for completion.
Allows the GPU to wait for another GPU operation to finish.
Definition: vppSynchronization.hpp:127
Allows the CPU to wait for GPU operation to finish.
Definition: vppSynchronization.hpp:41
void copyToImage(EQueueType eQueue, const Img &img, VkImageLayout targetLayout, const Fence &signalFenceOnEnd=Fence(), const Semaphore &waitOnBegin=Semaphore(), const Semaphore &signalOnEnd=Semaphore(), std::uint32_t mipLevel=0, std::uint32_t layer=0, const VkOffset3D &imageOffset=VkOffset3D { 0, 0, 0 }, const VkExtent3D &imageExtent=VkExtent3D { 0, 0, 0 }, VkDeviceSize bufferOffset=0, std::uint32_t bufferRowLength=0, std::uint32_t bufferImageHeight=0)
Submits a command to copy the buffer contents to specified image.
A compound object containing references to a buffer and memory bound to it.
Definition: vppDeviceMemory.hpp:137
void commitAndWait(EQueueType eQueue=Q_GRAPHICS)
Synchronizes entire buffer from host to device and waits for completion.
Utility subclass representing a vector of indirect dispatch ranges.
Definition: vppContainers.hpp:410
ItemT * allocate_back()
Allocates space for new item without constructing it.
const_iterator cend() const
Const iterator to the end of the valid range (but not whole area).
Definition: vppContainers.hpp:109
void commit(EQueueType eQueue=Q_GRAPHICS, const Fence &signalFenceOnEnd=Fence(), const Semaphore &waitOnBegin=Semaphore(), const Semaphore &signalOnEnd=Semaphore())
Synchronizes entire buffer from host to device.
void copyFromImage(EQueueType eQueue, const Img &img, VkImageLayout sourceImageLayout, const Fence &signalFenceOnEnd=Fence(), const Semaphore &waitOnBegin=Semaphore(), const Semaphore &signalOnEnd=Semaphore(), std::uint32_t mipLevel=0, std::uint32_t layer=0, const VkOffset3D &imageOffset=VkOffset3D { 0, 0, 0 }, const VkExtent3D &imageExtent=VkExtent3D { 0, 0, 0 }, VkDeviceSize bufferOffset=0, std::uint32_t bufferRowLength=0, std::uint32_t bufferImageHeight=0)
Submits a command to copy the buffer contents from specified image.
const ItemT * const_iterator
Random access const iterator.
Definition: vppContainers.hpp:88
void setSize(size_t newSize)
Resizes the vector in dumb way (just setting the size without initialization). Use for numeric or vec...
void cmdCopyFromImage(CommandBuffer hCmdBuffer, const Img &img, VkImageLayout sourceImageLayout, std::uint32_t mipLevel=0, std::uint32_t layer=0, const VkOffset3D &imageOffset=VkOffset3D { 0, 0, 0 }, const VkExtent3D &imageExtent=VkExtent3D { 0, 0, 0 }, VkDeviceSize bufferOffset=0, std::uint32_t bufferRowLength=0, std::uint32_t bufferImageHeight=0)
Generates a command to copy the buffer contents from specified image.
Utility subclass representing a vector of indices for indexed draws.
Definition: vppContainers.hpp:427
void copyFromImage(EQueueType eQueue, const Img &img, VkImageLayout sourceImageLayout, const Fence &signalFenceOnEnd=Fence(), const Semaphore &waitOnBegin=Semaphore(), const Semaphore &signalOnEnd=Semaphore(), std::uint32_t mipLevel=0, std::uint32_t layer=0, const VkOffset3D &imageOffset=VkOffset3D { 0, 0, 0 }, const VkExtent3D &imageExtent=VkExtent3D { 0, 0, 0 }, VkDeviceSize bufferOffset=0, std::uint32_t bufferRowLength=0, std::uint32_t bufferImageHeight=0)
Submits a command to copy the buffer contents from specified image.
Array allocated entirely on GPU side, without any mapping to the CPU side.
Definition: vppContainers.hpp:452
iterator begin()
Iterator to begin of the vector.
Definition: vppContainers.hpp:100
Utility subclass representing a vector of indexed indirect draw ranges.
Definition: vppContainers.hpp:393
size_t capacity() const
Returns the size of the whole allocated area (maximum number of elements).
Definition: vppContainers.hpp:118
bool empty() const
Checks whether the valid range is empty.
Definition: vppContainers.hpp:112
void cmdCommitAll(CommandBuffer cmdBuffer, size_t firstItem=0, size_t nItems=std::numeric_limits< size_t >::max())
Generates a command ensuring that entire memory area has been synchronized from host to device...
void copyToImageAndWait(EQueueType eQueue, const Img &img, VkImageLayout targetLayout, std::uint32_t mipLevel=0, std::uint32_t layer=0, const VkOffset3D &imageOffset=VkOffset3D { 0, 0, 0 }, const VkExtent3D &imageExtent=VkExtent3D { 0, 0, 0 }, VkDeviceSize bufferOffset=0, std::uint32_t bufferRowLength=0, std::uint32_t bufferImageHeight=0)
Submits a command to copy the buffer contents to specified image, waits for completion.
iterator end()
Iterator to the end of the valid range (but not whole area).
Definition: vppContainers.hpp:103
ItemT * iterator
Random access iterator.
Definition: vppContainers.hpp:85
void emplace_back(ArgsT... args)
Constructs element in place at the end of the valid range.
Typed Vulkan buffer of specified purpose. Most functions operating on buffers require typed buffer...
Definition: vppBuffer.hpp:186
void loadAndWait(EQueueType eQueue=Q_GRAPHICS)
Synchronizes entire buffer from device to host and waits for completion.
size_t size() const
Returns the size of the valid range.
Definition: vppContainers.hpp:115
void clear()
Empties the valid range.
ItemT & operator[](size_t index) const ItemT &operator[](size_t index) const
Access to indexed element.
Utility subclass representing a vector of indirect draw ranges.
Definition: vppContainers.hpp:376
gvector(size_t maxItemCount, MemProfile::ECharacteristic memProfile, const Device &hDevice)
Constructor.
void cmdCopyToImage(CommandBuffer hCmdBuffer, const Img &img, VkImageLayout targetLayout, std::uint32_t mipLevel=0, std::uint32_t layer=0, const VkOffset3D &imageOffset=VkOffset3D { 0, 0, 0 }, const VkExtent3D &imageExtent=VkExtent3D { 0, 0, 0 }, VkDeviceSize bufferOffset=0, std::uint32_t bufferRowLength=0, std::uint32_t bufferImageHeight=0)
Generates a command to copy the buffer contents to specified image.