Can you point me at the code? I'm in graphics, and I've done a search in the 
whole of rt and I don't see CALayer drawInGLContext anywhere in the code. (I 
did both an IDEA case insensitive recursive search and also a grep -r on the 
command line)

Thanks
Richard

On Jul 25, 2013, at 11:26 AM, Petr Pchelko <petr.pche...@oracle.com> wrote:

> Hello, Richard.
> 
>> Where did you instrument to measure which frames were actually rendered?
> Actually, I've made a bit of hacking to get this and my solution is not 
> cross-platform.
> 
> On Mac each time the [CALayer drawInGLContext] is called we are rendering a 
> frame to the screen. And this is reliable - if we've exited this method the 
> frame must be on the screen. So I've added a counter into this method which 
> calculates the average number of method calls per second and logs it. In 
> production this counter was removed. Of course external tools could be used, 
> like OpenGL profiler, but I suppose that's not what you want.
> 
> Also, on Mac we have a flag in native which represents if the frame was 
> delivered or not. So, using that flag, it is quite easy to add a logger which 
> would warn you that a frame was dropped. Nothing could be done in Java for 
> this, because we have a complex processing in native code and frame drops 
> happen there. 
> 
> I have no idea how it could be done on other platforms, because I am familiar 
> with this area only on the Mac. 
> 
> With best regards. Petr.
> 
> On Jul 25, 2013, at 9:24 PM, Richard Bair <richard.b...@oracle.com> wrote:
> 
>> Hi Petr,
>> 
>> We are in a separate thread discussing "jitter" where being able to measure 
>> dropped frames is crucial. We have the PulseLogger class which keeps track 
>> of this kind of information (at least, it measures the amount of time spent 
>> in a particular pulse). There is a message that sometimes displays about 
>> dropping a frame, but I don't know if it captures the same cases as what you 
>> have captured here. Where did you instrument to measure which frames were 
>> actually rendered?
>> 
>> I need a reliable mechanism for measuring jitter. We're not running full 
>> speed, so if I'm handling frames at less than 16ms per frame, then I should 
>> never see any jitter, unless we have a loss of synchronization between our 
>> pulse timer and the display. How can I measure this reliably? Right now we 
>> have to just stare at our monitors and see if something looks suspicious. 
>> I'd rather have a fool-proof method of determining whether we're hitting 
>> each frame right on target.
>> 
>> Any ideas?
>> 
>> Richard
>> 
>> On Jul 24, 2013, at 11:31 AM, Petr Pchelko <petr.pche...@oracle.com> wrote:
>> 
>>> Hello, Richard.
>>> 
>>> These changes fix the problem with dropping frames on Mac because of 
>>> locking between the render thread and UI thread.
>>> 
>>> I have made some measurements with Controls benchmark and GUIMark2. The 
>>> numbers without braces is the FPS rendered by Prism and the braced numbers 
>>> represent how many frames we are actually rendering on the screen.
>>>  
>>>      Test                         Fix                     No Fix
>>> bitmap-1000      76.1 (76.0)      75.3 (44.1) 
>>> bitmap-3000      38.3 (38.1)      36.9 (31.2) 
>>> bitmap-5000      23.4 (23.2)      22.6 (18.4) 
>>> vector               31.6 (31.3)      31.8 (29.0) 
>>> CheckBox         79    (79)        67    (47) 
>>> 
>>> As you could see, with the fix we almost never drop frames, all of them are 
>>> actually delivered to the screen. Prism performance is improved in some 
>>> cases too. These are not all the results, just examples to feel the 
>>> difference. 
>>> 
>>> With best regards. Petr.
>>> 
>>> On Jul 24, 2013, at 8:23 PM, Richard Bair <richard.b...@oracle.com> wrote:
>>> 
>>>> The name of the issue is pretty ho-hum, but actually this was a huge 
>>>> amount of work to get finished. Petr, Artem, or Steve, can you give us a 
>>>> run-down of the performance impact of this change on Mac?
>>>> 
>>>> Thanks
>>>> Richard
>>>> 
>>>> On Jul 24, 2013, at 12:32 AM, hang...@oracle.com wrote:
>>>> 
>>>>> Changeset: dd30604ab7d0
>>>>> Author:    Petr Pchelko <petr.pche...@oracle.com>
>>>>> Date:      2013-07-24 11:24 +0400
>>>>> URL:       
>>>>> http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/dd30604ab7d0
>>>>> 
>>>>> RT-26702 Poor DisplacementMap effect performance on Mac
>>>>> Reviewed-by: anthony, art, snorthov
>>>>> 
>>>>> ! 
>>>>> modules/graphics/src/main/native-glass/mac/GlassEmbeddedWindow+Overrides.m
>>>>> ! modules/graphics/src/main/native-glass/mac/GlassFrameBufferObject.h
>>>>> ! modules/graphics/src/main/native-glass/mac/GlassFrameBufferObject.m
>>>>> ! modules/graphics/src/main/native-glass/mac/GlassLayer3D.h
>>>>> ! modules/graphics/src/main/native-glass/mac/GlassLayer3D.m
>>>>> ! modules/graphics/src/main/native-glass/mac/GlassOffscreen.h
>>>>> ! modules/graphics/src/main/native-glass/mac/GlassOffscreen.m
>>>>> ! modules/graphics/src/main/native-glass/mac/GlassView3D.m
>>>>> 
>>>> 
>>> 
>> 
> 

Reply via email to