mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-24 21:19:46 -06:00
* master: (44 commits) Remove style guide errors Add missing newline errors Update the Sun glare reference Update OpenSpace version Minor spelling, grammar, & comment cleanup Cleanup of gitignore file Started work on fixing Rosetta Jenkins compile fix Touch module capitalization compile fix Fix capitalization of includes More shader cleanup Remove dedicated logs folder Change openspaceengine to create logs folder automatically Renaming touch include files Jenkins compile fix Cleanup of shader code Jenkins compile fix Jenkins compile error Jenkins compile fix Remove fresh recompile Update Jenkinsfile to clean workspace Cleanup copyright information in shaders Second part of turning touch classes to lower case First step of turning touch classes into lower case Replacing void Renderable::render(const RenderData&) with Renderable::render(const RenderData&, RendererTasks&) ... # Conflicts: # modules/multiresvolume/rendering/localtfbrickselector.cpp # modules/multiresvolume/rendering/localtfbrickselector.h # modules/multiresvolume/rendering/renderablemultiresvolume.cpp # modules/multiresvolume/rendering/renderablemultiresvolume.h # modules/multiresvolume/rendering/shenbrickselector.h # modules/multiresvolume/rendering/simpletfbrickselector.cpp # modules/multiresvolume/rendering/simpletfbrickselector.h # modules/multiresvolume/rendering/tfbrickselector.cpp # modules/multiresvolume/rendering/tfbrickselector.h # modules/multiresvolume/rendering/tsp.cpp # src/performance/performancemanager.cpp
101 lines
3.9 KiB
C++
101 lines
3.9 KiB
C++
/*****************************************************************************************
|
|
* *
|
|
* OpenSpace *
|
|
* *
|
|
* Copyright (c) 2014-2017 *
|
|
* *
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
|
* software and associated documentation files (the "Software"), to deal in the Software *
|
|
* without restriction, including without limitation the rights to use, copy, modify, *
|
|
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
|
* permit persons to whom the Software is furnished to do so, subject to the following *
|
|
* conditions: *
|
|
* *
|
|
* The above copyright notice and this permission notice shall be included in all copies *
|
|
* or substantial portions of the Software. *
|
|
* *
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
|
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
|
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
|
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
|
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
|
****************************************************************************************/
|
|
|
|
#ifndef __OPENSPACE_CORE___PERFORMANCEMANAGER___H__
|
|
#define __OPENSPACE_CORE___PERFORMANCEMANAGER___H__
|
|
|
|
#include <openspace/performance/performancelayout.h>
|
|
|
|
#include <ghoul/misc/sharedmemory.h>
|
|
|
|
#include <map>
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
namespace ghoul { class SharedMemory; }
|
|
|
|
namespace openspace { class SceneGraphNode; }
|
|
|
|
namespace openspace::performance {
|
|
|
|
class PerformanceManager {
|
|
public:
|
|
static void createGlobalSharedMemory();
|
|
static void destroyGlobalSharedMemory();
|
|
|
|
PerformanceManager();
|
|
~PerformanceManager();
|
|
|
|
void resetPerformanceMeasurements();
|
|
|
|
bool isMeasuringPerformance() const;
|
|
|
|
void storeIndividualPerformanceMeasurement(std::string identifier, long long nanoseconds);
|
|
void storeScenePerformanceMeasurements(const std::vector<SceneGraphNode*>& sceneNodes);
|
|
|
|
void outputLogs();
|
|
|
|
void writeData(std::ofstream& out, const std::vector<float>& data);
|
|
|
|
std::string formatLogName(std::string nodeName);
|
|
|
|
void logDir(std::string dir);
|
|
std::string logDir() const;
|
|
void prefix(std::string prefix);
|
|
std::string prefix() const;
|
|
|
|
void enableLogging();
|
|
void disableLogging();
|
|
void toggleLogging();
|
|
void setLogging(bool enabled);
|
|
bool loggingEnabled() const;
|
|
|
|
PerformanceLayout* performanceData();
|
|
void clearLogs();
|
|
void initLogs();
|
|
|
|
private:
|
|
bool _doPerformanceMeasurements;
|
|
bool _loggingEnabled;
|
|
bool _clearLogs;
|
|
|
|
std::string _logDir;
|
|
std::string _prefix;
|
|
std::string _suffix;
|
|
std::string _ext;
|
|
|
|
std::map<std::string, size_t> individualPerformanceLocations;
|
|
|
|
std::unique_ptr<ghoul::SharedMemory> _performanceMemory;
|
|
|
|
size_t _tick;
|
|
|
|
void tick();
|
|
bool createLogDir();
|
|
};
|
|
|
|
} // namespace openspace::performance
|
|
|
|
#endif // __OPENSPACE_CORE___PERFORMANCEMANAGER___H__
|