Jim, > > I would think an effort to parallelize a single shape rasterization would > be much simpler in scope. Still outside the current JDK 9 timeline, but > definitely something that could help in future releases. I believe that > once we put the edges into the internal structures we could parallelize the > rasterization of individual scanlines and maybe break a tall shape up into > N horizontal bands for N threads. Other thoughts would be a thread to > generate the crossings and N threads to populate the alphas...? >
Multithreaded rendering is a complex task that should be discussed in another thread as it is totally out of my current scope. My 2 cents: there is two approach: - render shapes in parallel (but it requires the JavaFX pipeline to be parallelized = tricky as caching mask, gpu need single thread communication ...) - render shape with several threads (as you proposed) but the scanline algorithm requires the previous scanline information like previous edges (so it becomes tricky to make it efficient) and this will only speed up large shapes (point clouds will remain slow !) Anyway the major issue concerns latency ie how to spread the workload on several threads when the scene contains shapes with various sizes or complexity (edge count): the latency corresponds to the slowest thread to complete its rendering task. => adaptive algorithm to make a sort of load balancing (work stealing approach) or small tasks (average same cpu cost). PS: I have some experience on parallelization, but please let's postpone this discussion or let's do it in another thread. Laurent