Canvas performance on Mac OS

Tobias Bley tobi at ultramixer.com
Thu Apr 16 20:05:30 UTC 2015


Hi Johan,

I would like to test it on iPad 1 and iPhone 4, would it be possible now via JavaFXPorts-Gradle-Plugin?

Best,
Tobi


> Am 16.04.2015 um 21:58 schrieb Johan Vos <johan at lodgon.com>:
> 
> Hi Jim,
> 
> On iOS, the performance jumped from 2 fps to 15 fps on my old iPad.
> Excellent work!
> 
> - Johan
> 
> 2015-04-14 21:16 GMT+02:00 Jim Graham <james.graham at oracle.com>:
> 
>> Hi Chris,
>> 
>> We identified a fairly localized optimization that we might be able to
>> apply to enhance the performance of your Sierpinski program.  We don't have
>> any figures yet on whether this will improve other applications/benchmarks
>> that people have been discussing, but the improvements with your Sierpinski
>> program are quite dramatic on a number of platforms and GPUs.
>> 
>> This issue is now being tracked as: https://javafx-jira.kenai.com/
>> browse/RT-40533
>> 
>> If others could apply the indicated patch to an OpenJFX build and provide
>> feedback on any improvements (or bugs!) that they see, that would help.  In
>> the meantime, we have a lot of testing to do to verify the correctness of
>> the changes...
>> 
>>                        ...jim
>> 
>> 
>> On 4/8/15 9:25 AM, Chris Newland wrote:
>> 
>>> Hi Jim,
>>> 
>>> I'll post the verbose prism output from my iMac when I get home.
>>> 
>>> Just tried this on my Linux workstation and the performance gap is the
>>> same between es2 and sw so I don't think it's an OSX issue.
>>> 
>>> uname -a
>>> Linux chris 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux
>>> 
>>> "$JAVA_HOME/bin/java" -classpath target/DemoFX.jar
>>> com.chrisnewland.demofx.standalone.Sierpinski
>>> fps: 1
>>> fps: 20
>>> fps: 31
>>> fps: 32
>>> fps: 33
>>> fps: 35
>>> fps: 34
>>> fps: 33
>>> 
>>> "$JAVA_HOME/bin/java" -Dprism.order=sw -classpath target/DemoFX.jar
>>> com.chrisnewland.demofx.standalone.Sierpinski
>>> fps: 1
>>> fps: 54
>>> fps: 56
>>> fps: 60
>>> fps: 59
>>> fps: 60
>>> fps: 61
>>> fps: 61
>>> fps: 60
>>> 
>>> This is a Xeon W3520 quad-core HT box with an Nvidia Quadro FX 580
>>> graphics card running driver 304.125
>>> 
>>> Regards,
>>> 
>>> Chris
>>> 
>>> 
>>> On Wed, April 8, 2015 00:16, Jim Graham wrote:
>>> 
>>>> OK, I took the time to put my rMBP on a diet yesterday and find room to
>>>> install a 10.10 partition.  I get the same numbers for Sierpinski on
>>>> 10.10,
>>>> so my theory that something changed in the OGL implementation for 10.10
>>>> doesn't hold water.
>>>> 
>>>> But, I then tried it using the integrated graphics.  I get really poor
>>>> performance using the integrated Intel 4000 graphics, but I get great
>>>> numbers on the discrete nVidia 650m.  It makes sense that the Intel
>>>> graphics wouldn't be as powerful as the discrete graphics, but we
>>>> shouldn't be taxing it that much to make that big of a difference.
>>>> 
>>>> Just to be sure - is that iMac a dual graphics system, or is it
>>>> all-AMD-all-the-time?  You can see which GPU is being used if you run it
>>>> with -Dprism.verbose=true...
>>>> 
>>>> ...jim
>>>> 
>>>> 
>>>> On 4/2/15 4:13 PM, Jim Graham wrote:
>>>> 
>>>> On my retina MBP (10.8) I get 60fps for es2 and 44fps for sw.  Are you
>>>>> running a newer version of MacOS?
>>>>> 
>>>>> ...jim
>>>>> 
>>>>> 
>>>>> On 3/31/15 3:40 PM, Chris Newland wrote:
>>>>> 
>>>>> Hi Hervé,
>>>>>> 
>>>>>> 
>>>>>> That's a valid question :)
>>>>>> 
>>>>>> 
>>>>>> Probably because
>>>>>> 
>>>>>> 
>>>>>> a) All my non-UI graphics experience is with immediate-mode / raster
>>>>>> systems
>>>>>> 
>>>>>> b) I'm interested in using JavaFX for particle effects / demoscene /
>>>>>> gaming so assumed (perhaps wrongly?) that scenegraph was not the way
>>>>>> to go for that due to the very large number of nodes.
>>>>>> 
>>>>>> Numbers for my Sierpinski filled triangle example:
>>>>>> 
>>>>>> 
>>>>>> System: 2011 iMac Core i7 3.4GHz / 20GB RAM / AMD Radeon HD 6970M
>>>>>> 1024 MB
>>>>>> 
>>>>>> 
>>>>>> java -Dprism.order=es2 -cp target/classes/
>>>>>> com.chrisnewland.demofx.standalone.Sierpinski fps: 1
>>>>>> fps: 23
>>>>>> fps: 18
>>>>>> fps: 25
>>>>>> fps: 18
>>>>>> fps: 23
>>>>>> fps: 23
>>>>>> fps: 19
>>>>>> fps: 25
>>>>>> 
>>>>>> 
>>>>>> java -Dprism.order=sw -cp target/classes/
>>>>>> com.chrisnewland.demofx.standalone.Sierpinski fps: 1
>>>>>> fps: 54
>>>>>> fps: 60
>>>>>> fps: 60
>>>>>> fps: 60
>>>>>> fps: 60
>>>>>> fps: 60
>>>>>> fps: 60
>>>>>> fps: 60
>>>>>> fps: 60
>>>>>> fps: 60
>>>>>> 
>>>>>> 
>>>>>> There are never more than 2500 filled triangles on screen. JDK is
>>>>>> 1.8.0_40
>>>>>> 
>>>>>> 
>>>>>> I would say there is a performance problem here? (or at least a need
>>>>>> for documentation so as to set expectations for gc.fillPolygon).
>>>>>> 
>>>>>> Best regards,
>>>>>> 
>>>>>> 
>>>>>> Chris
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Tue, March 31, 2015 22:00, Hervé Girod wrote:
>>>>>> 
>>>>>> Why don't you use Nodes rather than Canvas ?
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> Sent from my iPhone
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On Mar 31, 2015, at 22:31, Chris Newland
>>>>>>>> <cnewland at chrisnewland.com>
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Hi Jim,
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Thanks, that makes things much clearer.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> I was surprised how much was going on under the hood of
>>>>>>>> GraphicsContext
>>>>>>>> and hoped it was just magic glue that gave the best of GPU
>>>>>>>> acceleration where available and immediate-mode-like simple
>>>>>>>> rasterizing where not.
>>>>>>>> 
>>>>>>>> I've managed to find an anomaly with GraphicsContext.fillPolygon
>>>>>>>> where the software pipeline achieves the full 60fps but ES2 can
>>>>>>>> only manage 30-35fps. It uses lots of overlapping filled triangles
>>>>>>>> so I expect suffers from the problem you've described.
>>>>>>>> 
>>>>>>>> SSCCE:
>>>>>>>> https://github.com/chriswhocodes/DemoFX/blob/master/src/main/java/
>>>>>>>> com/ch
>>>>>>>> 
>>>>>>>> risnewland/demofx/standalone/Sierpinski.java
>>>>>>>> 
>>>>>>>> Was full frame rate canvas drawing an expected use case for
>>>>>>>> JavaFX or
>>>>>>>> would I be better off with Graphics2D?
>>>>>>>> 
>>>>>>>> Thanks,
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Chris
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On Mon, March 30, 2015 20:04, Jim Graham wrote:
>>>>>>>>> Hi Chris,
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> drawLine() is a very simple primitive that can be optimized
>>>>>>>>> with a GPU
>>>>>>>>> shader.  It either looks like a (potentially rotated) rectangle
>>>>>>>>> or a rounded rect - and we have optimized shaders for both
>>>>>>>>> cases.  A large number of drawLine() calls turns into simply
>>>>>>>>> accumulating a large vertex list and uploading it to the GPU
>>>>>>>>> with an appropriate shader which is very fast.
>>>>>>>>> 
>>>>>>>>> drawPolygon() is a very complex operation that involves things
>>>>>>>>> like:
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> - dealing with line joins between segments that don't exist for
>>>>>>>>>  drawLine() - dealing with only rendering common points of
>>>>>>>>> intersection once
>>>>>>>>> 
>>>>>>>>> To handle all of that complexity we have to involve a
>>>>>>>>> rasterizer that takes the entire collection of lines, analyzes
>>>>>>>>> the stroke attributes and interactions and computes a coverage
>>>>>>>>> mask for each pixel in the region. We do that in software
>>>>>>>>> currently for all pipelines.
>>>>>>>>> 
>>>>>>>>> For the ES2 pipeline Line.v.Poly is dominated by pure GPU vs
>>>>>>>>> CPU path
>>>>>>>>> rasterization.
>>>>>>>>> 
>>>>>>>>> For the SW pipeline, drawLine is a simplified case of
>>>>>>>>> drawPolygon and so the overhead of lots of calls to drawLine()
>>>>>>>>> dominates its performance.
>>>>>>>>> 
>>>>>>>>> I would expect ES2 to blow the SW pipeline out of the water
>>>>>>>>> with drawLine() performance (as long as there are no additional
>>>>>>>>> rendering primitives interspersed in the set of lines).
>>>>>>>>> 
>>>>>>>>> But, both should be on the same footing for the drawPolygon
>>>>>>>>> case. Does
>>>>>>>>> the ES2 pipeline compare similarly (hopefully better than) the
>>>>>>>>> SW
>>>>>>>>> pipeline for the polygon case?
>>>>>>>>> 
>>>>>>>>> One thing I noticed is that we have no optimized case for
>>>>>>>>> drawLine() on the SW pipeline.  It generates a path containing a
>>>>>>>>> single MOVETO and LINETO and feeds it to the generalized path
>>>>>>>>> rasterizer when it could instead compute the rounded/square
>>>>>>>>> rectangle and render it more directly.  If we added that support
>>>>>>>>> then I'd expect the SW pipeline to perform the set of drawLine
>>>>>>>>> calls faster than drawPolygon as well...
>>>>>>>>> 
>>>>>>>>> ...jim
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On 3/28/15 3:22 AM, Chris Newland wrote:
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Hi Robert,
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> I've not filed a Jira yet as I was hoping to find time to
>>>>>>>>>> investigate thoroughly but when I saw your question I thought
>>>>>>>>>> I'd
>>>>>>>>>> better add my findings.
>>>>>>>>>> 
>>>>>>>>>> I believe the issue is in the ES2Pipeline as if I run with
>>>>>>>>>> -Dprism.order=sw then strokePolygon outperforms the series of
>>>>>>>>>> strokeLine commands as expected:
>>>>>>>>>> 
>>>>>>>>>> java -cp target/DemoFX.jar -Dprism.order=sw
>>>>>>>>>> com.chrisnewland.demofx.DemoFXApplication -c 500 -m line
>>>>>>>>>> Result:
>>>>>>>>>> 44fps
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> java -cp target/DemoFX.jar -Dprism.order=sw
>>>>>>>>>> com.chrisnewland.demofx.DemoFXApplication -c 500 -m poly
>>>>>>>>>> Result:
>>>>>>>>>> 60fps
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Will see if I can find the root cause as I've got plenty more
>>>>>>>>>>  examples where ES2Pipeline performs horribly on my Mac which
>>>>>>>>>> should have no problem throwing around a few thousand polys.
>>>>>>>>>> 
>>>>>>>>>> I realise there's a *lot* of indirection involved in making
>>>>>>>>>> JavaFX
>>>>>>>>>> support such a wide range of underlying graphics systems but I
>>>>>>>>>> do think there's a bug here.
>>>>>>>>>> 
>>>>>>>>>> Will file a Jira if I can contribute a bit more than "feels
>>>>>>>>>> slow" ;)
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Cheers,
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Chris
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> On Sat, March 28, 2015 10:06, Robert Krüger wrote:
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> This is consistent with what I am observing. Is this
>>>>>>>>>>> something that Oracle is aware of? Looking at Jira, I don't
>>>>>>>>>>> see that anyone is working on this:
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> https://javafx-jira.kenai.com/issues/?jql=status%20in%20(Op
>>>>>>>>>>> en%2C% 20%2
>>>>>>>>>>> 2In%
>>>>>>>>>>> 20Progress%22%2C%20Reopened)%20AND%20labels%20in%20(macosx)%
>>>>>>>>>>> 20%20A
>>>>>>>>>>> ND%2
>>>>>>>>>>> 0la
>>>>>>>>>>> bels%20in%20(performance)
>>>>>>>>>>> 
>>>>>>>>>>> Given that one of the One of the main reasons to use JFX
>>>>>>>>>>> for me is to be able to develop with one code base for at
>>>>>>>>>>> least OSX and Windows and
>>>>>>>>>>> the official statement what JavaFX is for, i.e.
>>>>>>>>>>> 
>>>>>>>>>>> "JavaFX is a set of graphics and media packages that
>>>>>>>>>>> enables developers to design, create, test, debug, and
>>>>>>>>>>> deploy rich client applications that operate consistently
>>>>>>>>>>> across diverse platforms"
>>>>>>>>>>> 
>>>>>>>>>>> and the fact that this is clearly not the case currently
>>>>>>>>>>> (8u40)
>>>>>>>>>>> as soon as I do something else than simple forms, I run into
>>>>>>>>>>>  performance/quality problems on the Mac, I am a bit unsure
>>>>>>>>>>> what to make of all that. Is Mac OSX a second-class citizen
>>>>>>>>>>> as far as dev resources are concerned?
>>>>>>>>>>> 
>>>>>>>>>>> Tobi and Chris, have you filed Jira Issues on Mac graphics
>>>>>>>>>>> performance that can be tracked?
>>>>>>>>>>> 
>>>>>>>>>>> I will file an issue with a simple test case and hope for
>>>>>>>>>>> the best.
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> On Fri, Mar 27, 2015 at 11:08 PM, Chris Newland
>>>>>>>>>>> <cnewland at chrisnewland.com>
>>>>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> Possibly related:
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> I can reproduce a massive (90%) performance drop on OSX
>>>>>>>>>>>> between drawing a wireframe polygon on a Canvas using a
>>>>>>>>>>>> series of gc.strokeLine(double x1, double y1, double x2,
>>>>>>>>>>>> double y2) commands versus using a single
>>>>>>>>>>>> gc.strokePolygon(double[] xPoints, double[] yPoints, int
>>>>>>>>>>>> count) command.
>>>>>>>>>>>> 
>>>>>>>>>>>> Creating the polygons manually with strokeLine() is
>>>>>>>>>>>> significantly faster using the ES2Pipeline on OSX.
>>>>>>>>>>>> 
>>>>>>>>>>>> This is reproducible in a little GitHub JavaFX
>>>>>>>>>>>> benchmarking project I've created:
>>>>>>>>>>>> https://github.com/chriswhocodes/DemoFX
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> Build with ant
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> Run with:
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> # use strokeLine
>>>>>>>>>>>> ./run.sh -c 5000 -m line
>>>>>>>>>>>> result: 60 (sixty) fps
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> # use strokePolygon
>>>>>>>>>>>> ./run.sh -c 5000 -m poly
>>>>>>>>>>>> result: 6 (six) fps
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> System is 2011 iMac 27" / Mavericks / 3.4GHz Core i7 /
>>>>>>>>>>>> 20GB RAM
>>>>>>>>>>>> /
>>>>>>>>>>>> Radeon
>>>>>>>>>>>> 6970M 1024MB
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> Looking at the code paths in
>>>>>>>>>>>> javafx.scene.canvas.GraphicsContext:
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> gc.strokeLine() maps to writeOp4(x1, y1, x2, y2,
>>>>>>>>>>>> NGCanvas.STROKE_LINE)
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> gc.strokePolygon() maps to writePoly(xPoints, yPoints,
>>>>>>>>>>>> nPoints, true, NGCanvas.STROKE_PATH) which involves
>>>>>>>>>>>> significantly more work with adding to and flushing a
>>>>>>>>>>>> GrowableDataBuffer.
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> I've not had time to dig any deeper than this but it's
>>>>>>>>>>>> surely a bug when building a poly manually is 10x faster
>>>>>>>>>>>> than using the convenience method.
>>>>>>>>>>>> 
>>>>>>>>>>>> Cheers,
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> Chris
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> On Fri, March 27, 2015 21:26, Tobias Bley wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> In my opinion the whole graphics performance on MacOSX
>>>>>>>>>>>>> isn’t good at all with JavaFX….
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Am 27.03.2015 um 22:10 schrieb Robert Krüger
>>>>>>>>>>>>>> <krueger at lesspain.de>:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> The bad full screen performance is without the arcs.
>>>>>>>>>>>>>> It is
>>>>>>>>>>>>>> just one call to fillRect, two to strokeOval and one
>>>>>>>>>>>>>> to fillOval, that's all. I will build a simple test
>>>>>>>>>>>>>> case and file an issue.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> On Fri, Mar 27, 2015 at 9:58 PM, Jim Graham
>>>>>>>>>>>>>> <james.graham at oracle.com>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Hi Robert,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Please file a Jira issue with a simple test case.
>>>>>>>>>>>>>>> Arcs
>>>>>>>>>>>>>>> are handled as a generalized shape rather than via a
>>>>>>>>>>>>>>>  predetermined shader, but it shouldn't be that
>>>>>>>>>>>>>>> slow. Something else may
>>>>>>>>>>>>>>> be going on.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Another test might be to replace the arcs with
>>>>>>>>>>>>>>> rectangles or ellipses and see if the performance
>>>>>>>>>>>>>>> changes...
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> ...jim
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On 3/27/15 1:52 PM, Robert Krüger wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> I have a super-simple animation implemented using
>>>>>>>>>>>>>>>>  AnimationTimer
>>>>>>>>>>>>>>>> and Canvas where the canvas just performs a few
>>>>>>>>>>>>>>>> draw operations, i.e. fills the screen with a
>>>>>>>>>>>>>>>> color and then draws and fills 2-3 circles and I
>>>>>>>>>>>>>>>> have already observed that each drawing operation
>>>>>>>>>>>>>>>> I add, results in
>>>>>>>>>>>>>>>> significant CPU load (e.g. when I draw < 10 arcs
>>>>>>>>>>>>>>>> in addition to the circles, the CPU load goes up
>>>>>>>>>>>>>>>> to 30-40% on a Mac Book Pro for a Canvas size of
>>>>>>>>>>>>>>>> 600x600(!).
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Now I tested the animation in full screen mode
>>>>>>>>>>>>>>>> (only
>>>>>>>>>>>>>>>> with a few circles) and playback is unusable for a
>>>>>>>>>>>>>>>>  serious application (very choppy). Is 2D canvas
>>>>>>>>>>>>>>>> performance known to be very bad on Mac or am I
>>>>>>>>>>>>>>>> doing something wrong? Are there workarounds for
>>>>>>>>>>>>>>>> this?
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Robert
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Robert Krüger
>>>>>>>>>>>>>> Managing Partner
>>>>>>>>>>>>>> Lesspain GmbH & Co. KG
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> www.lesspain-software.com
>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> --
>>>>>>>>>>> Robert Krüger
>>>>>>>>>>> Managing Partner
>>>>>>>>>>> Lesspain GmbH & Co. KG
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> www.lesspain-software.com
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> 
>>>> 
>>> 
>>> 



More information about the openjfx-dev mailing list