From faef8a9930e3a537ec6ae3dd396529ba93ef1104 Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 30 Aug 2016 12:22:21 -0700 Subject: [PATCH 1/4] Adding the timing for GPU support with a simpelr JobConfig --- .../gpu-gl/src/gpu/gl/GLBackendQuery.cpp | 7 ++- libraries/gpu-gl/src/gpu/gl/GLQuery.h | 1 + libraries/gpu/src/gpu/Query.cpp | 20 ++++--- libraries/gpu/src/gpu/Query.h | 15 ++++-- .../src/AmbientOcclusionEffect.cpp | 3 +- .../render-utils/src/AmbientOcclusionEffect.h | 8 ++- .../src/DeferredLightingEffect.cpp | 2 +- .../render-utils/src/DeferredLightingEffect.h | 16 +----- .../render-utils/src/RenderDeferredTask.cpp | 2 +- .../render-utils/src/RenderDeferredTask.h | 27 ++-------- .../render-utils/src/SurfaceGeometryPass.cpp | 4 +- .../render-utils/src/SurfaceGeometryPass.h | 24 +++------ libraries/render/src/render/Task.h | 52 ++++++++++++++++--- .../utilities/render/ambientOcclusionPass.qml | 2 +- scripts/developer/utilities/render/stats.qml | 2 +- .../developer/utilities/render/statsGPU.qml | 50 ++++++++++++++++-- 16 files changed, 146 insertions(+), 89 deletions(-) diff --git a/libraries/gpu-gl/src/gpu/gl/GLBackendQuery.cpp b/libraries/gpu-gl/src/gpu/gl/GLBackendQuery.cpp index 60b204ba60..19d008da2c 100644 --- a/libraries/gpu-gl/src/gpu/gl/GLBackendQuery.cpp +++ b/libraries/gpu-gl/src/gpu/gl/GLBackendQuery.cpp @@ -25,6 +25,7 @@ void GLBackend::do_beginQuery(const Batch& batch, size_t paramOffset) { auto query = batch._queries.get(batch._params[paramOffset]._uint); GLQuery* glquery = syncGPUObject(*query); if (glquery) { + glGetInteger64v(GL_TIMESTAMP, (GLint64*)&glquery->_batchElapsedTime); if (timeElapsed) { glBeginQuery(GL_TIME_ELAPSED, glquery->_endqo); } else { @@ -43,6 +44,10 @@ void GLBackend::do_endQuery(const Batch& batch, size_t paramOffset) { } else { glQueryCounter(glquery->_endqo, GL_TIMESTAMP); } + GLint64 now; + glGetInteger64v(GL_TIMESTAMP, &now); + glquery->_batchElapsedTime = now - glquery->_batchElapsedTime; + (void)CHECK_GL_ERROR(); } } @@ -61,7 +66,7 @@ void GLBackend::do_getQuery(const Batch& batch, size_t paramOffset) { glGetQueryObjectui64v(glquery->_endqo, GL_QUERY_RESULT, &end); glquery->_result = end - start; } - query->triggerReturnHandler(glquery->_result); + query->triggerReturnHandler(glquery->_result, glquery->_batchElapsedTime); } (void)CHECK_GL_ERROR(); } diff --git a/libraries/gpu-gl/src/gpu/gl/GLQuery.h b/libraries/gpu-gl/src/gpu/gl/GLQuery.h index 4bed659ba3..bf10d002e6 100644 --- a/libraries/gpu-gl/src/gpu/gl/GLQuery.h +++ b/libraries/gpu-gl/src/gpu/gl/GLQuery.h @@ -48,6 +48,7 @@ public: const GLuint& _endqo = { _id }; const GLuint _beginqo = { 0 }; GLuint64 _result { (GLuint64)-1 }; + GLuint64 _batchElapsedTime { (GLuint64) 0 }; protected: GLQuery(const std::weak_ptr& backend, const Query& query, GLuint endId, GLuint beginId) : Parent(backend, query, endId), _beginqo(beginId) {} diff --git a/libraries/gpu/src/gpu/Query.cpp b/libraries/gpu/src/gpu/Query.cpp index 76c239b1e0..51be04d682 100644 --- a/libraries/gpu/src/gpu/Query.cpp +++ b/libraries/gpu/src/gpu/Query.cpp @@ -24,12 +24,16 @@ Query::~Query() { } -double Query::getElapsedTime() const { +double Query::getGPUElapsedTime() const { return ((double)_queryResult) / 1000000.0; } +double Query::getBatchElapsedTime() const { + return ((double)_usecBatchElapsedTime) / 1000000.0; +} -void Query::triggerReturnHandler(uint64_t queryResult) { +void Query::triggerReturnHandler(uint64_t queryResult, uint64_t batchElapsedTime) { _queryResult = queryResult; + _usecBatchElapsedTime = batchElapsedTime; if (_returnHandler) { _returnHandler(*this); } @@ -40,8 +44,8 @@ RangeTimer::RangeTimer() { for (int i = 0; i < QUERY_QUEUE_SIZE; i++) { _timerQueries.push_back(std::make_shared([&, i] (const Query& query) { _tailIndex ++; - auto elapsedTime = query.getElapsedTime(); - _movingAverage.addSample(elapsedTime); + _movingAverageGPU.addSample(query.getGPUElapsedTime()); + _movingAverageBatch.addSample(query.getBatchElapsedTime()); })); } } @@ -66,6 +70,10 @@ void RangeTimer::end(gpu::Batch& batch) { } } -double RangeTimer::getAverage() const { - return _movingAverage.average; +double RangeTimer::getGPUAverage() const { + return _movingAverageGPU.average; +} + +double RangeTimer::getBatchAverage() const { + return _movingAverageBatch.average; } \ No newline at end of file diff --git a/libraries/gpu/src/gpu/Query.h b/libraries/gpu/src/gpu/Query.h index 48b9d0a0d5..ab259541b5 100644 --- a/libraries/gpu/src/gpu/Query.h +++ b/libraries/gpu/src/gpu/Query.h @@ -30,14 +30,17 @@ namespace gpu { Query(const Handler& returnHandler); ~Query(); - double getElapsedTime() const; + double getGPUElapsedTime() const; + double getBatchElapsedTime() const; + // Only for gpu::Context const GPUObjectPointer gpuObject {}; - void triggerReturnHandler(uint64_t queryResult); + void triggerReturnHandler(uint64_t queryResult, uint64_t batchElapsedTime); protected: Handler _returnHandler; - uint64_t _queryResult = 0; + uint64_t _queryResult { 0 }; + uint64_t _usecBatchElapsedTime { 0 }; }; typedef std::shared_ptr QueryPointer; @@ -53,7 +56,8 @@ namespace gpu { void begin(gpu::Batch& batch); void end(gpu::Batch& batch); - double getAverage() const; + double getGPUAverage() const; + double getBatchAverage() const; protected: @@ -62,7 +66,8 @@ namespace gpu { gpu::Queries _timerQueries; int _headIndex = -1; int _tailIndex = -1; - MovingAverage _movingAverage; + MovingAverage _movingAverageGPU; + MovingAverage _movingAverageBatch; int rangeIndex(int index) const { return (index % QUERY_QUEUE_SIZE); } }; diff --git a/libraries/render-utils/src/AmbientOcclusionEffect.cpp b/libraries/render-utils/src/AmbientOcclusionEffect.cpp index 86223e9877..3bf887e1b6 100644 --- a/libraries/render-utils/src/AmbientOcclusionEffect.cpp +++ b/libraries/render-utils/src/AmbientOcclusionEffect.cpp @@ -432,7 +432,8 @@ void AmbientOcclusionEffect::run(const render::SceneContextPointer& sceneContext }); // Update the timer - std::static_pointer_cast(renderContext->jobConfig)->gpuTime = _gpuTimer.getAverage(); + auto config = std::static_pointer_cast(renderContext->jobConfig); + config->setGPUBatchRunTime(_gpuTimer.getGPUAverage(), _gpuTimer.getBatchAverage()); } diff --git a/libraries/render-utils/src/AmbientOcclusionEffect.h b/libraries/render-utils/src/AmbientOcclusionEffect.h index 8bb4600d3c..1a828cb2c0 100644 --- a/libraries/render-utils/src/AmbientOcclusionEffect.h +++ b/libraries/render-utils/src/AmbientOcclusionEffect.h @@ -53,7 +53,7 @@ protected: using AmbientOcclusionFramebufferPointer = std::shared_ptr; -class AmbientOcclusionEffectConfig : public render::Job::Config::Persistent { +class AmbientOcclusionEffectConfig : public render::GPUJobConfig::Persistent { Q_OBJECT Q_PROPERTY(bool enabled MEMBER enabled NOTIFY dirty) Q_PROPERTY(bool ditheringEnabled MEMBER ditheringEnabled NOTIFY dirty) @@ -68,9 +68,9 @@ class AmbientOcclusionEffectConfig : public render::Job::Config::Persistent { Q_PROPERTY(int numSamples MEMBER numSamples WRITE setNumSamples) Q_PROPERTY(int resolutionLevel MEMBER resolutionLevel WRITE setResolutionLevel) Q_PROPERTY(int blurRadius MEMBER blurRadius WRITE setBlurRadius) - Q_PROPERTY(double gpuTime READ getGpuTime) + public: - AmbientOcclusionEffectConfig() : render::Job::Config::Persistent("Ambient Occlusion", false) {} + AmbientOcclusionEffectConfig() : render::GPUJobConfig::Persistent("Ambient Occlusion", false) {} const int MAX_RESOLUTION_LEVEL = 4; const int MAX_BLUR_RADIUS = 6; @@ -84,7 +84,6 @@ public: void setNumSamples(int samples) { numSamples = std::max(1.0f, (float)samples); emit dirty(); } void setResolutionLevel(int level) { resolutionLevel = std::max(0, std::min(level, MAX_RESOLUTION_LEVEL)); emit dirty(); } void setBlurRadius(int radius) { blurRadius = std::max(0, std::min(MAX_BLUR_RADIUS, radius)); emit dirty(); } - double getGpuTime() { return gpuTime; } float radius{ 0.5f }; float perspectiveScale{ 1.0f }; @@ -99,7 +98,6 @@ public: bool ditheringEnabled{ true }; // randomize the distribution of taps per pixel, should always be true bool borderingEnabled{ true }; // avoid evaluating information from non existing pixels out of the frame, should always be true bool fetchMipsEnabled{ true }; // fetch taps in sub mips to otpimize cache, should always be true - double gpuTime{ 0.0 }; signals: void dirty(); diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 5dd4c0a232..8e83f737ea 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -714,5 +714,5 @@ void RenderDeferred::run(const SceneContextPointer& sceneContext, const RenderCo }); auto config = std::static_pointer_cast(renderContext->jobConfig); - config->gpuTime = _gpuTimer.getAverage(); + config->setGPUBatchRunTime(_gpuTimer.getGPUAverage(), _gpuTimer.getBatchAverage()); } diff --git a/libraries/render-utils/src/DeferredLightingEffect.h b/libraries/render-utils/src/DeferredLightingEffect.h index 466c58c36e..61bac2f063 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.h +++ b/libraries/render-utils/src/DeferredLightingEffect.h @@ -161,21 +161,7 @@ public: void run(const render::SceneContextPointer& sceneContext, const render::RenderContextPointer& renderContext); }; - -class RenderDeferredConfig : public render::Job::Config { - Q_OBJECT - Q_PROPERTY(double gpuTime READ getGpuTime) -public: - RenderDeferredConfig() : render::Job::Config(true) {} - - double getGpuTime() { return gpuTime; } - - double gpuTime{ 0.0 }; - -signals: - void dirty(); -}; - +using RenderDeferredConfig = render::GPUJobConfig; class RenderDeferred { public: diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index cedc2ef45e..1e63cba8da 100755 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -245,7 +245,7 @@ void EndGPURangeTimer::run(const render::SceneContextPointer& sceneContext, cons }); auto config = std::static_pointer_cast(renderContext->jobConfig); - config->gpuTime = timer->getAverage(); + config->setGPUBatchRunTime(timer->getGPUAverage(), timer->getBatchAverage()); } diff --git a/libraries/render-utils/src/RenderDeferredTask.h b/libraries/render-utils/src/RenderDeferredTask.h index 749cc09edc..21494336b3 100755 --- a/libraries/render-utils/src/RenderDeferredTask.h +++ b/libraries/render-utils/src/RenderDeferredTask.h @@ -29,18 +29,8 @@ protected: gpu::RangeTimerPointer _gpuTimer; }; +using GPURangeTimerConfig = render::GPUJobConfig; -class GPURangeTimerConfig : public render::Job::Config { - Q_OBJECT - Q_PROPERTY(double gpuTime READ getGpuTime) -public: - double getGpuTime() { return gpuTime; } - -protected: - friend class EndGPURangeTimer; - double gpuTime; -}; - class EndGPURangeTimer { public: using Config = GPURangeTimerConfig; @@ -143,16 +133,7 @@ protected: gpu::PipelinePointer getOpaquePipeline(); }; -class DrawBackgroundDeferredConfig : public render::Job::Config { - Q_OBJECT - Q_PROPERTY(double gpuTime READ getGpuTime) -public: - double getGpuTime() { return gpuTime; } - -protected: - friend class DrawBackgroundDeferred; - double gpuTime; -}; +using DrawBackgroundDeferredConfig = render::GPUJobConfig; class DrawBackgroundDeferred { public: @@ -211,6 +192,8 @@ public: void run(const render::SceneContextPointer& sceneContext, const render::RenderContextPointer& renderContext, const gpu::FramebufferPointer& srcFramebuffer); }; +using RenderDeferredTaskConfig = render::GPUTaskConfig; +/** class RenderDeferredTaskConfig : public render::Task::Config { Q_OBJECT Q_PROPERTY(double gpuTime READ getGpuTime) @@ -220,7 +203,7 @@ public: protected: friend class RenderDeferredTask; double gpuTime; -}; +};*/ class RenderDeferredTask : public render::Task { public: diff --git a/libraries/render-utils/src/SurfaceGeometryPass.cpp b/libraries/render-utils/src/SurfaceGeometryPass.cpp index 7a5a34c756..1957f8456a 100644 --- a/libraries/render-utils/src/SurfaceGeometryPass.cpp +++ b/libraries/render-utils/src/SurfaceGeometryPass.cpp @@ -201,7 +201,7 @@ void LinearDepthPass::run(const render::SceneContextPointer& sceneContext, const }); auto config = std::static_pointer_cast(renderContext->jobConfig); - config->gpuTime = _gpuTimer.getAverage(); + config->setGPUBatchRunTime(_gpuTimer.getGPUAverage(), _gpuTimer.getBatchAverage()); } @@ -524,7 +524,7 @@ void SurfaceGeometryPass::run(const render::SceneContextPointer& sceneContext, c auto config = std::static_pointer_cast(renderContext->jobConfig); - config->gpuTime = _gpuTimer.getAverage(); + config->setGPUBatchRunTime(_gpuTimer.getGPUAverage(), _gpuTimer.getBatchAverage()); } diff --git a/libraries/render-utils/src/SurfaceGeometryPass.h b/libraries/render-utils/src/SurfaceGeometryPass.h index 24f0c56cdd..7c60cbce86 100644 --- a/libraries/render-utils/src/SurfaceGeometryPass.h +++ b/libraries/render-utils/src/SurfaceGeometryPass.h @@ -62,20 +62,15 @@ protected: using LinearDepthFramebufferPointer = std::shared_ptr; - -class LinearDepthPassConfig : public render::Job::Config { +using LinearDepthPassConfig = render::GPUJobConfig; +/* +class LinearDepthPassConfig : public render::GPUJobConfig { Q_OBJECT - Q_PROPERTY(double gpuTime READ getGpuTime) public: - LinearDepthPassConfig() : render::Job::Config(true) {} - - double getGpuTime() { return gpuTime; } - - double gpuTime{ 0.0 }; - + LinearDepthPassConfig() : render::GPUJobConfig(true) {} signals: void dirty(); -}; +};*/ class LinearDepthPass { public: @@ -148,7 +143,7 @@ protected: using SurfaceGeometryFramebufferPointer = std::shared_ptr; -class SurfaceGeometryPassConfig : public render::Job::Config { +class SurfaceGeometryPassConfig : public render::GPUJobConfig { Q_OBJECT Q_PROPERTY(float depthThreshold MEMBER depthThreshold NOTIFY dirty) Q_PROPERTY(float basisScale MEMBER basisScale NOTIFY dirty) @@ -158,9 +153,8 @@ class SurfaceGeometryPassConfig : public render::Job::Config { Q_PROPERTY(float diffuseFilterScale MEMBER diffuseFilterScale NOTIFY dirty) Q_PROPERTY(float diffuseDepthThreshold MEMBER diffuseDepthThreshold NOTIFY dirty) - Q_PROPERTY(double gpuTime READ getGpuTime) public: - SurfaceGeometryPassConfig() : render::Job::Config(true) {} + SurfaceGeometryPassConfig() : render::GPUJobConfig(true) {} float depthThreshold{ 5.0f }; // centimeters float basisScale{ 1.0f }; @@ -169,10 +163,6 @@ public: float diffuseFilterScale{ 0.2f }; float diffuseDepthThreshold{ 1.0f }; - double getGpuTime() { return gpuTime; } - - double gpuTime{ 0.0 }; - signals: void dirty(); }; diff --git a/libraries/render/src/render/Task.h b/libraries/render/src/render/Task.h index 6ba1e3c625..204e5d5dee 100644 --- a/libraries/render/src/render/Task.h +++ b/libraries/render/src/render/Task.h @@ -334,9 +334,9 @@ protected: // A default Config is always on; to create an enableable Config, use the ctor JobConfig(bool enabled) class JobConfig : public QObject { Q_OBJECT - Q_PROPERTY(quint64 cpuRunTime READ getCPUTRunTime NOTIFY newStats()) + Q_PROPERTY(double cpuRunTime READ getCPURunTime NOTIFY newStats()) //ms - quint64 _CPURunTime{ 0 }; + double _msCPURunTime{ 0.0 }; public: using Persistent = PersistentConfig; @@ -364,8 +364,8 @@ public: // Running Time measurement // The new stats signal is emitted once per run time of a job when stats (cpu runtime) are updated - void setCPURunTime(quint64 ustime) { _CPURunTime = ustime; emit newStats(); } - quint64 getCPUTRunTime() const { return _CPURunTime; } + void setCPURunTime(double mstime) { _msCPURunTime = mstime; emit newStats(); } + double getCPURunTime() const { return _msCPURunTime; } public slots: void load(const QJsonObject& val) { qObjectFromJsonValue(val, *this); emit loaded(); } @@ -418,6 +418,46 @@ template void jobRun(T& data, const SceneContextPoin data.run(sceneContext, renderContext, input, output); } +class GPUJobConfig : public JobConfig { + Q_OBJECT + Q_PROPERTY(double gpuRunTime READ getGPURunTime) + Q_PROPERTY(double batchRunTime READ getBatchRunTime) + + double _msGPURunTime { 0.0 }; + double _msBatchRunTime { 0.0 }; +public: + using Persistent = PersistentConfig; + + GPUJobConfig() = default; + GPUJobConfig(bool enabled) : JobConfig(enabled) {} + + // Running Time measurement on GPU and for Batch execution + void setGPUBatchRunTime(double msGpuTime, double msBatchTime) { _msGPURunTime = msGpuTime; _msBatchRunTime = msBatchTime; } + double getGPURunTime() const { return _msGPURunTime; } + double getBatchRunTime() const { return _msBatchRunTime; } +}; + +class GPUTaskConfig : public TaskConfig { + Q_OBJECT + Q_PROPERTY(double gpuRunTime READ getGPURunTime) + Q_PROPERTY(double batchRunTime READ getBatchRunTime) + + double _msGPURunTime { 0.0 }; + double _msBatchRunTime { 0.0 }; +public: + + using Persistent = PersistentConfig; + + + GPUTaskConfig() = default; + GPUTaskConfig(bool enabled) : TaskConfig(enabled) {} + + // Running Time measurement on GPU and for Batch execution + void setGPUBatchRunTime(double msGpuTime, double msBatchTime) { _msGPURunTime = msGpuTime; _msBatchRunTime = msBatchTime; } + double getGPURunTime() const { return _msGPURunTime; } + double getBatchRunTime() const { return _msBatchRunTime; } +}; + class Job { public: using Config = JobConfig; @@ -439,7 +479,7 @@ public: virtual void run(const SceneContextPointer& sceneContext, const RenderContextPointer& renderContext) = 0; protected: - void setCPURunTime(quint64 ustime) { std::static_pointer_cast(_config)->setCPURunTime(ustime); } + void setCPURunTime(double mstime) { std::static_pointer_cast(_config)->setCPURunTime(mstime); } QConfigPointer _config; @@ -502,7 +542,7 @@ public: _concept->run(sceneContext, renderContext); - _concept->setCPURunTime(usecTimestampNow() - start); + _concept->setCPURunTime((double)(usecTimestampNow() - start) / 1000000.0); } protected: diff --git a/scripts/developer/utilities/render/ambientOcclusionPass.qml b/scripts/developer/utilities/render/ambientOcclusionPass.qml index a461c06a19..6eeaad3f8a 100644 --- a/scripts/developer/utilities/render/ambientOcclusionPass.qml +++ b/scripts/developer/utilities/render/ambientOcclusionPass.qml @@ -78,7 +78,7 @@ Column { valueNumDigits: "4" plots: [ { - prop: "gpuTime", + prop: "gpuRunTime", label: "gpu", color: "#FFFFFF" } diff --git a/scripts/developer/utilities/render/stats.qml b/scripts/developer/utilities/render/stats.qml index d20efc1f10..31c9f3859b 100644 --- a/scripts/developer/utilities/render/stats.qml +++ b/scripts/developer/utilities/render/stats.qml @@ -213,7 +213,7 @@ Item { height: parent.evalEvenHeight() object: parent.drawOpaqueConfig valueUnit: "ms" - valueScale: 1000 + valueScale: 1 valueNumDigits: "1" plots: [ { diff --git a/scripts/developer/utilities/render/statsGPU.qml b/scripts/developer/utilities/render/statsGPU.qml index 74bd376a00..3798de1200 100644 --- a/scripts/developer/utilities/render/statsGPU.qml +++ b/scripts/developer/utilities/render/statsGPU.qml @@ -39,31 +39,71 @@ Item { plots: [ { object: Render.getConfig("OpaqueRangeTimer"), - prop: "gpuTime", + prop: "gpuRunTime", label: "Opaque", color: "#FFFFFF" }, { object: Render.getConfig("LinearDepth"), - prop: "gpuTime", + prop: "gpuRunTime", label: "LinearDepth", color: "#00FF00" },{ object: Render.getConfig("SurfaceGeometry"), - prop: "gpuTime", + prop: "gpuRunTime", label: "SurfaceGeometry", color: "#00FFFF" }, { object: Render.getConfig("RenderDeferred"), - prop: "gpuTime", + prop: "gpuRunTime", label: "DeferredLighting", color: "#FF00FF" } , { object: Render.getConfig("ToneAndPostRangeTimer"), - prop: "gpuTime", + prop: "gpuRunTime", + label: "tone and post", + color: "#FF0000" + } + ] + } + PlotPerf { + title: "Timing" + height: parent.evalEvenHeight() + object: parent.drawOpaqueConfig + valueUnit: "ms" + valueScale: 1 + valueNumDigits: "4" + plots: [ + { + object: Render.getConfig("OpaqueRangeTimer"), + prop: "batchRunTime", + label: "Opaque", + color: "#FFFFFF" + }, + { + object: Render.getConfig("LinearDepth"), + prop: "batchRunTime", + label: "LinearDepth", + color: "#00FF00" + },{ + object: Render.getConfig("SurfaceGeometry"), + prop: "batchRunTime", + label: "SurfaceGeometry", + color: "#00FFFF" + }, + { + object: Render.getConfig("RenderDeferred"), + prop: "batchRunTime", + label: "DeferredLighting", + color: "#FF00FF" + } + , + { + object: Render.getConfig("ToneAndPostRangeTimer"), + prop: "batchRunTime", label: "tone and post", color: "#FF0000" } From c553e5f2fefcfca79e32727f04e06113da404cda Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 30 Aug 2016 13:57:47 -0700 Subject: [PATCH 2/4] fine tune the scripts for proper presentation of the timing values --- scripts/developer/utilities/render/ambientOcclusionPass.qml | 2 +- scripts/developer/utilities/render/stats.qml | 2 +- scripts/developer/utilities/render/statsGPU.qml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/developer/utilities/render/ambientOcclusionPass.qml b/scripts/developer/utilities/render/ambientOcclusionPass.qml index 6eeaad3f8a..3ebc80d2f1 100644 --- a/scripts/developer/utilities/render/ambientOcclusionPass.qml +++ b/scripts/developer/utilities/render/ambientOcclusionPass.qml @@ -75,7 +75,7 @@ Column { object: Render.getConfig("AmbientOcclusion") valueUnit: "ms" valueScale: 1 - valueNumDigits: "4" + valueNumDigits: "3" plots: [ { prop: "gpuRunTime", diff --git a/scripts/developer/utilities/render/stats.qml b/scripts/developer/utilities/render/stats.qml index 31c9f3859b..f20c545503 100644 --- a/scripts/developer/utilities/render/stats.qml +++ b/scripts/developer/utilities/render/stats.qml @@ -214,7 +214,7 @@ Item { object: parent.drawOpaqueConfig valueUnit: "ms" valueScale: 1 - valueNumDigits: "1" + valueNumDigits: "2" plots: [ { object: Render.getConfig("DrawOpaqueDeferred"), diff --git a/scripts/developer/utilities/render/statsGPU.qml b/scripts/developer/utilities/render/statsGPU.qml index 3798de1200..1dc08d4cbb 100644 --- a/scripts/developer/utilities/render/statsGPU.qml +++ b/scripts/developer/utilities/render/statsGPU.qml @@ -75,7 +75,7 @@ Item { object: parent.drawOpaqueConfig valueUnit: "ms" valueScale: 1 - valueNumDigits: "4" + valueNumDigits: "3" plots: [ { object: Render.getConfig("OpaqueRangeTimer"), From 2a5ee5d6b1ec34f5b2207413ba7d8855921bc427 Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 30 Aug 2016 14:28:52 -0700 Subject: [PATCH 3/4] Fixing the unit for the cpuTIme feed and the titles for the GPU PERf Plots --- libraries/render/src/render/Task.h | 2 +- scripts/developer/utilities/render/statsGPU.qml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/render/src/render/Task.h b/libraries/render/src/render/Task.h index 204e5d5dee..df24a08c05 100644 --- a/libraries/render/src/render/Task.h +++ b/libraries/render/src/render/Task.h @@ -542,7 +542,7 @@ public: _concept->run(sceneContext, renderContext); - _concept->setCPURunTime((double)(usecTimestampNow() - start) / 1000000.0); + _concept->setCPURunTime((double)(usecTimestampNow() - start) / 1000.0); } protected: diff --git a/scripts/developer/utilities/render/statsGPU.qml b/scripts/developer/utilities/render/statsGPU.qml index 1dc08d4cbb..3d23c2c6dc 100644 --- a/scripts/developer/utilities/render/statsGPU.qml +++ b/scripts/developer/utilities/render/statsGPU.qml @@ -30,7 +30,7 @@ Item { PlotPerf { - title: "Timing" + title: "GPU Timing" height: parent.evalEvenHeight() object: parent.drawOpaqueConfig valueUnit: "ms" @@ -70,7 +70,7 @@ Item { ] } PlotPerf { - title: "Timing" + title: "Batch Timing" height: parent.evalEvenHeight() object: parent.drawOpaqueConfig valueUnit: "ms" From af68a2550ec8db0f4b652d8f1db57a33aa918d0b Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 30 Aug 2016 14:53:37 -0700 Subject: [PATCH 4/4] Remve dead code --- libraries/render-utils/src/RenderDeferredTask.h | 11 ----------- libraries/render-utils/src/SurfaceGeometryPass.h | 8 -------- 2 files changed, 19 deletions(-) diff --git a/libraries/render-utils/src/RenderDeferredTask.h b/libraries/render-utils/src/RenderDeferredTask.h index 21494336b3..e379e42445 100755 --- a/libraries/render-utils/src/RenderDeferredTask.h +++ b/libraries/render-utils/src/RenderDeferredTask.h @@ -193,17 +193,6 @@ public: }; using RenderDeferredTaskConfig = render::GPUTaskConfig; -/** -class RenderDeferredTaskConfig : public render::Task::Config { - Q_OBJECT - Q_PROPERTY(double gpuTime READ getGpuTime) -public: - double getGpuTime() { return gpuTime; } - -protected: - friend class RenderDeferredTask; - double gpuTime; -};*/ class RenderDeferredTask : public render::Task { public: diff --git a/libraries/render-utils/src/SurfaceGeometryPass.h b/libraries/render-utils/src/SurfaceGeometryPass.h index 7c60cbce86..3bc6b45c7c 100644 --- a/libraries/render-utils/src/SurfaceGeometryPass.h +++ b/libraries/render-utils/src/SurfaceGeometryPass.h @@ -63,14 +63,6 @@ protected: using LinearDepthFramebufferPointer = std::shared_ptr; using LinearDepthPassConfig = render::GPUJobConfig; -/* -class LinearDepthPassConfig : public render::GPUJobConfig { - Q_OBJECT -public: - LinearDepthPassConfig() : render::GPUJobConfig(true) {} -signals: - void dirty(); -};*/ class LinearDepthPass { public: