Expected frame rates for a full-screen blur
Mike Hearn
mike at plan99.net
Fri Apr 4 20:33:34 UTC 2014
OK, now I'm really puzzled - I watched the JavaFX performance talk from
2011 and learned about PeformanceTracker. It's too bad that's not public
API, but it works. I used it like so:
PerformanceTracker tracker = PerformanceTracker.getSceneTracker(scene);
tracker.setOnRenderedFrameTask(new Runnable() {
long lastTimestamp = System.currentTimeMillis();
@Override
public void run() {
final long now = System.currentTimeMillis();
long delta = now - lastTimestamp;
if (delta < 1000)
System.out.println("Frame took " + delta + "msec");
lastTimestamp = now;
}
});
The 1000 thing is just to avoid printing a nonsense timestamp when the UI
hasn't been touched for a while.
The deltas I see are consistently between 10-20msec which would be between
50 and 60fps, i.e. the vsync of the screen. But the wacky thing is, this
doesn't change when I increase the size of the window, even though the
animation is noticeably more choppy. It still says there's a 10-20msec gap
between frames even though my eyes tell me otherwise. Even when I shrink
the window size right down and get super smooth animation, the above code
prints the same kind of deltas.
This makes me think that whatever is going on, the regular JavaFX drawing
thread isn't the issue. It seems to be churning through the scene at the
same totally acceptable rate no matter what. So I'm thinking the issue must
be something to do with how fast the GPU drains the command queue or
something.
BTW I tried doing -Dprism.order=j2d to see what would happen, and the GUI
hangs before rendering anything. I'll file a bug on that later.
On Thu, Apr 3, 2014 at 11:54 AM, Mike Hearn <mike at plan99.net> wrote:
> How does the OS "tank"?
>>
>
> All the OS animations hit the same frame rate as the app itself does. For
> instance, opening Mission Control is normally smooth, but when a maximized
> JFX app is animating, it's not.
>
> It feels like the GPU is being overworked but as I'm not a GPU expert at
> all, I'm not sure where to begin - I am not even sure how to find out the
> frame rate so I know when tweaks are improving things! Is there a way to
> get this data from the system?
>
More information about the openjfx-dev
mailing list