From a42f9a5d0e978e8aa580ae554436157b47384c09 Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 14 Jul 2016 10:53:13 -0700 Subject: [PATCH] FIxing the mini mirror perf issue and the gamma correction --- .../display-plugins/OpenGLDisplayPlugin.cpp | 2 -- .../stereo/StereoDisplayPlugin.cpp | 2 +- .../render-utils/src/RenderDeferredTask.cpp | 14 +++++++++++++- .../render-utils/src/RenderDeferredTask.h | 18 +++++++++++++++++- libraries/render/src/render/Task.h | 2 +- 5 files changed, 32 insertions(+), 6 deletions(-) diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp index cd1c8eedd1..e0c87fbbed 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp @@ -578,8 +578,6 @@ void OpenGLDisplayPlugin::present() { PROFILE_RANGE_EX(__FUNCTION__, 0xff00ff00, (uint64_t)presentCount()) - glEnable(GL_FRAMEBUFFER_SRGB); - updateTextures(); if (_currentSceneTexture) { // Write all layers to a local framebuffer diff --git a/libraries/display-plugins/src/display-plugins/stereo/StereoDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/stereo/StereoDisplayPlugin.cpp index 0fa3816a8b..cfdfb1fc21 100644 --- a/libraries/display-plugins/src/display-plugins/stereo/StereoDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/stereo/StereoDisplayPlugin.cpp @@ -75,7 +75,7 @@ bool StereoDisplayPlugin::internalActivate() { _container->removeMenu(FRAMERATE); _screen = qApp->primaryScreen(); - // _container->setFullscreen(_screen); + _container->setFullscreen(_screen); return Parent::internalActivate(); } diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index bc7af6e118..7959c371f9 100755 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -201,10 +201,22 @@ void RenderDeferredTask::run(const SceneContextPointer& sceneContext, const Rend if (!(renderContext->args && renderContext->args->hasViewFrustum())) { return; } + RenderArgs* args = renderContext->args; + auto config = std::static_pointer_cast(renderContext->jobConfig); + + gpu::doInBatch(args->_context, [&](gpu::Batch& batch) { + _gpuTimer.begin(batch); + }); for (auto job : _jobs) { job.run(sceneContext, renderContext); } + + gpu::doInBatch(args->_context, [&](gpu::Batch& batch) { + _gpuTimer.end(batch); + }); + + config->gpuTime = _gpuTimer.getAverage(); } void DrawDeferred::run(const SceneContextPointer& sceneContext, const RenderContextPointer& renderContext, const Inputs& inputs) { @@ -416,7 +428,7 @@ void DrawBackgroundDeferred::run(const SceneContextPointer& sceneContext, const }); args->_batch = nullptr; - std::static_pointer_cast(renderContext->jobConfig)->gpuTime = _gpuTimer.getAverage(); + // std::static_pointer_cast(renderContext->jobConfig)->gpuTime = _gpuTimer.getAverage(); } void Blit::run(const SceneContextPointer& sceneContext, const RenderContextPointer& renderContext, const gpu::FramebufferPointer& srcFramebuffer) { diff --git a/libraries/render-utils/src/RenderDeferredTask.h b/libraries/render-utils/src/RenderDeferredTask.h index 7ddbeecae4..22a460cd88 100755 --- a/libraries/render-utils/src/RenderDeferredTask.h +++ b/libraries/render-utils/src/RenderDeferredTask.h @@ -173,13 +173,29 @@ public: void run(const render::SceneContextPointer& sceneContext, const render::RenderContextPointer& renderContext, const gpu::FramebufferPointer& srcFramebuffer); }; +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: + using Config = RenderDeferredTaskConfig; RenderDeferredTask(render::CullFunctor cullFunctor); + void configure(const Config& config) {} void run(const render::SceneContextPointer& sceneContext, const render::RenderContextPointer& renderContext); - using JobModel = Model; + using JobModel = Model; + +protected: + gpu::RangeTimer _gpuTimer; }; #endif // hifi_RenderDeferredTask_h diff --git a/libraries/render/src/render/Task.h b/libraries/render/src/render/Task.h index a90c7ea40e..3621fc5e0a 100644 --- a/libraries/render/src/render/Task.h +++ b/libraries/render/src/render/Task.h @@ -521,7 +521,7 @@ public: template Model(const Varying& input, A&&... args) : - Concept(nullptr), _data(Data(std::forward(args)...)), _input(input), _output(Output()) { + Concept(std::make_shared()), _data(Data(std::forward(args)...)), _input(input), _output(Output()) { _config = _data._config; std::static_pointer_cast(_config)->init(&_data); applyConfiguration();