Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

presentRenderbuffer : GL_RENDERBUFFER_OES takes long time

I added a profiler to my game and isolated this function. It, sometimes, cause FPS drop. This is my result:

Present buffer time: 22
Present buffer time: 1
Present buffer time: 9
Present buffer time: 1
Present buffer time: 20
Present buffer time: 6
Present buffer time: 4
Present buffer time: 4
Present buffer time: 22
Present buffer time: 4
Present buffer time: 8
Present buffer time: 4
Present buffer time: 4
Present buffer time: 15
Present buffer time: 1
Present buffer time: 1
Present buffer time: 1
Present buffer time: 11
Present buffer time: 1
Present buffer time: 6
Present buffer time: 1
Present buffer time: 1
Present buffer time: 25
Present buffer time: 6
Present buffer time: 7
Present buffer time: 1
Present buffer time: 10
Present buffer time: 7
Present buffer time: 3
Present buffer time: 1
Present buffer time: 12
Present buffer time: 9
Present buffer time: 6
Present buffer time: 9

Do you know why at every few frames this function takes more time?

This is my code:


    f64 time = -System::GetTime();      
    [m_context presentRenderbuffer:GL_RENDERBUFFER_OES];
    Log("Present buffer time: %d\n", u32((System::GetTime() + time) * 1000.));
like image 614
Mircea Ispas Avatar asked Sep 25 '26 17:09

Mircea Ispas


1 Answers

If you are not calling glFlush() explicitly, the driver is forced to do it when you present the buffer, because at the point of presentRenderbuffer call the rendering operations on the buffer may not be completed yet.

Try calling glFlush before presenting the buffer and measuring time of it separately.

like image 51
kvark Avatar answered Sep 28 '26 10:09

kvark



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!