Thanks for the response, Doug, but we're talking about two different 
things.  I'm not referring to the errors that show up the log tagged 
Choreographer when the frame warning limit is triggered on the main thread. 
 I'm talking about actually using the Choreographer API to render OpenGL 
content locked to VSYNC.  These delays are on the rendering threads.  While 
I understand frames dropping periodically when the system is servicing 
other work, the inability to manage even a few second without skipping 
several VSYNC intervals indicates to me that something else is wrong with 
the GL code.

Thanks again,
Dave Smith, PE
Double Encore, Inc.

On Sunday, April 13, 2014 12:51:07 PM UTC-6, Doug wrote:
>
> Bear in mind that anything could be causing main thread delays.  It could 
> be your code.  It could be other threads in your app's process.  It could 
> be other apps running on the device.  It could be Android itself.  It could 
> be any combination of these things.  This is to be expected with 
> multitasking multiuser operating systems and the wide variety of devices 
> out there and their hardware capabilities.
>
> The Choreographer itself doesn't start complaining about skipped frames in 
> logcat until after 30 frames have been skipped:
>
>     private static final int SKIPPED_FRAME_WARNING_LIMIT = 
> SystemProperties.getInt(
>             "debug.choreographer.skipwarning", 30);
>
> So maybe you can lighten up your own acceptable threshold for frames 
> skipped (unless you're actually observing the jank that you're trying to 
> avoid)?
>
> Doug
>
> On Friday, April 11, 2014 10:37:39 AM UTC-7, Dave Smith wrote:
>>
>> Hello all -
>>
>> I am working on an application that is using Choreographer and OpenGL to 
>> render flash patterns on the display.  Our GL calls are quite simple, 
>> simply toggling the display back and forth between white and black using 
>> glClearColor() based on the frame time and status of the pattern we want to 
>> apply.  The timing of this pattern if very critical, and I am having severe 
>> issues getting consistent behavior out of the timing pulses we received 
>> from Choreographer to do the rendering.
>>
>> For simplicity sake, I have basically copied the Basic Dream application 
>> in AOSP, so 95% of my code looks exactly like this sample:
>>
>> https://android.googlesource.com/platform/packages/screensavers/Basic/+/master
>>
>> Our only change is that, where they call mSquare.draw() inside of 
>> doFrame(), we have another method called drawFrame() that does the 
>> following:
>>
>>     private void drawFrame() {
>>         final boolean nextBit = mPattern[mIndex];
>>
>>         if (nextBit) {
>>             glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
>>         } else {
>>             glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
>>         }
>>         glClear(GL_COLOR_BUFFER_BIT);
>>
>>         return true;
>>     }
>>
>> However, for the purposes of this discussion, you can see the *exact 
>> same behavior* by simply running the AOSP sample as an application (i.e. 
>> changing the Colors class from a DreamService to a launcher Activity).
>>
>> The problem is that on a regular basis (at least once per second, often 
>> many times), the debug logging returns that the frame callback took 33ms 
>> (instead of 16ms), and in many cases 50ms+!  I can understand skipping a 
>> rare frame here or there, but skipping 3-4 frames at once seems like I'm 
>> missing something big here.  Not all devices do this, but high-end devices 
>> like the Nexus 5 and GS4 do.  Devices we've tested like the Note 3, GS3, 
>> and Moto X don't seem to do so nearly as often.  Example typical logcat 
>> over a period of 30 seconds:
>>
>> 04-11 11:35:43.918  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (49865722 ms) frame 2
>> 04-11 11:35:43.948  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33264161 ms) frame 3
>> 04-11 11:35:43.988  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33233641 ms) frame 4
>> 04-11 11:35:44.018  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33233644 ms) frame 5
>> 04-11 11:35:45.860  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33264161 ms) frame 115
>> 04-11 11:35:46.881  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33233641 ms) frame 175
>> 04-11 11:35:47.692  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33233642 ms) frame 222
>> 04-11 11:35:48.242  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33264160 ms) frame 255
>> 04-11 11:35:49.373  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33233643 ms) frame 322
>> 04-11 11:35:53.908  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33268229 ms) frame 594
>> 04-11 11:35:56.190  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33264161 ms) frame 730
>> 04-11 11:35:56.690  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33233643 ms) frame 759
>> 04-11 11:35:57.751  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (49965416 ms) frame 821
>> 04-11 11:35:57.781  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33164467 ms) frame 822
>> 04-11 11:35:58.952  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33233643 ms) frame 891
>> 04-11 11:36:04.678  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33264161 ms) frame 1235
>> 04-11 11:36:05.919  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33264159 ms) frame 1308
>> 04-11 11:36:07.781  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33298746 ms) frame 1419
>> 04-11 11:36:07.821  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (49800618 ms) frame 1420
>> 04-11 11:36:08.672  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33325196 ms) frame 1470
>> 04-11 11:36:11.955  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33264160 ms) frame 1666
>> 04-11 11:36:13.687  10441-10455/com.android.dreams.basicgl 
>> V/ColorsGLRenderer﹕ JANK! (33264159 ms) frame 1770
>>
>> Any help from the OpenGL experts in the room is greatly appreciated!  Is 
>> there something the sample is doing poorly that I just unknowingly copied 
>> into my own code?
>>
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to