From 33494d7477c63968a23402f96cf9fb983b451544 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Fri, 12 Jul 2019 10:30:52 -0700 Subject: [PATCH 1/3] Bump minimum threadpool size to 2 --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 9aa2bdbcdb..63e73ca453 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -288,7 +288,7 @@ static const uint32_t MAX_CONCURRENT_RESOURCE_DOWNLOADS = 4; // For processing on QThreadPool, we target a number of threads after reserving some // based on how many are being consumed by the application and the display plugin. However, // we will never drop below the 'min' value -static const int MIN_PROCESSING_THREAD_POOL_SIZE = 1; +static const int MIN_PROCESSING_THREAD_POOL_SIZE = 2; static const QString SNAPSHOT_EXTENSION = ".jpg"; static const QString JPG_EXTENSION = ".jpg"; From 0f6ad4353117cb7e53a9aaa82828e0db873a0ec2 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Tue, 6 Aug 2019 15:34:13 -0700 Subject: [PATCH 2/3] Set desktop reserved threads to 1; HMD reserved threads to 2 --- .../display-plugins/src/display-plugins/OpenGLDisplayPlugin.h | 3 ++- plugins/oculus/src/OculusBaseDisplayPlugin.h | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h index 5eebd92fba..a8d7847c09 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h @@ -78,7 +78,8 @@ public: void setVsyncEnabled(bool vsyncEnabled) { _vsyncEnabled = vsyncEnabled; } bool isVsyncEnabled() const { return _vsyncEnabled; } // Three threads, one for rendering, one for texture transfers, one reserved for the GL driver - int getRequiredThreadCount() const override { return 3; } + // Drop to one reserved for better other-task performance in desktop + int getRequiredThreadCount() const override { return 1; } virtual std::function getHUDOperator() override; void copyTextureToQuickFramebuffer(NetworkTexturePointer source, diff --git a/plugins/oculus/src/OculusBaseDisplayPlugin.h b/plugins/oculus/src/OculusBaseDisplayPlugin.h index d442c365ae..0805623b76 100644 --- a/plugins/oculus/src/OculusBaseDisplayPlugin.h +++ b/plugins/oculus/src/OculusBaseDisplayPlugin.h @@ -38,6 +38,8 @@ public: virtual StencilMaskMode getStencilMaskMode() const override { return StencilMaskMode::MESH; } virtual StencilMaskMeshOperator getStencilMaskMeshOperator() override; + // Attempt to reserve two threads. + int getRequiredThreadCount() const override { return 2; } protected: void customizeContext() override; From 99e1178d9c583293117c7feff4c4131a7f7d678b Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Thu, 8 Aug 2019 11:14:02 -0700 Subject: [PATCH 3/3] Move getRequiredThreadCount override from OculusBaseDisplayPlugin to HmdDisplayPlugin --- .../display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h | 2 ++ plugins/oculus/src/OculusBaseDisplayPlugin.h | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h index 5317ec54da..36810681ad 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h @@ -53,6 +53,8 @@ public: void updateVisionSqueezeParameters(float visionSqueezeX, float visionSqueezeY, float visionSqueezeTransition, int visionSqueezePerEye, float visionSqueezeGroundPlaneY, float visionSqueezeSpotlightSize); + // Attempt to reserve two threads. + int getRequiredThreadCount() const override { return 2; } signals: void hmdMountedChanged(); diff --git a/plugins/oculus/src/OculusBaseDisplayPlugin.h b/plugins/oculus/src/OculusBaseDisplayPlugin.h index 0805623b76..d442c365ae 100644 --- a/plugins/oculus/src/OculusBaseDisplayPlugin.h +++ b/plugins/oculus/src/OculusBaseDisplayPlugin.h @@ -38,8 +38,6 @@ public: virtual StencilMaskMode getStencilMaskMode() const override { return StencilMaskMode::MESH; } virtual StencilMaskMeshOperator getStencilMaskMeshOperator() override; - // Attempt to reserve two threads. - int getRequiredThreadCount() const override { return 2; } protected: void customizeContext() override;