Steps to Reproduce

A licensee reported that the frame rate could be locked to around 45 occasionally on 90Hz android devices.

Test device: 
MI 10​(GLES: Qualcomm, Adreno (TM) 650, OpenGL ES 3.2 [Link Removed] (GIT@3a8b3d7, I6821cfa820, 1582112224) (Date:02/19/20))

Logs of runing at 90Hz:

[2021.09.01-10.59.04:399][ 0]LogRHI: |AndroidOpenGLFramePacer.cpp:269|AndroidEGL:SwapBuffers eglGetCompositorTimingANDROID EGL_COMPOSITE_DEADLINE_ANDROID=89043503819410, EGL_COMPOSITE_INTERVAL_ANDROID=11127666, EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID=10127666

[2021.09.01-10.59.04:399][ 0]LogRHI: |AndroidOpenGLFramePacer.cpp:276|JNI Display getRefreshRate=90.000000

[2021.09.01-10.59.04:399][ 0]LogRHI: |AndroidOpenGLFramePacer.cpp:292|Final display timing metrics: DriverRefreshRate=89.8661 DriverRefreshNanos=11127666

[2021.09.01-10.59.04:399][ 0]LogRHI: |AndroidOpenGLFramePacer.cpp:311|AndroidEGL:SwapBuffers Min=0, Max=1, Request=1, ClosestDriver=1, SetDriver=1

[2021.09.01-10.59.04:399][ 0]LogRHI: |AndroidOpenGLFramePacer.cpp:316|Called eglSwapInterval 1

 

Logs of runing at 45Hz:

[2021.09.01-09.44.29:834][ 0]LogRHI: |AndroidOpenGLFramePacer.cpp:269|AndroidEGL:SwapBuffers eglGetCompositorTimingANDROID EGL_COMPOSITE_DEADLINE_ANDROID=84568967349421, EGL_COMPOSITE_INTERVAL_ANDROID=11098333, EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID=10098333

[2021.09.01-09.44.29:834][ 0]LogRHI: |AndroidOpenGLFramePacer.cpp:276|JNI Display getRefreshRate=90.000000

[2021.09.01-09.44.29:834][ 0]LogRHI: |AndroidOpenGLFramePacer.cpp:292|Final display timing metrics: DriverRefreshRate=90.1036 DriverRefreshNanos=11098333

[2021.09.01-09.44.29:834][ 0]LogRHI: |AndroidOpenGLFramePacer.cpp:311|AndroidEGL:SwapBuffers Min=0, Max=1, Request=1, ClosestDriver=2, SetDriver=1

[2021.09.01-09.44.29:834][ 0]LogRHI: |AndroidOpenGLFramePacer.cpp:316|Called eglSwapInterval 1

[2021.09.01-09.44.29:834][ 0]LogRHI: Display: Using niave method for frame pacing (possible with timestamps method)​

 

I think it is because the DriverRefreshRate could be greater than 90( 90.1036 in the log) but it should not be, probably we should adjust the DriverRefreshNanos to limit the DriverRefreshRate not greater than 90.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to AnswerHub just mention UE-125051 in the post.

2
Login to Vote

Unresolved
ComponentUE - Platform - Mobile
Affects Versions4.27
Target Fix5.0
CreatedSep 2, 2021
UpdatedNov 1, 2021