← Back to team overview

kicad-developers team mailing list archive

Re: Zone filling & display speed improvements

 

On 12/4/2017 10:48 PM, Henner Zeller wrote:
> On 4 December 2017 at 16:41, Tomasz Wlostowski
> <tomasz.wlostowski@xxxxxxx> wrote:
>> On 04/12/17 15:43, Henner Zeller wrote:
>>> On 4 December 2017 at 06:31, Tomasz Wlostowski
>>> <tomasz.wlostowski@xxxxxxx> wrote:
>>>> On 04/12/17 02:05, Henner Zeller wrote:
>>>>> On 2 December 2017 at 10:11, Henner Zeller <h.zeller@xxxxxxx> wrote:
>>>>>> On 1 December 2017 at 08:12, Tomasz Wlostowski
>>>>>> <tomasz.wlostowski@xxxxxxx> wrote:
>>>>>>> On 29/11/17 16:10, jp charras wrote:
>>>>>>>> I am using a few board in Kicad demos: interf_u, video, pic_programmer.
>>>>>>>>
>>>>>>>> Also, filled areas are no shown in OpenGL, but are shown in Cairo canvas.
>>>>>>>
>>>>>>> Hi all,
>>>>>>>
>>>>>>> The branch [1] contains a set of improvements in the zone filling
>>>>>>> algorithm. It's several times faster than in the current master branch.
>>>>>>>
>>>>>>> I'd like to merge it soon and move on to fixing P&S issues pending for
>>>>>>> the V5 - I'll greatly appreciate testing and feedback!
>>>>>>
>>>>>> Hi Tom,
>>>>>>
>>>>>> I'll compile your branch hopefully later this weekend for testing.
>>>>>> If you need another board for testing, I am currently having a board
>>>>>> that takes annoying several seconds to fill the zones in head KiCad,
>>>>>> which hence might be interesting test case:
>>>>
>>>> Hi Henner,
>>>>
>>>> What OS did you build for?
>>>
>>> This was on Debian testing on a x86_64 machine.
>>> g++ 7.2.0, Cairo: 1.15.8, boost 1.62.0
>>>
>>> -h
>>
>> Hi guys,
>>
>> Now it should work fine - the filling algorithm was not thread safe and
>> apparently wxProgressDialog can't be invoked from non-main thread.
>>
>> Check out the updated branch.
> 
> Thanks Tom!
> 
> Nice, the [tom-faster-zones-dec01] branch works well and very fast. I
> have not seen any crashes anymore.
> 
> There is a leftover method mentioned in pcbnew/class_zone.h:
>   void RemoveInsulatedCopperIslands()
> .. which is not used/implemented so should be removed from the header.
> 
> One thing I noticed: since it is sooo fast now, the progress-popup is
> actually quite annoying as it just briefly blinks up and vanishes
> again (at least for the board I was testing it with). Maybe it should
> only show up if the operation is still ongoing after a second and less
> than 50% is done at that time ?
> 
> Another thought: if zone filling can be that fast, maybe we should
> only store zone outlines in the *.kicad_pcb file, not the
> (filled_polygon ...) that are now also stored. It is cheap to just
> recreate them when loading the file.> Backround: This can save a lot of disk space as the filled polygons
> tend to create a lot of points and tend to completely change with tiny
> changes to other elements on the board, such as a moved via. This
> means that version control has to store huge changes every time and it
> is hard to see what actual changes are happening just looking at the
> diff (I like to inspect diffs before checking something in, and this
> makes it hard. Also it makes it hard to git merge kicad-pcbs).
> Downside is, that everyone loading a file has to pay the extra cost to
> create the zones (e.g. gerber generation). Maybe it could be a
> heuristic to not store the filled polygons if recreating it takes less
> than a second or so.

I'm opposed to this idea.  What would happen the next time the zone
filling algorithm is changed?  You would most likely produce different
zone filling which would effectively result in a different board.  This
a huge no-no in production environments where once a board is released,
the expectation is that output plots do not change.  Changes in the
polygon generation could result in boards that worked fine with the
previous filling algorithm but not with the new algorithm.  Refilling
zones on board load is just asking for trouble.

> 
> Cheers,
>   Henner.
> 
>>
>> Thanks!
>> Tom
>>
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
> 


References