← Back to team overview

kicad-developers team mailing list archive

Re: [PATCH] Option to subtract soldermask from silkscreen in gerber output


On 12/12/2010 01:57 PM, Lorenzo Marcantonio wrote:
> On Sun, 12 Dec 2010, Dick Hollenbeck wrote:
>> The problem with ORing the colors is that as you get more layers, eventually the
>> intersections all turn white, no?
>> (Ok, on a normal board, we don't have so many mutliple gerber layer intersections,
>> true.  But if it can go wrong it eventually will.)
> A couple of supply layers and two signal parallel or crossing is actually pretty
> normal (in fact some stackups uses power layers to decouple parallel
> running traces on different layers).
> I think it will happen pretty soon:D
>> Let's assume the screen memory is slower than internal memory, this could be the
>> current bottleneck.  Plus I am seeing flicker with only two layers, let alone a full
>> stack of gerber layers.  This tends to support the theory.
> Blitting is slow, expecially under X.
>> I will spend some time and try buffering the screen memory in its own additional
>> wxMemoryDC until the very end.
> Another option would be to accumulate the image in a memory bitmap and
> then blit it. It all depends on the wxMemoryDC performance.

Well that is not another option than the one I suggested, please excuse my bad English.

I coded it up and it is faster, and the bottleneck has been located.  The blitting is
slow only when screen memory is in the picture (pardon the pun).  The one and only
final blit is now the bottleneck, so there is no point in persuing the path of
eliminating the monochromatic bitmap.

Often screen memory is of a different format than the internal RAM resident bitmaps,
and this can be a CPU intensive thing, to convert each pixel.

The last remaining opportunity to reduce the time spent doing the last screen blit is
to optimize on the dirty area alone.  If we could reduce the size of the dirty area,
this would *dramatically* improve speed.  I think this is only possible though on the
layer show/hide clicks, where a layer is coming or going.  On the resizing operations,
especially when grid is on screen, the entire screen needs to be redrawn, mandating a
full sized blit.