From 64ece05f40504d3e04e822690974ffd96e61f4fc Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 1 Aug 2016 11:28:08 -0700 Subject: [PATCH] Move compositing framebuffer to main GL plugin --- .../src/display-plugins/OpenGLDisplayPlugin.cpp | 11 +++++++++++ .../src/display-plugins/OpenGLDisplayPlugin.h | 3 +++ .../src/display-plugins/hmd/HmdDisplayPlugin.cpp | 8 +------- .../src/display-plugins/hmd/HmdDisplayPlugin.h | 2 -- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp index a25667b250..a92efaea3d 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp @@ -368,11 +368,22 @@ void OpenGLDisplayPlugin::customizeContext() { _cursorPipeline = gpu::Pipeline::create(program, state); } } + auto renderSize = getRecommendedRenderSize(); + _compositeFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create(gpu::Element::COLOR_SRGBA_32, renderSize.x, renderSize.y)); + _compositeTexture = _compositeFramebuffer->getRenderBuffer(0); } void OpenGLDisplayPlugin::uncustomizeContext() { _presentPipeline.reset(); + _cursorPipeline.reset(); + _overlayPipeline.reset(); + _compositeFramebuffer.reset(); + _compositeTexture.reset(); + withPresentThreadLock([&] { + _currentFrame.reset(); + _newFrameQueue.swap(std::queue()); + }); } diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h index 367c64a635..b24d2e5dbe 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h @@ -107,7 +107,10 @@ protected: RateCounter<> _droppedFrameRate; RateCounter<> _newFrameRate; RateCounter<> _presentRate; + gpu::FramePointer _currentFrame; + gpu::FramebufferPointer _compositeFramebuffer; + gpu::TexturePointer _compositeTexture; gpu::PipelinePointer _overlayPipeline; gpu::PipelinePointer _presentPipeline; gpu::PipelinePointer _cursorPipeline; diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp index 141d92fa15..0dc8cd45f1 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp @@ -118,18 +118,12 @@ void HmdDisplayPlugin::customizeContext() { updateLaserProgram(); _laserGeometry = loadLaser(_laserProgram); #endif - - _compositeFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create(gpu::Element::COLOR_SRGBA_32, _renderTargetSize.x, _renderTargetSize.y)); - _compositeTexture = _compositeFramebuffer->getRenderBuffer(0); } void HmdDisplayPlugin::uncustomizeContext() { + _overlay = OverlayRenderer(); #if 0 - _overlayProgram.reset(); - _sphereSection.reset(); - _compositeFramebuffer.reset(); _previewProgram.reset(); - _reprojectionProgram.reset(); _laserProgram.reset(); _laserGeometry.reset(); #endif diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h index 611c9e889e..eea5198f98 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h @@ -93,8 +93,6 @@ protected: QMap _frameInfos; FrameInfo _currentPresentFrameInfo; FrameInfo _currentRenderFrameInfo; - gpu::FramebufferPointer _compositeFramebuffer; - gpu::TexturePointer _compositeTexture; private: void updateLaserProgram();