On Fri, 10 Jan 2020 00:34:18 GMT, Kevin Rushforth <k...@openjdk.org> wrote:

>>> This will need a fair bit of testing to ensure that there are no 
>>> regressions either in functionality or (especially) performance, in 
>>> addition to tests for the new functionality.
>> 
>> Which tests for the new functionality should I write? Up to the shader 
>> itself it's mostly just passing on variables, and the API is standard 
>> `DoubleProperty`s. I can test the dirty bits / redraw logic.
>> 
>>> On the performance aspect, the inner loop of the lighting calculation now 
>>> has an additional if test for the max range and additional arithmetic 
>>> calculations for the attenuation. What we will need is a test program that 
>>> we can run on Mac and Windows to measure the performance of rendering in a 
>>> fill-rate-limited case. Ideally, we would not pay much of a performance hit 
>>> in the default case where `ca == 1, la == 0, qa == 0`, but we first need to 
>>> be able to measure the drop in performance before we can say whether it is 
>>> acceptable.
>> 
>> Can you point me to a similar performance test? I didn't see a way to easily 
>> measure FPS.
>> I don't know how to avoid the `if` test for the `maxRange`, I'm open to 
>> suggestions. The only thing I can think of is if `maxRange` is infinite (the 
>> default), we will swap the shader for one that doesn't make that check. 
>> However, swapping shaders also costs performance.
> 
> We have a few performance tests in apps/performance, but I don't know how up 
> to date they are. They might give you a starting point on how to measure FPS, 
> but really the harder part is going to be coming up with a workload -- a 
> scene with a number of Shape3Ds with large triangles (so that they are 
> fill-rate limited) and 1-3 lights, etc -- that you can use to measure 
> rendering performance without measuring overhead. Typically you want a scene 
> that is rendering continuously in the < 30 fps range, and more like 10 fps to 
> minimize the overhead even more.
> 
> Before we figure out whether we need to double the number of shaders (which 
> was one of the ideas that I had as well), we need to know how much of a 
> problem it is. Is it < 2% performance drop on typical cases on a variety of 
> machines or it is a 25% drop (or more likely somewhere in between). If the 
> perf drop is negligible, then it isn't worth doubling the shaders. If it is 
> significant, then we probably need to.
> 
> If we do need to double the shaders, I wouldn't do it based on the maxRange 
> being infinite, rather I would do it based on whether attenuation is being 
> used. That way the existing shaders would be unchanged, while the new shader 
> would deal with both attenuation and the maxRange test.
> 
> Hopefully, there won't be enough of a perf hit to require doubling the 
> shaders, but we need to be able to measure it.
> 
> For functional testing, in addition to the simple API tests, we want to make 
> sure that the basic rendering is working with and without attenuation. Some 
> sort of visual test where you verify that attenuation is / isn't happening as 
> well as testing the cutoff. I wouldn't get too fancy with these...just a 
> sanity test.

Looks like the `jcheck` bot removed the `rfr` label because the CSR isn't 
complete. An incomplete CSR should be treated the same way as an insufficient 
number of reviewers. I filed 
[SKARA-262](https://bugs.openjdk.java.net/browse/SKARA-262) to track this.

-------------

PR: https://git.openjdk.java.net/jfx/pull/43

Reply via email to