Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QSSGBufferManager Class Reference

#include <qssgrenderbuffermanager_p.h>

+ Collaboration diagram for QSSGBufferManager:

Classes

struct  CustomImageCacheKey
 
struct  ImageCacheKey
 
struct  ImageData
 
struct  MemoryStats
 
struct  MeshData
 

Public Types

enum  MipMode { MipModeFollowRenderImage , MipModeEnable , MipModeDisable , MipModeBsdf }
 
enum  LoadRenderImageFlag { LoadWithFlippedY = 0x01 }
 

Public Member Functions

 QSSGBufferManager ()
 
 ~QSSGBufferManager ()
 
void setRenderContextInterface (QSSGRenderContextInterface *ctx)
 
void releaseCachedResources ()
 
void releaseResourcesForLayer (QSSGRenderLayer *layer)
 
QSSGRenderImageTexture loadRenderImage (const QSSGRenderImage *image, MipMode inMipMode=MipModeFollowRenderImage, LoadRenderImageFlags flags=LoadWithFlippedY)
 
QSSGRenderImageTexture loadLightmap (const QSSGRenderModel &model)
 
QSSGRenderImageTexture loadSkinmap (QSSGRenderTextureData *skin)
 
QSSGRenderMeshgetMeshForPicking (const QSSGRenderModel &model) const
 
QSSGBounds3 getModelBounds (const QSSGRenderModel *model) const
 
QSSGRenderMeshloadMesh (const QSSGRenderModel *model)
 
void cleanupUnreferencedBuffers (quint32 frameId, QSSGRenderLayer *layer)
 
void resetUsageCounters (quint32 frameId, QSSGRenderLayer *layer)
 
void releaseGeometry (QSSGRenderGeometry *geometry)
 
void releaseTextureData (const QSSGRenderTextureData *data)
 
void releaseTextureData (const CustomImageCacheKey &key)
 
void releaseExtensionResult (const QSSGRenderExtension &rext)
 
void commitBufferResourceUpdates ()
 
void processResourceLoader (const QSSGRenderResourceLoader *loader)
 
QSSGMesh::Mesh loadMeshData (const QSSGRenderGeometry *geometry)
 
void registerExtensionResult (const QSSGRenderExtension &extensions, QRhiTexture *texture)
 
QMutexmeshUpdateMutex ()
 
void increaseMemoryStat (QRhiTexture *texture)
 
void decreaseMemoryStat (QRhiTexture *texture)
 
void increaseMemoryStat (QSSGRenderMesh *mesh)
 
void decreaseMemoryStat (QSSGRenderMesh *mesh)
 
const QHash< ImageCacheKey, ImageData > & getImageMap () const
 
const QHash< CustomImageCacheKey, ImageData > & getCustomTextureMap () const
 
const QHash< QSGTexture *, ImageData > & getSGImageMap () const
 
const QHash< QSSGRenderPath, MeshData > & getMeshMap () const
 
const QHash< QSSGRenderGeometry *, MeshData > & getCustomMeshMap () const
 

Static Public Member Functions

static std::unique_ptr< QSSGMeshBVHloadMeshBVH (const QSSGRenderPath &inSourcePath)
 
static std::unique_ptr< QSSGMeshBVHloadMeshBVH (QSSGRenderGeometry *geometry)
 
static QSSGMesh::Mesh loadMeshData (const QSSGRenderPath &inSourcePath)
 
static QRhiTexture::Format toRhiFormat (const QSSGRenderTextureFormat format)
 
static void registerMeshData (const QString &assetId, const QVector< QSSGMesh::Mesh > &meshData)
 
static void unregisterMeshData (const QString &assetId)
 
static QString runtimeMeshSourceName (const QString &assetId, qsizetype meshId)
 
static QString primitivePath (const QString &primitive)
 

Detailed Description

Definition at line 77 of file qssgrenderbuffermanager_p.h.

Member Enumeration Documentation

◆ LoadRenderImageFlag

Enumerator
LoadWithFlippedY 

Definition at line 117 of file qssgrenderbuffermanager_p.h.

◆ MipMode

Enumerator
MipModeFollowRenderImage 
MipModeEnable 
MipModeDisable 
MipModeBsdf 

Definition at line 110 of file qssgrenderbuffermanager_p.h.

Constructor & Destructor Documentation

◆ QSSGBufferManager()

QSSGBufferManager::QSSGBufferManager ( )

Definition at line 129 of file qssgrenderbuffermanager.cpp.

◆ ~QSSGBufferManager()

QSSGBufferManager::~QSSGBufferManager ( )

Definition at line 133 of file qssgrenderbuffermanager.cpp.

Member Function Documentation

◆ cleanupUnreferencedBuffers()

void QSSGBufferManager::cleanupUnreferencedBuffers ( quint32 frameId,
QSSGRenderLayer * layer )

Definition at line 1465 of file qssgrenderbuffermanager.cpp.

References QSSGBufferManagerStat::Debug, decreaseMemoryStat(), QSSGBufferManagerStat::enabled(), QSSGRhiContextPrivate::get(), Q_UNUSED, qDebug, QSSGRenderContextInterface::rhiContext(), and QSSGBufferManagerStat::Usage.

Referenced by releaseResourcesForLayer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ commitBufferResourceUpdates()

void QSSGBufferManager::commitBufferResourceUpdates ( )

Definition at line 1953 of file qssgrenderbuffermanager.cpp.

References QSSGRenderContextInterface::rhiContext().

Referenced by processResourceLoader().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ decreaseMemoryStat() [1/2]

void QSSGBufferManager::decreaseMemoryStat ( QRhiTexture * texture)

Definition at line 2051 of file qssgrenderbuffermanager.cpp.

References QSSGRhiContextStats::get(), QSSGBufferManager::MemoryStats::imageDataSize, qMax(), QSSGRenderContextInterface::rhiContext(), and textureMemorySize().

Referenced by cleanupUnreferencedBuffers(), releaseGeometry(), and releaseTextureData().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ decreaseMemoryStat() [2/2]

void QSSGBufferManager::decreaseMemoryStat ( QSSGRenderMesh * mesh)

Definition at line 2064 of file qssgrenderbuffermanager.cpp.

References bufferMemorySize(), QSSGRhiContextStats::get(), QSSGBufferManager::MemoryStats::meshDataSize, qMax(), QSSGRenderContextInterface::rhiContext(), and QSSGRenderMesh::subsets.

+ Here is the call graph for this function:

◆ getCustomMeshMap()

const QHash< QSSGRenderGeometry *, MeshData > & QSSGBufferManager::getCustomMeshMap ( ) const
inline

Definition at line 182 of file qssgrenderbuffermanager_p.h.

◆ getCustomTextureMap()

const QHash< CustomImageCacheKey, ImageData > & QSSGBufferManager::getCustomTextureMap ( ) const
inline

Definition at line 179 of file qssgrenderbuffermanager_p.h.

◆ getImageMap()

const QHash< ImageCacheKey, ImageData > & QSSGBufferManager::getImageMap ( ) const
inline

Definition at line 178 of file qssgrenderbuffermanager_p.h.

◆ getMeshForPicking()

QSSGRenderMesh * QSSGBufferManager::getMeshForPicking ( const QSSGRenderModel & model) const

Definition at line 332 of file qssgrenderbuffermanager.cpp.

References model.

Referenced by QSSGRendererPrivate::intersectRayWithSubsetRenderable().

+ Here is the caller graph for this function:

◆ getMeshMap()

const QHash< QSSGRenderPath, MeshData > & QSSGBufferManager::getMeshMap ( ) const
inline

Definition at line 181 of file qssgrenderbuffermanager_p.h.

◆ getModelBounds()

QSSGBounds3 QSSGBufferManager::getModelBounds ( const QSSGRenderModel * model) const

Definition at line 1156 of file qssgrenderbuffermanager.cpp.

References QSSGMesh::Mesh::isValid(), loadMeshData(), model, and QSSGMesh::Mesh::subsets().

+ Here is the call graph for this function:

◆ getSGImageMap()

const QHash< QSGTexture *, ImageData > & QSSGBufferManager::getSGImageMap ( ) const
inline

Definition at line 180 of file qssgrenderbuffermanager_p.h.

◆ increaseMemoryStat() [1/2]

void QSSGBufferManager::increaseMemoryStat ( QRhiTexture * texture)

Definition at line 2045 of file qssgrenderbuffermanager.cpp.

References QSSGRhiContextStats::get(), QSSGBufferManager::MemoryStats::imageDataSize, QSSGRenderContextInterface::rhiContext(), and textureMemorySize().

Referenced by loadLightmap(), and loadRenderImage().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ increaseMemoryStat() [2/2]

void QSSGBufferManager::increaseMemoryStat ( QSSGRenderMesh * mesh)

Definition at line 2057 of file qssgrenderbuffermanager.cpp.

References bufferMemorySize(), QSSGRhiContextStats::get(), QSSGBufferManager::MemoryStats::meshDataSize, QSSGRenderContextInterface::rhiContext(), and QSSGRenderMesh::subsets.

+ Here is the call graph for this function:

◆ loadLightmap()

QSSGRenderImageTexture QSSGBufferManager::loadLightmap ( const QSSGRenderModel & model)

◆ loadMesh()

QSSGRenderMesh * QSSGBufferManager::loadMesh ( const QSSGRenderModel * model)

Definition at line 1134 of file qssgrenderbuffermanager.cpp.

References QSSGLightmapper::lightmapAssetPathForLoad(), QSSGMeshProcessingOptions::lightmapBaseResolution, QSSGMeshProcessingOptions::meshFileOverride, QSSGLightmapper::MeshWithLightmapUV, model, and QSSGMeshProcessingOptions::wantsLightmapUVs.

+ Here is the call graph for this function:

◆ loadMeshBVH() [1/2]

std::unique_ptr< QSSGMeshBVH > QSSGBufferManager::loadMeshBVH ( const QSSGRenderPath & inSourcePath)
static

Definition at line 1759 of file qssgrenderbuffermanager.cpp.

References QSSGMesh::Mesh::isValid(), loadMeshData(), qCWarning, and qPrintable.

+ Here is the call graph for this function:

◆ loadMeshBVH() [2/2]

◆ loadMeshData() [1/2]

QSSGMesh::Mesh QSSGBufferManager::loadMeshData ( const QSSGRenderGeometry * geometry)

Definition at line 1861 of file qssgrenderbuffermanager.cpp.

References error, QSSGMesh::Mesh::fromRuntimeData(), QSSGMesh::Mesh::isValid(), QSSGRenderGeometry::meshData(), qPrintable, and qWarning.

+ Here is the call graph for this function:

◆ loadMeshData() [2/2]

QSSGMesh::Mesh QSSGBufferManager::loadMeshData ( const QSSGRenderPath & inSourcePath)
static

Definition at line 1816 of file qssgrenderbuffermanager.cpp.

References device, QSSGInputUtil::getStreamForFile(), QSSGMesh::Mesh::isValid(), QString::lastIndexOf(), QSSGMesh::Mesh::loadMesh(), QStringView::mid(), qWarning, and splitRuntimeMeshPath().

Referenced by getModelBounds(), and loadMeshBVH().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ loadRenderImage()

QSSGRenderImageTexture QSSGBufferManager::loadRenderImage ( const QSSGRenderImage * image,
MipMode inMipMode = MipModeFollowRenderImage,
LoadRenderImageFlags flags = LoadWithFlippedY )

Definition at line 158 of file qssgrenderbuffermanager.cpp.

References context, QSSGBufferManagerStat::Debug, QSSGBufferManagerStat::enabled(), fileName, QSSGBufferManager::MemoryStats::imageDataSize, increaseMemoryStat(), it, QSSGLoadedTexture::load(), LoadWithFlippedY, MipModeBsdf, MipModeDisable, MipModeEnable, MipModeFollowRenderImage, QRhi::nextResourceUpdateBatch(), Q_QUICK3D_PROFILE_END_WITH_ID, Q_QUICK3D_PROFILE_END_WITH_STRING, Q_QUICK3D_PROFILE_START, Q_TRACE_SCOPE, qCWarning, qDebug, qPrintable, qWarning, and QSSGRenderContextInterface::rhiContext().

Referenced by processResourceLoader().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ loadSkinmap()

QSSGRenderImageTexture QSSGBufferManager::loadSkinmap ( QSSGRenderTextureData * skin)

Definition at line 327 of file qssgrenderbuffermanager.cpp.

References MipModeDisable.

◆ meshUpdateMutex()

QMutex * QSSGBufferManager::meshUpdateMutex ( )

Definition at line 1114 of file qssgrenderbuffermanager.cpp.

Referenced by QSSGRendererPrivate::intersectRayWithSubsetRenderable().

+ Here is the caller graph for this function:

◆ primitivePath()

QString QSSGBufferManager::primitivePath ( const QString & primitive)
static

Definition at line 1101 of file qssgrenderbuffermanager.cpp.

References file, QString::fromLatin1(), nPrimitives, primitives, primitivesDirectory, and QString::toUtf8().

Referenced by loadModelBlendParticleMesh(), and loadModelShapeMesh().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ processResourceLoader()

void QSSGBufferManager::processResourceLoader ( const QSSGRenderResourceLoader * loader)

Definition at line 1961 of file qssgrenderbuffermanager.cpp.

References commitBufferResourceUpdates(), QSSGRenderResourceLoader::geometries, loadRenderImage(), QSSGRenderResourceLoader::meshes, and QSSGRenderResourceLoader::textures.

+ Here is the call graph for this function:

◆ registerExtensionResult()

void QSSGBufferManager::registerExtensionResult ( const QSSGRenderExtension & extensions,
QRhiTexture * texture )

Definition at line 1871 of file qssgrenderbuffermanager.cpp.

References QRhi::mipLevelsForSize(), QRhiTexture::MipMapped, QRhiTexture::RGBA8, QRhiTexture::sRGB, and QFlags< Enum >::testFlag().

+ Here is the call graph for this function:

◆ registerMeshData()

void QSSGBufferManager::registerMeshData ( const QString & assetId,
const QVector< QSSGMesh::Mesh > & meshData )
static

Definition at line 1626 of file qssgrenderbuffermanager.cpp.

References QSet< T >::end(), QSet< T >::find(), QSet< T >::insert(), and it.

Referenced by QSSGRuntimeUtils::createScene().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ releaseCachedResources()

void QSSGBufferManager::releaseCachedResources ( )

Definition at line 144 of file qssgrenderbuffermanager.cpp.

◆ releaseExtensionResult()

void QSSGBufferManager::releaseExtensionResult ( const QSSGRenderExtension & rext)

Definition at line 1422 of file qssgrenderbuffermanager.cpp.

◆ releaseGeometry()

void QSSGBufferManager::releaseGeometry ( QSSGRenderGeometry * geometry)

Definition at line 1372 of file qssgrenderbuffermanager.cpp.

References QSSGBufferManagerStat::Debug, decreaseMemoryStat(), QSSGBufferManagerStat::enabled(), QSSGRhiContextPrivate::get(), QSSGBufferManager::MemoryStats::meshDataSize, Q_QUICK3D_PROFILE_END_WITH_ID, Q_QUICK3D_PROFILE_START, Q_TRACE_SCOPE, qDebug, and QSSGRenderContextInterface::rhiContext().

+ Here is the call graph for this function:

◆ releaseResourcesForLayer()

void QSSGBufferManager::releaseResourcesForLayer ( QSSGRenderLayer * layer)

Definition at line 149 of file qssgrenderbuffermanager.cpp.

References cleanupUnreferencedBuffers(), and resetUsageCounters().

+ Here is the call graph for this function:

◆ releaseTextureData() [1/2]

void QSSGBufferManager::releaseTextureData ( const CustomImageCacheKey & key)

Definition at line 1401 of file qssgrenderbuffermanager.cpp.

References QSSGBufferManagerStat::Debug, decreaseMemoryStat(), QSSGBufferManagerStat::enabled(), QSSGRhiContextPrivate::get(), QSSGBufferManager::MemoryStats::imageDataSize, Q_QUICK3D_PROFILE_END_WITH_ID, Q_QUICK3D_PROFILE_START, Q_TRACE_SCOPE, qDebug, and QSSGRenderContextInterface::rhiContext().

+ Here is the call graph for this function:

◆ releaseTextureData() [2/2]

void QSSGBufferManager::releaseTextureData ( const QSSGRenderTextureData * data)

Definition at line 1390 of file qssgrenderbuffermanager.cpp.

References it, keys, and releaseTextureData().

Referenced by releaseTextureData().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ resetUsageCounters()

void QSSGBufferManager::resetUsageCounters ( quint32 frameId,
QSSGRenderLayer * layer )

Definition at line 1590 of file qssgrenderbuffermanager.cpp.

References imageData.

Referenced by releaseResourcesForLayer().

+ Here is the caller graph for this function:

◆ runtimeMeshSourceName()

QString QSSGBufferManager::runtimeMeshSourceName ( const QString & assetId,
qsizetype meshId )
static

Definition at line 83 of file qssgrenderbuffermanager.cpp.

References QString::fromUtf16(), and QString::number().

Referenced by QSSGRuntimeUtils::applyPropertyValue().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setRenderContextInterface()

void QSSGBufferManager::setRenderContextInterface ( QSSGRenderContextInterface * ctx)

Definition at line 139 of file qssgrenderbuffermanager.cpp.

◆ toRhiFormat()

QRhiTexture::Format QSSGBufferManager::toRhiFormat ( const QSSGRenderTextureFormat format)
static

Definition at line 349 of file qssgrenderbuffermanager.cpp.

References QSSGRenderTextureFormat::Alpha8, QRhiTexture::ASTC_10x10, QRhiTexture::ASTC_10x5, QRhiTexture::ASTC_10x6, QRhiTexture::ASTC_10x8, QRhiTexture::ASTC_12x10, QRhiTexture::ASTC_12x12, QRhiTexture::ASTC_4x4, QRhiTexture::ASTC_5x4, QRhiTexture::ASTC_5x5, QRhiTexture::ASTC_6x5, QRhiTexture::ASTC_6x6, QRhiTexture::ASTC_8x5, QRhiTexture::ASTC_8x6, QRhiTexture::ASTC_8x8, QRhiTexture::BC1, QRhiTexture::BC2, QRhiTexture::BC3, QRhiTexture::ETC2_RGBA8, QSSGRenderTextureFormat::Luminance16, QSSGRenderTextureFormat::Luminance8, QSSGRenderTextureFormat::LuminanceAlpha8, qWarning, QRhiTexture::R16, QSSGRenderTextureFormat::R16, QRhiTexture::R16F, QSSGRenderTextureFormat::R16F, QRhiTexture::R32F, QSSGRenderTextureFormat::R32F, QRhiTexture::R8, QSSGRenderTextureFormat::R8, QRhiTexture::RED_OR_ALPHA8, QSSGRenderTextureFormat::RGB_DXT1, QRhiTexture::RGBA16F, QSSGRenderTextureFormat::RGBA16F, QRhiTexture::RGBA32F, QSSGRenderTextureFormat::RGBA32F, QRhiTexture::RGBA8, QSSGRenderTextureFormat::RGBA8, QSSGRenderTextureFormat::RGBA8_ETC2_EAC, QSSGRenderTextureFormat::RGBA_ASTC_10x10, QSSGRenderTextureFormat::RGBA_ASTC_10x5, QSSGRenderTextureFormat::RGBA_ASTC_10x6, QSSGRenderTextureFormat::RGBA_ASTC_10x8, QSSGRenderTextureFormat::RGBA_ASTC_12x10, QSSGRenderTextureFormat::RGBA_ASTC_12x12, QSSGRenderTextureFormat::RGBA_ASTC_4x4, QSSGRenderTextureFormat::RGBA_ASTC_5x4, QSSGRenderTextureFormat::RGBA_ASTC_5x5, QSSGRenderTextureFormat::RGBA_ASTC_6x5, QSSGRenderTextureFormat::RGBA_ASTC_6x6, QSSGRenderTextureFormat::RGBA_ASTC_8x5, QSSGRenderTextureFormat::RGBA_ASTC_8x6, QSSGRenderTextureFormat::RGBA_ASTC_8x8, QSSGRenderTextureFormat::RGBA_DXT3, QSSGRenderTextureFormat::RGBA_DXT5, QSSGRenderTextureFormat::RGBE8, QSSGRenderTextureFormat::SRGB8A8, and QRhiTexture::UnknownFormat.

Referenced by QQuick3DSceneRenderer::synchronize().

+ Here is the caller graph for this function:

◆ unregisterMeshData()

void QSSGBufferManager::unregisterMeshData ( const QString & assetId)
static

Definition at line 1635 of file qssgrenderbuffermanager.cpp.

References QSet< T >::end(), QSet< T >::find(), and it.

+ Here is the call graph for this function:

The documentation for this class was generated from the following files: