From f8f89e6fd1fbf7735c0de00e9c98c23d1c73182d Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Mon, 6 Jun 2016 02:12:46 +0200 Subject: [PATCH] Moving more code into performance files --- include/openspace/rendering/renderengine.h | 3 +++ .../openspace/util/performancemeasurement.h | 19 +++++++++++++++---- src/rendering/renderengine.cpp | 11 +++-------- src/util/performancemeasurement.cpp | 12 ++++++++++++ 4 files changed, 33 insertions(+), 12 deletions(-) diff --git a/include/openspace/rendering/renderengine.h b/include/openspace/rendering/renderengine.h index 913ccd9c82..d56e5c09a1 100644 --- a/include/openspace/rendering/renderengine.h +++ b/include/openspace/rendering/renderengine.h @@ -97,9 +97,12 @@ public: void takeScreenshot(); void toggleInfoText(bool b); + // Performance measurements void setPerformanceMeasurements(bool performanceMeasurements); bool doesPerformanceMeasurements() const; + + void serialize(SyncBuffer* syncBuffer); void deserialize(SyncBuffer* syncBuffer); diff --git a/include/openspace/util/performancemeasurement.h b/include/openspace/util/performancemeasurement.h index 6682e71a4a..83cc649a72 100644 --- a/include/openspace/util/performancemeasurement.h +++ b/include/openspace/util/performancemeasurement.h @@ -30,8 +30,6 @@ namespace openspace { namespace performance { - - struct PerformanceLayout { static const int8_t Version = 0; static const int LengthName = 256; @@ -42,7 +40,7 @@ struct PerformanceLayout { int32_t nEntries; - struct PerformanceLayoutEntry { + struct SceneGraphPerformanceLayout { char name[LengthName]; float renderTime[NumberValues]; float updateRenderable[NumberValues]; @@ -52,8 +50,21 @@ struct PerformanceLayout { int32_t currentUpdateRenderable; int32_t currentUpdateEphemeris; }; + SceneGraphPerformanceLayout sceneGraphEntries[MaxValues]; + + struct FunctionPerformanceLayout { + char name[LengthName]; + float time[NumberValues]; + int32_t currentTime; + }; + FunctionPerformanceLayout functionEntries[MaxValues]; +}; + +struct FunctionPerformanceHelper { + FunctionPerformanceHelper(); + ~FunctionPerformanceHelper(); + - PerformanceLayoutEntry entries[MaxValues]; }; } // namespace performance diff --git a/src/rendering/renderengine.cpp b/src/rendering/renderengine.cpp index 70788f9787..11e914f142 100644 --- a/src/rendering/renderengine.cpp +++ b/src/rendering/renderengine.cpp @@ -726,13 +726,10 @@ bool RenderEngine::doesPerformanceMeasurements() const { void RenderEngine::storePerformanceMeasurements() { using namespace performance; - - const int nNodes = static_cast(scene()->allSceneGraphNodes().size()); + int nNodes = static_cast(scene()->allSceneGraphNodes().size()); if (!_performanceMemory) { - // Compute the total size - const int totalSize = sizeof(int8_t) + 4 * sizeof(int32_t) + - PerformanceLayout::MaxValues * sizeof(PerformanceLayout::PerformanceLayoutEntry); + const int totalSize = sizeof(PerformanceLayout); LINFO("Create shared memory of " << totalSize << " bytes"); try { @@ -746,11 +743,9 @@ void RenderEngine::storePerformanceMeasurements() { _performanceMemory = new ghoul::SharedMemory(PerformanceMeasurementSharedData); void* ptr = _performanceMemory->memory(); + // Using the placement-new to create a PerformanceLayout in the shared memory PerformanceLayout* layout = new (ptr) PerformanceLayout(nNodes); - - memset(layout->entries, 0, PerformanceLayout::MaxValues * sizeof(PerformanceLayout::PerformanceLayoutEntry)); - for (int i = 0; i < nNodes; ++i) { SceneGraphNode* node = scene()->allSceneGraphNodes()[i]; diff --git a/src/util/performancemeasurement.cpp b/src/util/performancemeasurement.cpp index 5210126428..6239714b42 100644 --- a/src/util/performancemeasurement.cpp +++ b/src/util/performancemeasurement.cpp @@ -24,13 +24,25 @@ #include +#include + namespace openspace { namespace performance { PerformanceLayout::PerformanceLayout(int32_t nEntries) : nEntries(nEntries) { + std::memset( + sceneGraphEntries, + 0, + MaxValues * sizeof(SceneGraphPerformanceLayout) + ); + std::memset( + functionEntries, + 0, + MaxValues * sizeof(FunctionPerformanceLayout) + ); } } // namespace performance