Add some more profilng code

Update Ghoul repository
This commit is contained in:
Alexander Bock
2020-08-21 11:16:37 +02:00
parent 5aa2db2831
commit 83622ce339
8 changed files with 84 additions and 25 deletions
@@ -219,10 +219,8 @@ void GlobeBrowsingModule::internalInitialize(const ghoul::Dictionary& dict) {
global::callback::initializeGL.emplace_back([&]() {
ZoneScopedN("GlobeBrowsingModule")
_tileCache = std::make_unique<globebrowsing::cache::MemoryAwareTileCache>(
_tileCacheSizeMB
);
addPropertySubOwner(*_tileCache);
_tileCache = std::make_unique<cache::MemoryAwareTileCache>(_tileCacheSizeMB);
addPropertySubOwner(_tileCache.get());
tileprovider::initializeDefaultTile();
@@ -30,6 +30,7 @@
#include <ghoul/filesystem/filesystem.h>
#include <ghoul/logging/consolelog.h>
#include <ghoul/logging/logmanager.h>
#include <ghoul/misc/profiling.h>
#include <cpl_conv.h>
#include <gdal.h>
@@ -106,6 +107,8 @@ GdalWrapper::GdalWrapper(size_t maximumCacheSize, size_t maximumMaximumCacheSize
1 // Step: One MB
)
{
ZoneScoped
addProperty(_logGdalErrors);
addProperty(_gdalMaximumCacheSize);
@@ -195,10 +195,15 @@ MemoryAwareTileCache::TextureContainer::TextureContainer(TileTextureInitData ini
: _initData(std::move(initData))
, _numTextures(numTextures)
{
ZoneScoped
_textures.reserve(_numTextures);
reset();
}
void MemoryAwareTileCache::TextureContainer::reset() {
ZoneScoped
_textures.clear();
_freeTexture = 0;
for (size_t i = 0; i < _numTextures; ++i) {
@@ -222,6 +227,8 @@ void MemoryAwareTileCache::TextureContainer::reset() {
}
void MemoryAwareTileCache::TextureContainer::reset(size_t numTextures) {
ZoneScoped
_numTextures = numTextures;
reset();
}
@@ -260,6 +267,8 @@ MemoryAwareTileCache::MemoryAwareTileCache(int tileCacheSize)
, _applyTileCacheSize(ApplyTileCacheInfo)
, _clearTileCache(ClearTileCacheInfo)
{
ZoneScoped
createDefaultTextureContainers();
_clearTileCache.onChange([&]() { clear(); });
@@ -303,6 +312,8 @@ void MemoryAwareTileCache::clear() {
}
void MemoryAwareTileCache::createDefaultTextureContainers() {
ZoneScoped
for (int id = 0; id < layergroupid::NUM_LAYER_GROUPS; id++) {
TileTextureInitData initData = tileTextureInitData(
layergroupid::GroupID(id),
@@ -315,6 +326,8 @@ void MemoryAwareTileCache::createDefaultTextureContainers() {
void MemoryAwareTileCache::assureTextureContainerExists(
const TileTextureInitData& initData)
{
ZoneScoped
TileTextureInitData::HashKey initDataKey = initData.hashKey;
if (_textureContainerMap.find(initDataKey) == _textureContainerMap.end()) {
// For now create 500 textures of this type
@@ -328,9 +341,11 @@ void MemoryAwareTileCache::assureTextureContainerExists(
}
void MemoryAwareTileCache::setSizeEstimated(size_t estimatedSize) {
LDEBUG("Resetting tile cache size");
ZoneScoped
ghoul_assert(!_textureContainerMap.empty(), "Texture containers must exist.");
LDEBUG("Resetting tile cache size");
const size_t sumTextureTypeSize = std::accumulate(
_textureContainerMap.cbegin(),
_textureContainerMap.cend(),
@@ -353,6 +368,8 @@ void MemoryAwareTileCache::setSizeEstimated(size_t estimatedSize) {
}
void MemoryAwareTileCache::resetTextureContainerSize(size_t numTexturesPerTextureType) {
ZoneScoped
_numTextureBytesAllocatedOnCPU = 0;
for (std::pair<const TileTextureInitData::HashKey,
TextureContainerTileCache>& p : _textureContainerMap)
@@ -84,7 +84,7 @@ struct ProviderTileHasher {
class MemoryAwareTileCache : public properties::PropertyOwner {
public:
MemoryAwareTileCache(int tileCacheSize = 1024);
explicit MemoryAwareTileCache(int tileCacheSize = 1024);
void clear();
void setSizeEstimated(size_t estimatedSize);