Castor3D  0.11.0
Multiplatform 3D engine
Fonctions membres publiques | Amis | Liste de tous les membres
Référence de la classe castor3d::GpuBuffer

Fonctions membres publiques

C3D_API GpuBuffer (RenderSystem const &renderSystem, VkBufferUsageFlags usage, VkMemoryPropertyFlags memoryFlags, castor::String debugName, ashes::QueueShare sharingMode, uint32_t numLevels, uint32_t minBlockSize)
 Constructeur. Plus de détails...
 
C3D_API uint32_t initialise (RenderDevice const &device)
 Initialise le stockage GPU du tampon. Plus de détails...
 
C3D_API void cleanup (RenderDevice const &device)
 Nettoie le tampon GPU. Plus de détails...
 
C3D_API bool hasAvailable (VkDeviceSize size) const
 
C3D_API MemChunk allocate (VkDeviceSize size)
 Alloue une zone mémoire pour un CPU buffer. Plus de détails...
 
C3D_API void deallocate (MemChunk const &mem)
 Désalloue de la mémoire. Plus de détails...
 
C3D_API uint8_t * lock (MemChunk const &chunk) const
 Locke le tampon, càd le mappe en mémoire ram afin d'y autoriser des modifications. Plus de détails...
 
C3D_API void flush (MemChunk const &chunk) const
 Locke le tampon, càd le mappe en mémoire ram afin d'y autoriser des modifications. Plus de détails...
 
C3D_API void invalidate (MemChunk const &chunk) const
 Marque la zone mémoire donnée comme "sale". Plus de détails...
 
C3D_API void unlock () const
 Un locke le tampon, càd l'unmappe de la mémoire ram afin de ne plus autoriser de modifications dessus. Plus de détails...
 
C3D_API void copy (ashes::CommandBuffer const &commandBuffer, GpuBuffer const &src, MemChunk const &srcChunk, VkDeviceSize dstOffset) const
 Copie les données du tampon donné dans celui-ci. Plus de détails...
 
C3D_API void upload (ashes::StagingBuffer &stagingBuffer, ashes::Queue const &queue, ashes::CommandPool const &commandPool, MemChunk const &chunk, uint8_t const *buffer) const
 Transfère des données au tampon GPU à partir de la RAM. Plus de détails...
 
C3D_API void upload (ashes::StagingBuffer &stagingBuffer, ashes::CommandBuffer const &commandBuffer, MemChunk const &chunk, uint8_t const *buffer) const
 Transfère des données au tampon GPU à partir de la RAM. Plus de détails...
 
C3D_API void download (ashes::StagingBuffer &stagingBuffer, ashes::Queue const &queue, ashes::CommandPool const &commandPool, MemChunk const &chunk, uint8_t *buffer) const
 Transfère des données du tampon GPU vers la RAM. Plus de détails...
 
bool hasBuffer () const
 
ashes::Buffer< uint8_t > const & getBuffer () const
 
 operator ashes::Buffer< uint8_t > const & () const
 
ashes::Buffer< uint8_t > & getBuffer ()
 
 operator ashes::Buffer< uint8_t > & ()
 

Amis

class GpuBufferPool
 

Documentation des constructeurs et destructeur

◆ GpuBuffer()

C3D_API castor3d::GpuBuffer::GpuBuffer ( RenderSystem const &  renderSystem,
VkBufferUsageFlags  usage,
VkMemoryPropertyFlags  memoryFlags,
castor::String  debugName,
ashes::QueueShare  sharingMode,
uint32_t  numLevels,
uint32_t  minBlockSize 
)

Constructeur.

Paramètres
[in]renderSystemLe device sur lequel le stockage est alloué.
[in]usageLes cibles du tampon.
[in]memoryFlagsLes propriétés mémoire du tampon.
[in]debugNameLe nom debug.
[in]sharingModeLe mode de partage.
[in]numLevelsLa taille maximale de l'arbre de l'allocateur.
[in]minBlockSizeLa taille minimale d'un bloc.

Documentation des fonctions membres

◆ allocate()

C3D_API MemChunk castor3d::GpuBuffer::allocate ( VkDeviceSize  size)

Alloue une zone mémoire pour un CPU buffer.

Paramètres
[in]sizeLa taille requise pour la mémoire.
Renvoie
L'offset de la zone mémoire.

◆ cleanup()

C3D_API void castor3d::GpuBuffer::cleanup ( RenderDevice const &  device)

Nettoie le tampon GPU.

Paramètres
[in]deviceLe device GPU.

◆ copy()

C3D_API void castor3d::GpuBuffer::copy ( ashes::CommandBuffer const &  commandBuffer,
GpuBuffer const &  src,
MemChunk const &  srcChunk,
VkDeviceSize  dstOffset 
) const

Copie les données du tampon donné dans celui-ci.

Remarques
Le command buffer doit être en état d'enregistrement.
Paramètres
[in]commandBufferLe command buffer sur lequel les commandes de copie sont enregistrées.
[in]srcLe tampon source.
[in]srcChunkLa zone mémoire.
[in]dstOffsetL'offset de départ dans ce tampon.

◆ deallocate()

C3D_API void castor3d::GpuBuffer::deallocate ( MemChunk const &  mem)

Désalloue de la mémoire.

Paramètres
[in]memLa zone mémoire.

◆ download()

C3D_API void castor3d::GpuBuffer::download ( ashes::StagingBuffer &  stagingBuffer,
ashes::Queue const &  queue,
ashes::CommandPool const &  commandPool,
MemChunk const &  chunk,
uint8_t *  buffer 
) const

Transfère des données du tampon GPU vers la RAM.

Remarques
Transfère les données de tampon[offset*sizeof( T )] à tampon[(offset+count-1) * sizeof( T )].
Paramètres
[in]stagingBufferLe staging buffer utilisé pour effectuer le transfer.
[in]queueLa file sur laquelle le transfert sera effectué.
[in]commandPoolLe command pool depuis lequel le command buffer sera créé.
[in]chunkLa zone mémoire.
[out]bufferLes données.

◆ flush()

C3D_API void castor3d::GpuBuffer::flush ( MemChunk const &  chunk) const

Locke le tampon, càd le mappe en mémoire ram afin d'y autoriser des modifications.

Paramètres
[in]chunkLa zone mémoire.
Renvoie
L'adresse du tampon mappé.

◆ getBuffer() [1/2]

ashes::Buffer< uint8_t > const& castor3d::GpuBuffer::getBuffer ( ) const
inline
Renvoie
Le tampon interne.

◆ getBuffer() [2/2]

ashes::Buffer< uint8_t >& castor3d::GpuBuffer::getBuffer ( )
inline
Renvoie
Le tampon interne.

◆ hasAvailable()

C3D_API bool castor3d::GpuBuffer::hasAvailable ( VkDeviceSize  size) const
Paramètres
[in]sizeLa taille requise pour la mémoire.
Renvoie
true s'il y a assez de mémoire restante pour la taille donnée.

◆ hasBuffer()

bool castor3d::GpuBuffer::hasBuffer ( ) const
inline
Renvoie
Le tampon interne.

Référencé par castor3d::GpuBufferOffsetT< DataT >::operator bool().

Voici le graphe des appelants de cette fonction :

◆ initialise()

C3D_API uint32_t castor3d::GpuBuffer::initialise ( RenderDevice const &  device)

Initialise le stockage GPU du tampon.

Paramètres
[in]deviceLe device GPU.

◆ invalidate()

C3D_API void castor3d::GpuBuffer::invalidate ( MemChunk const &  chunk) const

Marque la zone mémoire donnée comme "sale".

Paramètres
[in]chunkLa zone mémoire.

◆ lock()

C3D_API uint8_t* castor3d::GpuBuffer::lock ( MemChunk const &  chunk) const

Locke le tampon, càd le mappe en mémoire ram afin d'y autoriser des modifications.

Remarques
Mappe de m_buffer[offset] à m_buffer[offset + count - 1].
Paramètres
[in]chunkL'intervalle de mémoire à mapper.
Renvoie
L'adresse du tampon mappé.

◆ operator ashes::Buffer< uint8_t > &()

castor3d::GpuBuffer::operator ashes::Buffer< uint8_t > & ( )
inline

◆ operator ashes::Buffer< uint8_t > const &()

castor3d::GpuBuffer::operator ashes::Buffer< uint8_t > const & ( ) const
inline

◆ unlock()

C3D_API void castor3d::GpuBuffer::unlock ( ) const

Un locke le tampon, càd l'unmappe de la mémoire ram afin de ne plus autoriser de modifications dessus.

Remarques
Toutes les modifications qui avaient été effectuées sur le tampon mappé sont rapatriées dans la mémoire GPU.

◆ upload() [1/2]

C3D_API void castor3d::GpuBuffer::upload ( ashes::StagingBuffer &  stagingBuffer,
ashes::Queue const &  queue,
ashes::CommandPool const &  commandPool,
MemChunk const &  chunk,
uint8_t const *  buffer 
) const

Transfère des données au tampon GPU à partir de la RAM.

Remarques
Transfère les données de tampon[offset*sizeof( T )] à tampon[(offset+count-1) * sizeof( T )].
Paramètres
[in]stagingBufferLe staging buffer utilisé pour effectuer le transfer.
[in]queueLa file sur laquelle le transfert sera effectué.
[in]commandPoolLe command pool depuis lequel le command buffer sera créé.
[in]chunkLa zone mémoire.
[in]bufferLes données.

◆ upload() [2/2]

C3D_API void castor3d::GpuBuffer::upload ( ashes::StagingBuffer &  stagingBuffer,
ashes::CommandBuffer const &  commandBuffer,
MemChunk const &  chunk,
uint8_t const *  buffer 
) const

Transfère des données au tampon GPU à partir de la RAM.

Remarques
Transfère les données de tampon[offset*sizeof( T )] à tampon[(offset+count-1) * sizeof( T )].
Paramètres
[in]stagingBufferLe staging buffer utilisé pour effectuer le transfer.
[in]commandBufferLe command buffer sur lequel les commandes de transfert sont enregistrées.
[in]chunkLa zone mémoire.
[in]bufferLes données.

Documentation des fonctions amies et associées

◆ GpuBufferPool

friend class GpuBufferPool
friend

La documentation de cette classe a été générée à partir du fichier suivant :