mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-25 17:35:08 +02:00
Add stutter tracking for Oculus
This commit is contained in:
parent
c7d68aa9cf
commit
162f24decd
5 changed files with 18 additions and 8 deletions
|
@ -710,3 +710,7 @@ void HmdDisplayPlugin::compositeExtra() {
|
|||
HmdDisplayPlugin::~HmdDisplayPlugin() {
|
||||
qDebug() << "Destroying HmdDisplayPlugin";
|
||||
}
|
||||
|
||||
float HmdDisplayPlugin::stutterRate() const {
|
||||
return _stutterRate.rate();
|
||||
}
|
||||
|
|
|
@ -44,6 +44,8 @@ public:
|
|||
return false;
|
||||
}
|
||||
|
||||
float stutterRate() const override;
|
||||
|
||||
protected:
|
||||
virtual void hmdPresent() = 0;
|
||||
virtual bool isHmdMounted() const = 0;
|
||||
|
@ -108,8 +110,9 @@ protected:
|
|||
QMap<uint32_t, FrameInfo> _frameInfos;
|
||||
FrameInfo _currentPresentFrameInfo;
|
||||
FrameInfo _currentRenderFrameInfo;
|
||||
RateCounter<> _stutterRate;
|
||||
|
||||
bool _disablePreview{ true };
|
||||
bool _disablePreview { true };
|
||||
private:
|
||||
ivec4 getViewportForSourceSize(const uvec2& size) const;
|
||||
float getLeftCenterPixel() const;
|
||||
|
|
|
@ -146,6 +146,16 @@ void OculusDisplayPlugin::hmdPresent() {
|
|||
if (!OVR_SUCCESS(result)) {
|
||||
logWarning("Failed to present");
|
||||
}
|
||||
|
||||
static int droppedFrames = 0;
|
||||
ovrPerfStats perfStats;
|
||||
ovr_GetPerfStats(_session, &perfStats);
|
||||
for (int i = 0; i < perfStats.FrameStatsCount; ++i) {
|
||||
const auto& frameStats = perfStats.FrameStats[i];
|
||||
int delta = frameStats.CompositorDroppedFrameCount - droppedFrames;
|
||||
_stutterRate.increment(delta);
|
||||
droppedFrames = frameStats.CompositorDroppedFrameCount;
|
||||
}
|
||||
}
|
||||
_presentRate.increment();
|
||||
}
|
||||
|
|
|
@ -708,7 +708,3 @@ bool OpenVrDisplayPlugin::isKeyboardVisible() {
|
|||
int OpenVrDisplayPlugin::getRequiredThreadCount() const {
|
||||
return Parent::getRequiredThreadCount() + (_threadedSubmit ? 1 : 0);
|
||||
}
|
||||
|
||||
float OpenVrDisplayPlugin::stutterRate() const {
|
||||
return _stutterRate.rate();
|
||||
}
|
||||
|
|
|
@ -58,8 +58,6 @@ public:
|
|||
// Possibly needs an additional thread for VR submission
|
||||
int getRequiredThreadCount() const override;
|
||||
|
||||
float stutterRate() const override;
|
||||
|
||||
protected:
|
||||
bool internalActivate() override;
|
||||
void internalDeactivate() override;
|
||||
|
@ -79,7 +77,6 @@ private:
|
|||
vr::HmdMatrix34_t _lastGoodHMDPose;
|
||||
mat4 _sensorResetMat;
|
||||
bool _threadedSubmit { true };
|
||||
RateCounter<> _stutterRate;
|
||||
|
||||
CompositeInfo::Array _compositeInfos;
|
||||
size_t _renderingIndex { 0 };
|
||||
|
|
Loading…
Reference in a new issue