Are you using TextureView? Do you see the same issue with a GLSurfaceView?
You could also try 
using http://developer.android.com/tools/debugging/systrace.html to see if 
anything strange is going on in the system when you drop frames.
OpenGL-wise it looks pretty simple.

Tobias

Den tisdagen den 15:e april 2014 kl. 06:00:24 UTC+2 skrev Dave Smith:
>
> 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 [email protected]
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to