From 5ab21588f23180a32ae75656c7890be2dd7aee24 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Mon, 14 Mar 2016 14:42:11 -0700 Subject: [PATCH] Add gpu timer to background --- .../render-utils/src/RenderDeferredTask.cpp | 4 ++++ .../render-utils/src/RenderDeferredTask.h | 18 +++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index f87ca26df1..ba5b2a59d5 100755 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -291,6 +291,7 @@ void DrawBackgroundDeferred::run(const SceneContextPointer& sceneContext, const RenderArgs* args = renderContext->args; doInBatch(args->_context, [&](gpu::Batch& batch) { args->_batch = &batch; + _gpuTimer.begin(batch); auto lightingFBO = DependencyManager::get()->getLightingFramebuffer(); @@ -310,8 +311,11 @@ void DrawBackgroundDeferred::run(const SceneContextPointer& sceneContext, const batch.setViewTransform(viewMat); renderItems(sceneContext, renderContext, inItems); + _gpuTimer.end(batch); }); args->_batch = nullptr; + + std::static_pointer_cast(renderContext->jobConfig)->gpuTime = _gpuTimer.getAverage(); } void Blit::run(const SceneContextPointer& sceneContext, const RenderContextPointer& renderContext) { diff --git a/libraries/render-utils/src/RenderDeferredTask.h b/libraries/render-utils/src/RenderDeferredTask.h index bbcaec34f3..0125ef79fe 100755 --- a/libraries/render-utils/src/RenderDeferredTask.h +++ b/libraries/render-utils/src/RenderDeferredTask.h @@ -82,11 +82,27 @@ protected: static gpu::PipelinePointer _opaquePipeline; //lazy evaluation hence mutable }; +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; +}; + class DrawBackgroundDeferred { public: + using Config = DrawBackgroundDeferredConfig; + using JobModel = render::Job::ModelI; + + void configure(const Config& config) {} void run(const render::SceneContextPointer& sceneContext, const render::RenderContextPointer& renderContext, const render::ItemBounds& inItems); - using JobModel = render::Job::ModelI; +protected: + gpu::RangeTimer _gpuTimer; }; class DrawOverlay3DConfig : public render::Job::Config {