mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-07-24 09:13:55 +02:00
Merge pull request #8922 from ZappoMan/report45hzTarget
when vive is on i5 report a correct target frame rate so we can see that in metaverse stats
This commit is contained in:
commit
012e215f62
5 changed files with 21 additions and 5 deletions
|
@ -1194,6 +1194,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
|
||||||
properties["dropped_frame_rate"] = displayPlugin->droppedFrameRate();
|
properties["dropped_frame_rate"] = displayPlugin->droppedFrameRate();
|
||||||
properties["sim_rate"] = getAverageSimsPerSecond();
|
properties["sim_rate"] = getAverageSimsPerSecond();
|
||||||
properties["avatar_sim_rate"] = getAvatarSimrate();
|
properties["avatar_sim_rate"] = getAvatarSimrate();
|
||||||
|
properties["has_async_reprojection"] = displayPlugin->hasAsyncReprojection();
|
||||||
|
|
||||||
auto bandwidthRecorder = DependencyManager::get<BandwidthRecorder>();
|
auto bandwidthRecorder = DependencyManager::get<BandwidthRecorder>();
|
||||||
properties["packet_rate_in"] = bandwidthRecorder->getCachedTotalAverageInputPacketsPerSecond();
|
properties["packet_rate_in"] = bandwidthRecorder->getCachedTotalAverageInputPacketsPerSecond();
|
||||||
|
@ -1237,6 +1238,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
|
||||||
auto glInfo = getGLContextData();
|
auto glInfo = getGLContextData();
|
||||||
properties["gl_info"] = glInfo;
|
properties["gl_info"] = glInfo;
|
||||||
properties["gpu_free_memory"] = (int)BYTES_TO_MB(gpu::Context::getFreeGPUMemory());
|
properties["gpu_free_memory"] = (int)BYTES_TO_MB(gpu::Context::getFreeGPUMemory());
|
||||||
|
properties["ideal_thread_count"] = QThread::idealThreadCount();
|
||||||
|
|
||||||
auto hmdHeadPose = getHMDSensorPose();
|
auto hmdHeadPose = getHMDSensorPose();
|
||||||
properties["hmd_head_pose_changed"] = isHMDMode() && (hmdHeadPose != lastHMDHeadPose);
|
properties["hmd_head_pose_changed"] = isHMDMode() && (hmdHeadPose != lastHMDHeadPose);
|
||||||
|
|
|
@ -139,6 +139,7 @@ public:
|
||||||
virtual bool isStereo() const { return isHmd(); }
|
virtual bool isStereo() const { return isHmd(); }
|
||||||
virtual bool isThrottled() const { return false; }
|
virtual bool isThrottled() const { return false; }
|
||||||
virtual float getTargetFrameRate() const { return 0.0f; }
|
virtual float getTargetFrameRate() const { return 0.0f; }
|
||||||
|
virtual bool hasAsyncReprojection() const { return false; }
|
||||||
|
|
||||||
/// Returns a boolean value indicating whether the display is currently visible
|
/// Returns a boolean value indicating whether the display is currently visible
|
||||||
/// to the user. For monitor displays, false might indicate that a screensaver,
|
/// to the user. For monitor displays, false might indicate that a screensaver,
|
||||||
|
|
|
@ -19,6 +19,9 @@ public:
|
||||||
~OculusBaseDisplayPlugin();
|
~OculusBaseDisplayPlugin();
|
||||||
bool isSupported() const override;
|
bool isSupported() const override;
|
||||||
|
|
||||||
|
bool hasAsyncReprojection() const override { return true; }
|
||||||
|
|
||||||
|
|
||||||
// Stereo specific methods
|
// Stereo specific methods
|
||||||
void resetSensors() override final;
|
void resetSensors() override final;
|
||||||
bool beginFrameRender(uint32_t frameIndex) override;
|
bool beginFrameRender(uint32_t frameIndex) override;
|
||||||
|
|
|
@ -43,7 +43,6 @@ PoseData _nextSimPoseData;
|
||||||
#define MIN_CORES_FOR_NORMAL_RENDER 5
|
#define MIN_CORES_FOR_NORMAL_RENDER 5
|
||||||
bool forceInterleavedReprojection = (QThread::idealThreadCount() < MIN_CORES_FOR_NORMAL_RENDER);
|
bool forceInterleavedReprojection = (QThread::idealThreadCount() < MIN_CORES_FOR_NORMAL_RENDER);
|
||||||
|
|
||||||
|
|
||||||
static std::array<vr::Hmd_Eye, 2> VR_EYES { { vr::Eye_Left, vr::Eye_Right } };
|
static std::array<vr::Hmd_Eye, 2> VR_EYES { { vr::Eye_Left, vr::Eye_Right } };
|
||||||
bool _openVrDisplayActive { false };
|
bool _openVrDisplayActive { false };
|
||||||
// Flip y-axis since GL UV coords are backwards.
|
// Flip y-axis since GL UV coords are backwards.
|
||||||
|
@ -354,6 +353,13 @@ bool OpenVrDisplayPlugin::isSupported() const {
|
||||||
return openVrSupported();
|
return openVrSupported();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float OpenVrDisplayPlugin::getTargetFrameRate() const {
|
||||||
|
if (forceInterleavedReprojection && !_asyncReprojectionActive) {
|
||||||
|
return TARGET_RATE_OpenVr / 2.0f;
|
||||||
|
}
|
||||||
|
return TARGET_RATE_OpenVr;
|
||||||
|
}
|
||||||
|
|
||||||
void OpenVrDisplayPlugin::init() {
|
void OpenVrDisplayPlugin::init() {
|
||||||
Plugin::init();
|
Plugin::init();
|
||||||
|
|
||||||
|
@ -398,9 +404,10 @@ bool OpenVrDisplayPlugin::internalActivate() {
|
||||||
memset(&timing, 0, sizeof(timing));
|
memset(&timing, 0, sizeof(timing));
|
||||||
timing.m_nSize = sizeof(vr::Compositor_FrameTiming);
|
timing.m_nSize = sizeof(vr::Compositor_FrameTiming);
|
||||||
vr::VRCompositor()->GetFrameTiming(&timing);
|
vr::VRCompositor()->GetFrameTiming(&timing);
|
||||||
bool asyncReprojectionActive = timing.m_nReprojectionFlags & VRCompositor_ReprojectionAsync;
|
_asyncReprojectionActive = timing.m_nReprojectionFlags & VRCompositor_ReprojectionAsync;
|
||||||
|
|
||||||
_threadedSubmit = !asyncReprojectionActive;
|
_threadedSubmit = !_asyncReprojectionActive;
|
||||||
|
qDebug() << "OpenVR Async Reprojection active: " << _asyncReprojectionActive;
|
||||||
qDebug() << "OpenVR Threaded submit enabled: " << _threadedSubmit;
|
qDebug() << "OpenVR Threaded submit enabled: " << _threadedSubmit;
|
||||||
|
|
||||||
_openVrDisplayActive = true;
|
_openVrDisplayActive = true;
|
||||||
|
|
|
@ -40,7 +40,8 @@ public:
|
||||||
|
|
||||||
void init() override;
|
void init() override;
|
||||||
|
|
||||||
float getTargetFrameRate() const override { return TARGET_RATE_OpenVr; }
|
float getTargetFrameRate() const override;
|
||||||
|
bool hasAsyncReprojection() const override { return _asyncReprojectionActive; }
|
||||||
|
|
||||||
void customizeContext() override;
|
void customizeContext() override;
|
||||||
void uncustomizeContext() override;
|
void uncustomizeContext() override;
|
||||||
|
@ -82,4 +83,6 @@ private:
|
||||||
std::shared_ptr<OpenVrSubmitThread> _submitThread;
|
std::shared_ptr<OpenVrSubmitThread> _submitThread;
|
||||||
std::shared_ptr<gl::OffscreenContext> _submitCanvas;
|
std::shared_ptr<gl::OffscreenContext> _submitCanvas;
|
||||||
friend class OpenVrSubmitThread;
|
friend class OpenVrSubmitThread;
|
||||||
|
|
||||||
|
bool _asyncReprojectionActive { false };
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue