diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp
index c4846f6af8..a6f7d3caf4 100644
--- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp
+++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp
@@ -165,6 +165,7 @@ public:
 
                         if (newPlugin) {
                             bool hasVsync = true;
+                            QThread::setPriority(newPlugin->getPresentPriority());
                             bool wantVsync = newPlugin->wantVsync();
                             _context->makeCurrent();
 #if defined(Q_OS_WIN)
diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h
index a6de3f7baa..ee0bcf91a9 100644
--- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h
+++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h
@@ -14,6 +14,7 @@
 #include <memory>
 #include <queue>
 
+#include <QtCore/QThread>
 #include <QtCore/QTimer>
 #include <QtGui/QImage>
 
@@ -80,6 +81,7 @@ protected:
 
     void updateCompositeFramebuffer();
 
+    virtual QThread::Priority getPresentPriority() { return QThread::HighPriority; }
     virtual void compositeLayers();
     virtual void compositeScene();
     virtual void compositeOverlay();
diff --git a/plugins/oculus/src/OculusDisplayPlugin.h b/plugins/oculus/src/OculusDisplayPlugin.h
index e44596d6e9..ccab31785b 100644
--- a/plugins/oculus/src/OculusDisplayPlugin.h
+++ b/plugins/oculus/src/OculusDisplayPlugin.h
@@ -24,6 +24,8 @@ public:
     virtual QJsonObject getHardwareStats() const;
 
 protected:
+    QThread::Priority getPresentPriority() override { return QThread::TimeCriticalPriority; }
+
     bool internalActivate() override;
     void hmdPresent() override;
     bool isHmdMounted() const override;