← Back to team overview

kicad-developers team mailing list archive

Re: Bitmap fonts

 

Le 14/04/2016 11:33, Maciej Sumiński a écrit :
> Hi,
> 
> As recently Jean-Pierre has reported he had been running out of memory
> with complex boards, I decided to take another step to reduce memory
> footprint of OpenGL canvas.
> 
> Currently, the most expensive thing to draw is stroked text, as there
> are lots of labels on tracks and pads. To reduce the drawing cost (and
> memory requirements), texts that are not targeted to Gerber files (i.e.
> pad & track labels) might be displayed using bitmap fonts. This way, a
> single letter cost is reduced from tens of triangles to just two.
> 
> Another gain is we can select any font for this purpose and easily
> change it. I picked one for testing, but I think we have to decide
> together which one shall be used. Bitmap fonts are also antialiased (I
> am sorry Lorenzo), so they might be a bit easier on eyes.
> 
> As texts now do not occupy as much memory space as they used to, they
> might be stored in the video card memory. Thanks to that, they might be
> displayed on selected items as well (in the past selected items had
> labels removed). This should also reduce per-frame traffic and make
> rendering process smoother.
> 
> I did my best to use the same character set as is available with the
> original stroke font, but I wonder if it is really necessary. It seems
> that net/pad names are limited to latin characters, so maybe we should
> limit the character set. Thoughts?
> 
> At the moment bitmap fonts are only available in OpenGL canvas, as I
> believe they offer the greatest performance boost there. I am not sure
> if Cairo can really benefit from such solution, but it might be tested
> as well.
> 
> Before I push the changes to the master repository, I will be grateful
> for some testing [1] and feedback. There are also two screenshots [2, 3]
> to demonstrate the difference.
> 
> Regards,
> Orson
> 
> 1. https://github.com/orsonmmz/kicad-source-mirror/tree/bitmap_fonts
> 2. https://orson.net.pl/pub/original_font.png
> 3. https://orson.net.pl/pub/bitmap_font.png

Thanks, Orson.

I just tested it
(note: on msys2, W7 32 bits I had a GL_INVALID_FRAMEBUFFER_OPERATION undefined compil error)

After testing a complex 16 layers board, the current version allocates up to 128 Mbytes, and the
bitmaps font 256 Mbytes, unfortunately more ùemory.

(using bool CACHED_CONTAINER::resizeContainer( unsigned int aNewSize ) to show allocations)

No max allocation change if I disable/enable the display of net names in Pcbnew preferences.

-- 
Jean-Pierre CHARRAS


Follow ups

References